Android应用程序UI设计(1)_布局
2012-09-01 20:31
183 查看
1.Android UI元素简介
Android使用xml文件进行布局。在布局文件中体现了一些UI元素。
1.Android.view.View(视图)
View是最基础的一个类,几乎所有的高级UI组件都是继承View类,如TextView,EditText,Button...。
一个视图(View)在屏幕上占据了一个矩形区域,它负责渲染这块矩形区域,也可以处理这块区域发生的事件,并且可以设置这块区域是否可见,是否可以获取焦点等。
2.Adroid.view.ViewGroup(视图容器)
View的容器,负责对这些view布局,并且允许嵌套。这是一个抽象类。他的实现类有:
a)LinearLayout进行水平或垂直布局。将元素进行线性的布局。
b)RelativeLayout进行相对布局。根据元素的相对位置布局。注意的是,出于性能考虑,位置只能计算一次,所以,如果控件A依 赖B ,那么B必须在A的前面。
c)FrameLayout 窗体布局,所有元素都防止在屏幕左上方,如果有多个元素,将重叠。
3.LayoutParameter(布局参数)
决定View的显示属性,比如长度、宽度、位置。
2.控件的布局
案例:
使用linearLayout布局
布局文件为:
使用FrameLayout布局
布局文件为:
linearLayout和RelativeLayout并用(视图容器的嵌套)
布局文件和Activity类代码
Left.xml
Right.xml
Activity代码
relativeLayout
布局文件为:
TableLayout
Android使用xml文件进行布局。在布局文件中体现了一些UI元素。
1.Android.view.View(视图)
View是最基础的一个类,几乎所有的高级UI组件都是继承View类,如TextView,EditText,Button...。
一个视图(View)在屏幕上占据了一个矩形区域,它负责渲染这块矩形区域,也可以处理这块区域发生的事件,并且可以设置这块区域是否可见,是否可以获取焦点等。
2.Adroid.view.ViewGroup(视图容器)
View的容器,负责对这些view布局,并且允许嵌套。这是一个抽象类。他的实现类有:
a)LinearLayout进行水平或垂直布局。将元素进行线性的布局。
b)RelativeLayout进行相对布局。根据元素的相对位置布局。注意的是,出于性能考虑,位置只能计算一次,所以,如果控件A依 赖B ,那么B必须在A的前面。
c)FrameLayout 窗体布局,所有元素都防止在屏幕左上方,如果有多个元素,将重叠。
3.LayoutParameter(布局参数)
决定View的显示属性,比如长度、宽度、位置。
2.控件的布局
案例:
使用linearLayout布局
布局文件为:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/bt_1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/frameLayout" /> <Button android:id="@+id/bt_2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/relativeLayout" /> <Button android:id="@+id/bt_3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/linearLayoutANDrelativeLayout" /> <Button android:id="@+id/bt_4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/tableLayout" /> </LinearLayout>
使用FrameLayout布局
布局文件为:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/photo" android:src="@drawable/meinv" android:contentDescription="@string/meinv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout>
linearLayout和RelativeLayout并用(视图容器的嵌套)
布局文件和Activity类代码
Left.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" > <TextView android:id="@+id/tv_left_1" android:text="@string/left_1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_left_2" android:text="@string/left_2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/tv_left_1" /> </RelativeLayout>
Right.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" > <TextView android:id="@+id/tv_right_1" android:text="@string/right_1" android:layout_width="fill_parent" android:layout_height="50dip" /> <TextView android:id="@+id/tv_right_2" android:text="@string/right_2" android:layout_width="fill_parent" android:layout_height="50dip" android:layout_below="@id/tv_right_1" /> </RelativeLayout>
Activity代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //实例化一个线性视图容器对象 LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.HORIZONTAL); setContentView(layout); //实例化一个inflater对象,这个对象可以把xml解析成View LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); //使用inflater把xml布局文件解析称View RelativeLayout left = (RelativeLayout)inflater.inflate(R.layout.left, null); RelativeLayout right = (RelativeLayout)inflater.inflate(R.layout.right, null); //实例化一个布局参数对象 RelativeLayout.LayoutParams layoutParameter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); //向视图容器中添加视图(在此处是视图容器,属于嵌套) //可见,除了在布局文件中对activity布局之外,也完全可以在activity类中布局 layout.addView(left,100,100); layout.addView(right,layoutParameter); }
relativeLayout
布局文件为:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#888888" android:padding="10dip" > <TextView android:id="@+id/tv_input_name" android:text="@string/input_name" android:layout_height="wrap_content" android:layout_width="wrap_content" /> <EditText android:id="@+id/et_name" android:background="@android:drawable/editbox_background" android:layout_height="wrap_content" android:layout_width="fill_parent" android:hint="@string/input" android:layout_below="@id/tv_input_name" /> <Button android:id="@+id/bt_input_name_cancel" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/cancel" android:layout_below="@id/et_name" android:layout_alignParentRight="true" android:layout_marginRight="10dip" /> <Button android:id="@+id/bt_input_name_ok" android:layout_below="@id/et_name" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/ok" android:layout_toLeftOf="@id/bt_input_name_cancel" android:layout_alignTop="@id/bt_input_name_cancel" android:layout_marginRight="10dip" /> </RelativeLayout>
TableLayout
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="1" > <TableRow > <TextView android:text="@string/name" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:hint="@string/input" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </TableRow> <TableRow > <TextView android:text="@string/password" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:hint="@string/input" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </TableRow> <TableRow > <Button android:text="@string/ok" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:text="@string/cancel" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </TableRow> </TableLayout>
相关文章推荐
- Android布局属性android:clipToPadding的UI设计妙用
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
- android应用程序第6课:控件布局初步
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
- Android布局属性android:clipToPadding的UI设计妙用
- 基于Android智能电视的应用程序的布局
- Android布局属性android:clipToPadding的UI设计妙用
- Android UI设计的三种常见布局(LinearLayout、RelativeLayout、FrameLayout)
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析
- Android中使用GridView进行应用程序UI布局的教程
- Android与iPhone应用程序界面布局对比
- AndroidUI设计之布局-详细解析布局实现
- 2014-10-27Android学习------布局处理(五)------ListView布局继续学习-----城市列表应用程序
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析(下)
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析(上)
- android应用程序优化之布局优化
- 2014-10-27Android学习------布局处理(六)------26个字母的布局列表的实现-----城市列表应用程序