Android平台上的各种控件_田勇.doc_第1页
Android平台上的各种控件_田勇.doc_第2页
Android平台上的各种控件_田勇.doc_第3页
Android平台上的各种控件_田勇.doc_第4页
Android平台上的各种控件_田勇.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

九、Android平台上的各种控件(View) Android的界面显示是基于控件的。通常是用View(包括ViewGroup)控件配上XML的样式来做的。1 概述Android控件体系分为三个类别:基本控件,容器,布局。这三类控件主要分布在两个包中:android.view提供抽象接口,android.widget提供系统内置的大部分控件。整个系统的控件都继承自android.view.View,而容器及布局类继承自android.view.ViewGroup。 基本控件主要包括ImageView、ProgressBar、CheckBox、TextView、EditText等。 容器这里的容器是指采用了特定的布局并且提供了行为的控件,包括GridView、ListView、Spinner、Gallery等。 布局虽然布局跟容器均继承自android.view.ViewGroup,但并不像SWT那样提供了面板+布局的结构,而是每种Layout就是一种特殊的面板,包括FrameLayout、LinearLayout、RelativeLayout、AbsoluteLayout、TableLayout等。2 基本控件 EditText 主要方法: setText() 设置文本内容 getText() 获取文本内容 setHint() 设置缺省显示内容 RadioGroup,RadioButton 主要方法: RadioButton的isChecked() 判断Radiobutton是否被选中 getCheckedRadioButtonId() 获取选中RadioButon的ID addView() 添加一个指定布局参数的子视图 clearCheck() 清除选择 setOnCheckedChangeListener() 设置选中状态改变情况的监听 setOnHierarchyChangeListener() 设置子视图增加或删除的监听 CheckBox 主要方法: isChecked() 判断是否被选中 setOnCheckedChangeListener 监视选中状态改变情况 ProgressBar 主要方法: setIndeterminate() 设置进度条是否自动运转 setProgressStyle() 设置显示风格 setProgress() 设置进度 setMax() 设置最大值 getProgress() 获取当前进度 SeekBar 主要方法: setMax() 设置最大值 getProgress() 获取当前值 setProgress() 设置值 监听器: setOnSeekBarChangeListener其下有三个方法 public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) /数值变更,arg1新值,是否Touch public void onStartTrackingTouch(SeekBar seekBar)/开始拖动 public void onStopTrackingTouch(SeekBar seekBar) /结束拖动 AutoCompleteTextView 主要方法: setAdapter() 设置数据adapter AutoCompleteTextView.setThreshold (int threshold) 设置输入多少个字符显示提示 MultiAutoCompleteTextView 允许输入多值,多值之间会自动地用指定的分隔符分开 MultiAutoCompleteTextView.CommaTokenizer() 以逗号分隔 setTokenizer设置提示Tokenizer,缺省的为new clearListSelection() 清除选项 getDropDownBackground() 获取自动完成下拉列表的背景 getDropDownWidth() 取得自动下拉列表当前的宽度 setDropDownWidth() 设置自动下拉列表当前的宽度 setDropDownVerticalOffset() 设置自动下拉列表的垂直偏移量 getDropDownVerticalOffset() 取得自动下拉列表所使用的垂直偏移量 DatePicker,TimePicker DatePicker init(int Year, int month, int day, new DatePicker.OnDateChangedListener() public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) 设置初始显示日期 ) getYear()、getMonth()、getDayOfMonth() 获取设置值 TimePicker setCurrentHour (Integer currentHour)、setCurrentMinuter (Integer currentHour) 设置值 setIs24HourView(Boolean) 设置是否为24小时制显示 setOnTimeChangedListener() 监听设置改变 获取系统当前时间和日期 Calendar.getInstance() 返回Calendar Calendar.get (int field) field 可以为Calendar.YEAR、Calendar.MONTH、 Calendar.DAY_OF_MONTH、Calendar.HOUR_OF_DAY、Calendar.MINUTE ImageView,ImageButton 主要方法: setImageResource() 设置显示图片 setAlpha() 设置Alpha invalidate() 强制更新 setScaleType(ScaleType st) 设置图片显示方式,st是一枚举 setAdjustViewBounds() 设置是否调整控件适应图片大小 setBackgroundResource() 设置背景 ImageSwitcher (显示一系列的图片,但当前只显示一张图片) 主要方法: setFactory(ViewSwitcher,ViewFactory factory) 设置要显示的数据 ViewFactory接口须实现方法public View makeView() 负责提供当前显示的视图(ImageView), 且View必须为新实例 setImageResource() 设置当前显示的图片 getCurrentView() 返回当前显示的视图 setInAnimation(Animation ani) 设置视图载入时的动画效果 AnimationUtils.loadAnimation(Context context, int id) 获取动画效果 setOutAnimation(Animation ani) 设置视图载出时的动画效果 TextView 主要方法: getCurrentHintTextColor() 取得当前的提示文本颜色 getCurrentTextColor() 取得当前正常文本的颜色 getText() 取得显示的文本 setTextColor() 设置文本颜色 TableRow 主要方法: getVirtualChildAt() 取得指定索引的视图 getVirtualChildCount() 取得子试图数3 容器 GridView (表格显示一系列图片) 主要方法: setAdapter(ListAdapter adapter) 显示数据。 adapter可以继承自BaseAdapter,该类 public View getView(int position, View convertView, ViewGroup parent) 返回当前选择的视图(ImageView)。 setSelection() 设置当前选中的视图 getSelectedView() 返回当前选中的视图 setNumColumns() 设置表格的列数 setColumnWidth() 设置表格列的宽度 ListView 主要方法: setAdapter(ListAdapter adapter) 显示数据 adapter可为new SimpleCursorAdapter/SimpleAdapter(Context context, int layout, Cursor c, String from, int to) layout 用来显示数据的模板 c 数据(可用ArrayList构造数据) from,to 用来显示对应列的空件id adapter.notifyDataSetChanged() 动态增删数据 setBackGroudRource() 设置背景色 getCheckItemIds() 返回选中项的ID的集合 getCheckedItemPosition() 返回当前选中项 getCheckedItemPositions() 返回list中选中项的集合 setSelection() 设置当前选中项 Spinner 显示数据 I 硬编码加载 通过setAdapter方法设置类型为ArrayAdapter (Context context, int textViewResId, String objects) textViewResId:显示内容的viewID,默认设置为R.layout.simple_spinner_item objects: 显示的内容 II 从资源文件中加载 ArrayAdapter.createFromResource(Context context, int textArrayResId, int textViewResId) textArrayResId是资源ID 返回ArrayAdapter 设置下拉列表的风格(可选)adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 监听选项选择变更事件 setOnItemSelectedListener() 设置监听 Spinner.OnItemSelectedListener类须实现以下两个方法: public void onItemSelected (AdapterView parent, View view, int position, long id) /view 选中项实例,position选择项在adapter中的位置 public void onNothingSelected(AdapterView arg0) 设置选中项 Spinner.setSelection(position) /索引从0开始 获取选中项 getSelectedItemPosition() getSelectedItem() /该值toString()则为选中内容的字符串 getSelectedItemId() getSelectedView() Gallery (显示一系列的图片,提供拖动等特效) 主要方法: setAdapter(SpinnerAdapter adapter) 设置数据适配器 数据适配器可以继承自BaseAdapter,该类public View getView(int position, View convertView, ViewGroup parent) 返回当前选择的视图(ImageView) setOnItemSelectedListener() 选项选中监听 setOnItemClickListener() 选项点击事件监听 setSpacing() 设置gallery中选项的间距 setSelection() 设置当前选中项 getSelectedItemPosition() 取得当前选中项4 布局 FrameLayoutFrameLayout是最简单的一个布局对象。它被定制为屏幕上的一个空白备用区域,之后可以在其中填充一个单一对象,比如,一张要发布的图片。所有的子元素将会固定在屏幕的左上角,不能为FrameLayout中的子元素指定位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部分或全部挡住(除非后一个子元素是透明的)。其中关键的是layout_gravity,负责控制控件的位置。 LinearLayoutLinearLayout以为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。 LinearLayout 还支持为单独的子元素指定weight。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素,默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。在一个水平排列的LinearLayout中,各项按他们的文本基线进行排列(第一列第一行的元素,即最上或最左,被设定为参考基线)。因此,在一个窗体中检索元素时,就不需要七上八下地读元素的文本了。我们可以在layout的XML中设置 android:baselineAligned = false,来关闭这个设置。主要属性: Orientation:指定控件的方向,horizontal(水平),vertical(垂直),在代码里可通过setOrientation()进行动态改变,值分别为HORIZONTAL、VERTICAL。 fill model:可分别使用android:layout_width和android:layout_height来指定宽度和高度。在指定宽度和高度时,可指定尺寸,如125px,也可以使用“wrap_content”使控件根据内容来自适应或者使用“fill_parent”占满该控件所在容器的所有空间。 Weight:对应的设置为android:layout_weight。layout_weight 用于给一个线性布局中的诸多视图的重要度赋值。所有的视图都有一个layout_weight值,默认为零,意思是需要显示多大的视图就占据多大的屏幕空间。若赋一个高于零的值,则将父视图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight值以及该值在当前屏幕布局的整体layout_weight值和在其它视图屏幕布局的layout_weight值中所占的比率而定。举个例子:比如说我们在水平方向上有一个文本标签和两个文本编辑元素。该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个文本编辑元素其中第一个的layout_weight值设置为1,而第二个的设置为2, 则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要度越高)。但是对于LinearLayout之间则以反比的形式显示在屏幕上(即数值越小,重要度越小) 。 Gravity:各个控件默认是left-and top-aligned的,但可通过对应的xml属性android:layout_gravity重新设置(在代码中可通过setGravity()进行设置)。 Padding:边距,可通过android:padding属性进行设置,4个方向的边距属性分别为android:paddingLeft, android:paddingRight, android:paddingTop, and android:paddingBottom。 RelativeLayout RelativeLayout是一个按照相对位置排列的布局,跟AbsoluteLayout这个绝对坐标布局是个相反的理解。使用RelativeLayout布局的时候,最好在界面设计时做好布局,减少程序运行时做控件布局的更改,因为 RelativeLayout布局里面的属性之间,很容易冲突,例如,Layout below、Layout above同选 ID A,那就肯定发生冲突了。 RelativeLayout允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。因此,可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定layout,在定义它之前,被关联的元素必须被定义。RelativeLayout参数有width,height,below,alignTop,toLeft,padding和marginLeft。注意,这些参数中的一部分,其值是相对于其它子元素而言的。这些参数包括toLeft,alignTop和below,用来指定相对于其它元素的左,上和下的位置。主要属性: android:layout_alignParentTop 控件的顶部与容器的顶部对齐。 android:layout_alignParentBottom 控件的底部与容器的底部对齐。 android:layout_alignParentLeft 控件的左边与容器的左边对齐。 android:layout_alignParentRight 控件的右边与容器的右边对齐。 android:layout_centerHorizontal 控件水平方向在容器的中心。 android:layout_centerVertical 控件垂直方向在容器的中心。 android:layout_centerInParent 控件水平方向和垂直方向都在容器的中心。以上各属性的值都为布尔值类型,当需要引用另外一个控件的属性值时,可通过id/widget_perty进行引用。 android:layout_above 表明该控件在属性中指定的控件的上方。 android:layout_below 表明该控件在属性中指定的控件的下方。 android:layout_toLeft 表明该控件在属性中指定的控件的左边。 android:layout_toRight 表明该控件在属性中指定的控件的右边。 android:layout_alignTop 表明该控件的顶部与属性中指定的控件的顶部对齐。 android:layout_alignBottom 表明该控件的底部与属性中指定的控件的底部对齐。 android:layout_alignLeft 表明该控件的左边与属性中指定的控件的左边对齐。 android:layout_alignRight 表明该控件的右边与属性中指定的控件的右边对齐。 android:layout_alignBaseline 表明这两个控件的底线是保持一致的。 AbsoluteLayout 这是一个按照绝对坐标定义的布局,由于使用绝对坐标去定位控件,因此要实现自适应界面时,应尽少使用AbsoluteLayout。Absolu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论