您的位置:首页 > 移动开发 > Android开发

【Android】【笔记】《Android 入门经典》part 3 安卓开发组件

2016-01-30 23:28 399 查看
本文为个人读书笔记,大部分为书中内容摘要。仅供记录和分享学习中遇到的需要留意的问题,如有相关版权问题请及时通知作者。

Android的UI界面

     Android中,所有的UI界面都是由View类和Viewgroup类及其子类组合而成的。View类是所有UI组件的基类,它是Android平台中用户界面体现的基础单位拟,提供了UI对象的完整实现;Viewgroup类是容纳这些UI组件的容器,提供了布局架构,ViewGroup本身也包含View类的子类。
     View类是一个数据体,它的数据体,它的属性存储了用于屏幕上一块矩形区域的布局参数及内容,并负责它所辖的这个矩形区域之中所有测量、布局、焦点转换、卷洞以及按键/触摸手势的处理。最为一个用户界面对象,View同时也担任着用户交互关键点以及交互事件接受者的对象。

使用XML布局文件控制UI界面
     两个关键步骤:
     1、在Android程序的res/layout目录下编写XML布局文件。名字符合Java命名规则。R.java会自动收录该布局。
     2、在Activity中使用setContentView(R.java.布局文件名)显示XML文件中布局的内容

在Java代码中控制UI界面--不推荐
     在Android中,支持Java Swing那样完全通过代码控制UI界面,也就是所有的UI组件都通过new关键字创建出来,然后将这些UI组件添加到布局管理器中,实现用户界面。
     在代码中控制UI界面3个关键步骤:
     1、创建布局管理器,设置布局管理器的属性
     2、创建具体的组件,设置组件的布局和属性
     3、将创建的具体组件添加到布局管理器中

使用XML和Java代码混合控制UI界面
     把变化小、行为比较固定的组件放在XML布局文件中,把变化较多、行为控制比较复杂的组件交给Java代码来管理。

开发自定义的View
     3个步骤:
     1、创建一个集成android.view.View类的View类,重写构造方法
     2、根据需要重写相应的方法。
     3、在项目的活动中,创建并实例化自定义View类,并将其添加到布局管理器中即可。

文本类组件
TextView文本框
     用于在屏幕上显示文本,可以显示单行、多行、带图像的文本。
     两种添加方式:
     1、XML布局文件中使用<TextView>添加,推荐
     2、new关键字创建
TextView支持的XML属性
XML属性描述
android:autoLink是否将指定格式的文本转换为可单击的超链接形式
属性值:none、web、email、phone、map、all
android:drawableBottom
android:drawableLeft
android:drawableRight
android:drawableTop
在文本框内文本的底端、左侧、右侧、顶端绘制指定图像
图像可以是放在res/drawable下的图片,通过@drawable/文件名(不带扩展名)设置
android:gravity设置文本对齐方式,属性:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical、clip_horizontal。
可同时指定多个属性,用“|”分隔。
android:hint文本框为空时默认的提示文本
android:inputType用于指定文本框显示内容的文本类型,属性:textPassword、textEmailAddress、phone、date,可多个,“|”分隔。
android:singleLine是否单行模式。
android:text显示的温恩内容,可在该属性指定,也可以通过string.xml文件中定义文本常量的方式指定
android:textColor设置文本颜色,属性值可以是#rgb、#argb、#rrggbb或#aarrggbb格式颜色值
android:textSize文本字体大小,单位px/pt/sp/in等
android:width
android:height
文本宽和高,单位px
EditText编辑框
     在屏幕上显示文本输入框
     两种添加方式:
     1、XML布局文件,使用<EditText / >,推荐
     2、在Java文件中,new创建
     EditText是TextView类的子类,所以TextView的XML属性同样适用于EditText。
     需要注意android:inputType属性,在EditText中,通过指定该属性可以帮助输入法显示合适的类型。

AutoCompleteTextView自动提示组件
     两种添加方式:
     1、XML中,<AutoCompleteTextView>,推荐
     2、Java文件中,new创建
     AutoCompleteTextView继承自EditText,支持EditText的属性。
AutoCompleteTextView支持的其他XML属性
XML属性描述
android:completionHint为弹出的下拉菜单指定提示标题
android:completionThreshold指定用户至少输入几个字符显示提示
android:dropDownHeight指定下拉菜单的高度
android:dropDownHorizontalOffset指定下拉菜单与文本之间的水平偏移,默认与文本框左对齐
android:dropDownVerticalOffset指定下拉菜单与文本之间的垂直偏移,默认紧跟文本
android:dropDownWidth指定下拉菜单宽度
android:popupBackground指定下拉菜单背景
按钮类组件

Button按钮
     两种添加方式:
     1、XML布局文件<Button>,推荐
     2、Java文件中new

     按钮添加后,需要为按钮添加单击事件监听。Android提供了两种添加方法:
     1、在Java代码中完成,例如在Activity的onCreate()方法中完成
          import adnroid.view.View.OnClickListener;
          import android.widget.Button;
          Button login=(Button)findViewById(R.id.login);
          login.setOnClickListener(new OnClickListener(){
               @override
               public void onClick(View v){
               //要执行的动作
               }
          });
     2、在Activity中编写一个包含View类型参数的方法,把要触发的动作代码放在该方法中。在布局文件中,通过android:onClick属性指定对应的方法名实现。
          Activity:
          public void myClick(View view){
               //要执行的动作
          }
          Layout:
          android:onClick="myClick"

ImageButton图片按钮
     与Button使用方法相同,由ImageButton定义,可以指定android:src属性,设置要显示的图片。
     同样需要添加单击监听事件。

ToggleButton特殊按钮
     两种添加方式:
     1、XML文件中<ToggleButton>,推荐
     2、Java文件中,new
     ToggleButton继承Button,支持Button的属性
ToggleButton支持的其他属性
XML属性描述
android:textOn设置控件在选中时显示的文本
android:textOff设置控件在未选中时显示的文本
     在Java源文件中可以使用ToggleButton对象的getTextOn方法获取ToggleButton组件选中时显示的文本,使用ToggleButton对象的getTextOff方法获取ToggleButton组件未选中是显示的文本,使用ToggleButton对象的getText方法获取ToggleButton获取当前显示的文本。

选择类组件
     单选按钮和复选按钮都继承普通按钮,都可以直接使用普通按钮支持的各种属性和方法。与普通按钮不同之处在于提供了可选中功能。

RadioButton单选钮
     默认情况显示一个圆形图标。
     两种添加方式:
     1、XML布局文件中,<RadioButton>
     2、Java文件中,new
     android:checked指定选中状态
     通常情况下,RadioButton组件需要与RadioGroup组件一起使用,组成一个单选按钮组。
     <RadioGroup
          android:id=""
          android:orientation=""
          android:layout_width=""
          android:layout_heigth="">
          多个RadioButton组件
     </RadioGroup>

     在屏幕中提阿尼啊单选按钮组后,还需要获取单选按钮组中选中项的值。在获取单选按钮组中选中项的值是,存在两种情况:
     1、改变单选按钮组的值时获取
          首先获取单选按钮组,然后为其添加OnCheckedChangeListener监听事件,在其onCheckedChanged()方法中根据参数checkedId获取被选中的单选按钮,然后通过其getText()方法中根据参数checkedId获取被选中的单选按钮,然后通过其getText()方法获取该单选按钮对应的值。
     RadioGroup sex=(RadioGroup)findViewById(R.id.radioGroup1);
     sex.setOnCheckedChangeListener(new OnCheckedChangeListener(){
          @Override
          public void onCheckedChanged(RadioGroup group,int checkedId){
               RadioButton r=(RadioButton)findViewById(checkedId);
               r.getText();
          }
     });  
     2、单击其他按钮时获取
           首先需要在该按钮的单击事件监听的onClick()方法中,通过for循环语句遍历当前单选按钮组,并根据被遍历到的单选按钮的isChecked()方法判断该按钮是否被选中,如果被选中,通过单选按钮的getText()方法获取对应的值。
     final RadioGroup sex=(RadioGroup)findViewById(R.id.radioGroup);
     Button button=(Button)findViewById(R.id.button1);
     button.setOnClickListener(new OnClickListener(){
          @Override
          public void onClick(View v){
               for(int i=0;i<sex.getChildCount();i++){
                    RadioButton r=(RadioButton)sex.getChildAt(i);
                    if(r.isChecked()){
                         r.getText();
                         break;
                    }
               }
          }
     }); 

CheckBox复选框组件
     CheckBox是Button的子类,可以直接使用Button支持的各种属性。
     两种添加方式:
     1、XML布局文件,<CheckBox>,推荐
     2、Java文件中,new
     复选框可以选中多项,为了确定用户是否选择了某一项,还需要为每一个选项添加setOnCheckedChangeListener事件监听。
     final CheckBox like1=(CheckBox)findViewById(R.id.like1);
     like1.setOnCheckedChangeListener(new OnCheckedChangeListener(){
         @Override
          public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){
              if(like1.isChecked()){
                    like1.getText();
               } 
          } 
     });

列表类组件

ListView列表视图
     以垂直列表的形式列出需要显示的列表项。
     两种添加方式:
     1、直接使用ListView组件创建
     XML布局文件中<ListView>
ListView支持的常用XML属性
XML属性描述
android:divider为列表视图设置分隔条,可以使用颜色或drawable资源
android:dividerHeight设置分隔条的高度
android:entries通过数组资源为ListView指定列表项
android:footerDividersEnabled设置是否在footer View之前绘制分隔条,默认true。使用该属性时,需要通过ListView组件提供的addFooterView()方法为ListView设置footer View
android:headerDividersEnabled设置是否在header View之前绘制分隔条,默true。使用该属性时,需要通过ListView组件提供的addHeaderView()方法为ListView设置header View
     设置选项内容:
     如果ListView在布局文件中没有为其指定要显示的列表项,也可以通过为其设置Adapter来指定需要显示的列表项。通过Adapter来为ListView指定要显示的列表项,可以分为两个步骤:
    ( 1)创建Adapter对象。对于纯文字的列表项,通常使用ArrayAdapter对象。创建ArrayAdapter对象通常可以有两种情况:
     ①通过数组资源文件创建
          通过数组资源文件创建适配器,需要使用ArrayAdapter类的createFromResource()方法
          ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(
               this,R.array.ctype,android.R.layout.simple_list_item_checked);
     ②在Java文件中使用字符串数组创建
          在Java文件中使用字符数组创建适配器,首先需要创建一个一维的字符串数组,用于保存要显示的列表项,然后使用ArrayAdapter类的构造方法ArrayAdapter(Context context,int TextViewResourceId,T [ ] objects)创建一个ArrayAdapter类的对象
          String[ ] ctype=new String [ ]{ “”,“”,“”};
          ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,ctype);

      在创建ArrayAdapter对象时,需要指定列表项的外观形式:
          simple_list_item_1:每个列表项都是一个普通文本
          simple_list_item_2:每个列表项都是一个普通文本(字体略大)
          simple_list_item_checked:每个列表项都有一个已勾选的列表项
          simple_list_item_multiple_choice:每个列表项都是带多选框的文本
          simple_list_item_single_choice:每个列表项都是带单选按钮的文本
     (2)将创建的适配器对象与ListView相关联,可以通过ListView对象的setAdapter()方法实现
          listView.setAdapter(adapter);【5.14】

     2、Activity继承ListActivity实现
     如果程序的窗口仅仅需要显示一个列表,则可以直接让Activity继承ListActivity来实现。继承了ListActivity的类中无须调用setContentView()方法来显示页面,可以直接为其设置适配器,从而显示一个列表。【5.15】

Spinner列表选择框
     相当于在网页中常见的下拉列表框,通常用于提供一系列可选择的列表项,供用户进行选择。
     两种添加方法:
     1、XML布局文件<Spinner>,推荐
               <spinner
                    android:promt="@string/info"
                    android:entries="array/数组名称“/>
          android:entries为可选属性,用于指定列表项,如果在布局文件中不指定该属性,可以在Java代码中通过为其指定适配器的方式指定;android:promt也是可选属性,指定列表选择框的标题         
     2、Java文件中,new

     通常情况下,如果列表选择框中要显示的列表项是可知的,那么我们会将其保存在数组资源文件中,然后通过数组资源来为列表选择框指定列表项。这样就可以在不编写Java代码的情况下实现一个列表选择框。【5.16】
     在布局文件中添加一个<spinner>组件,并为其指定android:entries
     在res/value目录的strings.xml资源文件中添加之前使用的数组
     在屏幕上添加列表选择框后,可以使用列表选择框的getSelectItem()方法获取列表选择框的选中值。
     添加列表选择框后,如果需要在用户选择不同的列表项后,执行相应的处理,则可以为该列表选择框添加OnItemSelectedListener时间监听。

     在使用列表选择框时,如果不在布局文件中直接为其指定要显示的列表框,也可以通过为其指定适配器的方式指定。分为三个步骤:
     1、创建一个适配器对象,通常使用ArrayAdapter类。两种情况:通过数组资源文件创建,在Java文件中使用字符串数组创建。
     2、为适配器设置列表框下拉时的选项样式
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     3、将适配器与选择列表框关联
     spinner.setAdapter(adapter);

图像类组件

ImageView图像视图
     用于在屏幕中显示任何的Drawable对象,通常用来显示图片。
     两种添加方式:
     1、XML布局文件,<ImageView>标记,推荐
     2、Java文件中,new
     
     使用ImageView显示图像时,通常将图片放在res/drawable目录中
ImageView支持的XML属性
XML属性描述
android:adjustViewBounds设置ImageView是否调整自己的边界来保持所显示图片的长宽比
android:maxHeight
android:maxWidth
ImageView的最大高度和宽度,需要设置android:adjustViewBounds属性为true
android:scaleType设置所显示的图片如何缩放或移动以适应ImageView的大小。
matrix,使用matrix方式缩放;
fixXY,对图片横向、纵向独立缩放、使图片完全适应ImageView,纵横比可能改变;
fitStart,保持纵横比缩放图片,直到该图片能完全显示,位于左上
fitCenter,保持纵横比缩放,直到该图片能完全显示,位于中央
fitEnd,保持纵横比缩放,直到图片能完全显示,位于右下角
center,放在中间,不进行缩放
centerCrop,保持纵横比缩放,使图片完全覆盖ImageView
centerInside,保持纵横比,使ImageView能完全显示该图片
android:src设置Drawable对象的id
android:tint为图片着色,可以是#rgb、#argb、#rrggbb、#aarrggbb颜色值
Gallery画廊视图组件
     按水平方式显示能容,可以直接拖动图片移动浏览。一般用来浏览图片,被选中的选项位于中间,可以相应时间显示信息。
     首先需要在屏幕上添加Gallery组件,通常在XML布局文件中使用<Gallery>标记添加
Gallery支持的XML属性
XML属性描述
android:animationDuration设置列表项切换时的动画持续时间
android:gravity设置对齐方式
android:spacing设置列表项之间的间距
android:unselectedAlpha设置没有选中的列表项的透明度
     使用Gallery视图,需要使用Adapter提供要显示的数据,通常使用BaseAdapter类为Gallery组件提供数据。步骤:
     1、在xml中添加Gallery组件
     2、在MainActivity中定义一个用于保存要显示图片ID的数组
     3、在主活动的的onCreate()方法中,获取在布局文件中添加的Gallery视图
          Gallery gallery=(Gallery)findViewById(R.id.gallery1);
     4、在res/values目录的strings.xml文件中定义一个styleable对象,用于组合多个属性。
     5、创建BaseAdapter类的对象,并重写其中的getView()、getItemID()、getItem()和getCount()方法。
     6、将步骤5创建的适配器与Gallery关联,并且让中间的图片选中,为了在用户单击某张图片时显示对应位置,需要为Gallery添加单击事件监听

ImageSwitcher图像切换器
     功能类似windows下的图片查看器。
     使用ImageSwitch而时,必须实现ViewSwitcher.ViewFactory接口,并通过makeView()方法来创建用于显示图片的ImageView对象。makeView()方法返回一个显示图片的ImageView。setImageResource()方法,指定要在ImageSwitcher中显示的图片资源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android UI View 组件