天天看点

安卓学习基础篇——高级用户界面设计(一)高级控件拖动条和星级评分条

高级控件

自动完成文本(AutoCompleteTextView)

自动完成文本用于实现允许用户输入一定字符后,显示一个下拉菜单,提供用户从中选择,当用户选择某个选项后,按用户选择自动填写该文本框。AutoCompleteTextView继承自EditText,所以它支持EditText提供的属性,同时 ,它还支持其他一些属性。      

进度条(ProgressBar)

当一个应用程序在后台执行时,前台界面不会有任何信息,这时用户根本不知道程序是否在执行以及执行进度等,因此需要使用进度条来提示程序执行的进度。在Android中,进度条用于向用户显示某个耗时操作完成的百分比。      
进度条支持的属性:      
1.android:max   用于设置进度条的最大值。      
2.andorid:progress   用于指定进度条已完成的进度值      
3.android:progressDrawable   用于设置进度条轨道的绘制形式      
除了以上的属性之外,进度条组件还提供了下面两个常用方法用于操作进度。      
1.setProgress(int progress)方法:用于设置进度完成的百分比      
2.incrementProgress(int diff)方法:用于设置进度条的进度增加或减少。当参数值为正数时,表示进度增加;为负数时,表示进度减少。      
如下为一个xml文件中的一个进度条例子:      
<ProgressBar 
        	android:id="@+id/progress_bar"
       	 	android:layout_width="fill_parent"
        	android:layout_height="wrap_content"
        	android:max="100"
        	style="@android:style/Widget.ProgressBar.Horizontal"/>
           
其中style属性用来指定进度条的风格,一下为一些常用的style属性值:
           
style="@android:style/Widget.ProgressBar.Small"        //小型圆形进度条
style="@android:style/Widget.ProgressBar.Inverse"        //中型圆形进度条
style="@android:style/Widget.ProgressBar.Large"       //大型圆形进度条
style="@android:style/Widget.ProgressBar.Large.Inverse"  //大型圆形进度条
style="@android:style/Widget.ProgressBar.Horizontal"     //水平进度条
style="@android:style/Widget.ProgressBar.Small.Inverse"   //小型圆形进度条
其中,带有Inverse参数和不带有Inverse参数的style属性区别在于:当进度条控件所在的界面背景颜色为白色时,需要使用带有Inverse参数的style属性,否则进度条将看不见。        


        

拖动条和星级评分条

拖动条(Seek Bar)

拖动条与进度条类似,所不同的是,拖动条允许用户拖动滑块来改变值,通常用于实现对某种数值的调节。例如,调节图片的透明度或是音量等。      
可以在xml文件中添加一个<SeekBar>标签来添加一个拖动条。      
SeekBar组件允许用户改变拖动滑块的外观,这可以使用android:thumb属性实现,该属性的属性值为一个Drawable对象,该Drawable对象将作为自定义滑块。      
由于拖动条可以被用户控制,所以需要为其添加OnSeekBarChangeListener监听器。      

星级评分条(RatingBar)

xml属性如下: android:isIndicator 用于指定该星级评分条是否允许用户改变,true为不允许改变 android:numStars 用于指定该星级评分条总共有几个星星 android:rating 用于指定该星级评分条默认的星级 android:stepSize 用于指定每次最少需要改变多少个星级,默认为0.5个 除了如上几个属性,星级评分条还提供了如下3个比较常用的方法: getRating()方法:用于获取登记,表示选中了几颗星; getStepSize()方法:用于获取每次最少要改变多少个星级; getProgress()方法:用于获取进度,获取到的值为getRating()方法返回值与getStepSize()方法返回值之积;

选项卡

选项卡主要由TabHost、TabWidget和FrameLayout3个组件组成,用于实现一个多标签页的用户界面,通过它可以将一个复杂的对话框分割成若干个标签页,实现对信息的分类显示和管理。 在Android中实现选项卡的一般步骤如下: 1.在布局文件中添加选项卡所需的TabHost、TabWidget和FrameLayout组件; 2.编写各标签中要显示内容所对应的XML布局文件; 3.在Activity中,获取并初始化TabHost组件; 4.为TabHost对象添加标签页; 其中第一步在xml文件中添加选项卡的步骤如下: 1.首先添加一个TabHost组件,并在该组件下添加布局管理器; 2.在布局管理器中添加TabWidget组件作为标签组和一个FrameLayout组件作为标签内容;示例代码如下:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <TabWidget 
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        </FrameLayout>
    </LinearLayout>

</TabHost>
           
其中 应用xml布局文件添加选项卡时,必须使用系统的id来为各组件指定id属性,否则将出现异常。
杂记:对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. 
   
    首先我们要知道,什么是已经被载入的layout,什么是还没有载入的.我们启动一个应用,与入口Activity相关的layout{常见的是main.xml}就是被载入的,即在Oncreate()中的.而其他的layout是没有被载入的.就要动态载入了或通过另一个activity.
   
   
    
     在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),
    
    
     不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件.
    
         

图像切换器(ImageSwitch)

用于实现类似Windows操作系统下的图片查看器。下一站、上一张的功能。在使用ImageSwtich时,必须实现ViewSwitch.ViewFactory接口,并通过makeView()方法来创建用于显示图片的ImageView。makeView()方法将返回一个显示图片的ImageView。在使用图片切换器时,还有一个方法非常重要,就是setImageResource()方法,该方法用于指定要在ImageSwitch中显示的图片资源。

网格视图(GridView)

网格视图(GridView)是按照行、列分布的方式来显示多个组件,通常用于显示图片或是图标等,在使用网格视图时,首先要在屏幕上添加GridView组件,通常用<GridView>在xml文件中标记。 ridView支持的xml属性如下: 1.andorid:columnWidth 用于设置列的宽度 2.android:gravity 用于设置对齐方式 3.android:horizontalSpacing 用于设置各元素之间的水平距离 4.android:numColumns 用于设置列数,其属性值通常为大于1的值,如果只有一列,那么最好使用ListView实现 5.android:stretchMode 用于设置拉伸模式,其中属性值可以是none(不拉伸),spacingWidth(仅拉伸元素之间的距离),colunmnWidth(仅拉伸表格元素本身)或spacingWidthUniform(表格元素本身、元素之间的间距一起拉伸) 6.android:verticalSpacing 用于设置各元素之间的垂直距离 GridView与ListView类似,都需要通过Adapter来提供要显示的数据。在使用GridView组件时,通常使用SimpleAdapter或者BaseAdapter类为GridView组件提供数据。

画廊视图(Gallery)

画廊视图表示,能够按照水平方向显示内容,并且可以用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,并且可以响应事件显示信息。 Gallery支持的xml属性如下: 1.android:animationDuration 用于设置列表项切换时的动画持续时间 2.android:gravity 用于设置对齐方式 3.android:spacing 用于设置列表项之间的间距 4.android:unselectedAlpha 用于设置没有选中的列表项的透明度 使用画廊视图也要使用Adapter提供要显示的数据。通常使用BaseAdapter类为Gallery提供数据。

继续阅读