android应用开发一个主要内容就是界面开发。随着移动设备的不断普及,android应用几乎无处不在,设计到各个领域。对于用户来说,除了看重一个应用的功能外,图形界面也是最关注的对象。如果一个应用没有提供友好的图形界面,那么将很难吸引最终的用户;相反,如果为应用程序提供一个友好的图形界面(GUI),那么用户可以轻松的通过手指去点击各种事件爱你,来操作这个应用程序,用户就会感觉到”很爽“。就像windows系统一样,最初能很快吸引大量用户,就是因为它有丰富的图形界面,才几乎独占整个市场。可想而知,友好的图形界面是多么的重要。
对于程序员来说,除了要开发出友好的图形界面,还好去思考用什么方式去实现比较好。android提供了大量功能丰富的UI组件,这些组件功能都具有一定的规律且具有很多相似之处,程序开发人员只需要掌握这些规律,就可以实现出漂亮、友好的图形界面了。在接下的一段时间里,将会陆续介绍。今天我们就先介绍一下界面编程与视图组件之间的联系吧!
1、视图组件与容器组件
在一个activity文件中,我们会看到很多包:
[java] view plaincopy 
- import android.widget.EditText;
- import android.widget.ImageButton;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.PopupWindow;
- import android.widget.RadioButton;
- import android.widget.RadioGroup;
- import android.widget.RelativeLayout;
- import android.widget.SeekBar;
- import android.widget.CompoundButton.OnCheckedChangeListener;
- import android.widget.SeekBar.OnSeekBarChangeListener;
- import android.widget.TextView;
- import android.widget.Toast;
- import android.widget.ViewSwitcher;
android应用的绝大多数UI组件都是放在android.widget包中以及其子包中、android.view包中以及其子包中。值得注意的是,android中所有的组件都是继承了View类。View类是一个非常重要的类,其还有一个子类ViewGroup,但是ViewGoup类经常作为其他组件的容器使用。
还有一点值得说明的就是View与ViewGoup类之间的关系,View类包含ViewGoup类,同时ViewGoup类中也包含View类: 那么在android项目中我们如何去实现界面开发呢?一般情况下,我们可以采用两种方式来实现: (1)、在XML布局文件中通过XML属性进行控制,一般推荐使用这种方式。 (2)、在Java程序代码中通过调用方法进行控制。 无论是哪一种实现方式,其实他们的本质都是一样的。在XML文件中实现UI组件,我们要是添加UI组件相应的XML属性;在java代码中实现UI组件,我们通过相应的属性方式来控制组件的属性,也就是说,其实每一个UI组件的XML属性都会对应一个方法。UI组件的属性包括View类常用的XML属性及相关方法和ViewGoup类中常用的XML方法。 对View类来说,他们是所有UI组件的基类,因此它包含的XML属性都会对应一个方法。常用的有: XML属性 | 相关方法 | 说明 | android:alpha | setAlpha(float) | 设置组件的透明度 | android:background | setBackGroundResource(int) | 设置组建的背景颜色 | android:id | setId(int) | 设置组件的唯一标识 | android:keepScreenOn | setKeepSCreenOn(int) | 设置该组件是否强制手机屏幕一直打开 | android:visibility | setVilibility(int) | 设置组件是否可见 |
ViewGroup类继承了View类,因此也是可以当成一个普通的View类来使用的。但是,ViewGroup类主要是当成容器类来使用。又由于ViewGroup类是一个抽象类,因此在使用中,通常使用它的一些子类来作为容器,例如各种布局管理器。ViewGroup容器控制其子组件的分布依次是Viewgroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类。这两个内部类中都提供了一些XML属性,ViewGroup容器中的子组件可以指定这些XML属性。
Viewgroup.LayoutParams支持两个XML属性:
XML属性 | 说明 | | android:layout_height | 指定该子组件布局的高度 | | android:layout_width | 指定该子组件布局的宽度 | 在XML布局文件中这样使用:
[html] view plaincopy
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
android:layout_height、android:layout_width两个属性的值有三种:
(1)、fill_parent:指定子组件的高度、宽度和父容器的高度、宽度相同(实际上还要减去填充的空白距离)。
(2)、match_parent:该属性和fill_parent完全相同,但是在android2.2版本以后推荐使用这个。
(3)、wrap_parent:指定组件的大小恰好能包裹它里面的内容。
另外ViewGroup.MarginLayoutParams支持四个XML属性:
| XML属性 | 相关方法 | 说明 | | android:layout_marginBottom | setMargins(int,int,int,int) | 指定子组件下边的页边距 | | android:layout_marginLeft | setMargins(int,int,int,int) | 指定子组件左边的页边距 | | android:layout_marginRight | setMargins(int,int,int,int) | 指定子组件右边的页边距 | | android:layout_marginTop | setMargins(int,int,int,int) | 指定子组件上边的页边距 |
在XML布局文件中这样使用: [html] view plaincopy 
- android:layout_marginTop="10dp"
- android:layout_marginLeft="10dp"
- android:layout_marginRight="10dp"
- android:layout_marginBottom="10dp"
当然了组件的属性远不止这些,还有很多,以上列举的只是常用的几个而已!
来自圈子: Demo俱乐部 |