Android UI系统控件进阶(二)—下拉列表控件Spinner,进度条ProgressBar,滑块控件SeekBar,评分控件RatingBar

源码下载:大笑

拉列表控件Spinner:点击打开链接

进度条ProgressBar:点击打开链接

滑块控件SeekBar:点击打开链接

评分控件RatingBar :点击打开链接


一.Spinner概述  

       Spinner是一个下拉框的控件,当用户选择的时候,可以提供一个下拉列表将所有可选的项列出来,每次只能选择一项。它的项来自于与之相关联的适配器中。Spinner的使用,可以极大提高用户的体验性。 

        下拉列表(Spinner)是AdapterView的子类,是一个每次只能选择所有项中一项的部件。它的项来自于与之相关联的适配器中。类似于桌面程序的组合框(ComboBox),但没有组合框的下拉菜单,而是使用浮动菜单为用户提供选择。Spinner数据由Adapter提供,通过Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值
       调用setOnItemSelectedListener()方法,处理下拉列表框被选择事件,把AdapterView.OnItemSelectedListener实例作为参数传入。


Spinner控件应用的通常用法,具体如下
1、用XML描述的一个Spinner控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Spinner android:id="@+id/spinner"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>

</LinearLayout>

2、引用XML描述的Spinner控件,并程序处理:

public class SpinnerActivity extends Activity {
private static final String TAG = "SpinnerActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner);
//第二个参数为下拉列表框每一项的界面样式,该界面样式由Android系统提供,当然您也可以自定义
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("java");
adapter.add("dotNet");
adapter.add("php");
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
Spinner spinner = (Spinner)adapterView;
String itemContent = (String)adapterView.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> view) {
Log.i(TAG, view.getClass().getName());
}
});
}
}

二.进度条ProgressBar

       Android的Widget,有许多是为了与User交互而特别设计的,但也有部分是作为程序提示、显示程序运行状态的Widget。现在介绍的范例,ProgressDialog对话框的应用目的相似,的ProgressDialog是继承自 Android.app.ProgressDialog所设计的互动对话窗口,在应用时,必须新建ProgressDialog对象,在运行时会弹出“对话框”作为提醒,此时应用程序后台失去焦点,直到进程结束后,才会将控制权交给应用程序,如果在Activity当中不希望后台失焦,又希望提示User有某后台程序正处于忙碌阶段,此时,ProgressBar就会派上用场了。


       Android提供的ProgressBar Widget控件与ProgressDialog应用目标不同,在程序一开始即可在main.xml Layout当中布局,先将部署在Layout里的ProgressBar的属性设为隐藏(一开始看不见),而后使用进程来“假装”程序忙碌中,但不同的是,可在进程当中取得运行时的进度,在“运行”的过程中,将运行进度通过TextView显示出来。本范例除了学习ProgressBar Widget的显示及使用之外,另一个学习关键则是Handler的使用,因为新起的进程无法访问Activity里的Widget,也无法将运行状态外送出来,所以需要通过Handler及Message对象,将进程里的状态往外传递,最后由Activity的Handler事件接收取得运行的状态。

ProgressBar控件该类型进度条就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中。位于android.widget包下


ProgressBar控件通用的方法,具体如下:
1)在布局xml文件中添加进度条代码:
<ProgressBar android:layout_width="fill_parent" 
android:layout_height="20px"
    style="?android:attr/progressBarStyleHorizontal"
    android:id="@+id/downloadbar"/> 

2)引用XML文件控件,在代码中操作进度条:

ProgressBar.setMax(100);//设置总长度为100
ProgressBar.setProgress(0);//设置已经开启长度为0,假设设置为50,进度条将进行到一半android:progressBarStyle:默认进度条样式
ndroid:progressBarStyleHorizontal:水平样式
getMax():返回这个进度条的范围的上限
getProgress():返回进度
        getSecondaryProgress():返回次要进度
        incrementProgressBy(int diff):指定增加的进度
        isIndeterminate():指示进度条是否在不确定模式下
        setIndeterminate(boolean indeterminate):设置不确定模式下

        setVisibility(int v):设置该进度条是否可视


三.滑块控件SeekBar:

       SeekBar是ProgressBar的扩展,位于android.widget包中,在其基础上增加了一个可拖动的thumb(就是那个可拖动的图标)。用户可以触摸thumb并向左或向右拖动,或者可以使用方向键都可以设置当前的进度等级。

       SeekBar可以附加一个SeekBar.OnSeekBarChangeListener以获得用户操作的通知
通过SeekBar.getProgress()方法获取拖动条当前值
通过调用setOnSeekBarChangeListener()方法,处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例作为参数传入


SeekBar通用的方法及步骤如下:
1、用XML描述SeekBar控件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<SeekBar
android:id="@+id/seekBar"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>

<Button android:id="@+id/seekBarButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="获取值"
/>
</LinearLayout>

2、引用XML描述的控件,程序代码处理:

public class SeekBarActivity extends Activity {
private SeekBar seekBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.seekbar);
seekBar = (SeekBar) findViewById(R.id.seekBar);
seekBar.setMax(100);//设置最大刻度
seekBar.setProgress(30);//设置当前刻度
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
Log.v("onProgressChanged()", String.valueOf(progress) + ", " + String.valueOf(fromTouch));
}
public void onStartTrackingTouch(SeekBar seekBar) {//开始拖动
Log.v("onStartTrackingTouch()", String.valueOf(seekBar.getProgress()));
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {//结束拖动
Log.v("onStopTrackingTouch()", String.valueOf(seekBar.getProgress()));
}
});
Button button = (Button)this.findViewById(R.id.seekBarButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SeekBarActivity.this, String.valueOf(seekBar.getProgress()), 1).show();
}
});
}
}

(四)评分控件RatingBar 

       RatingBar位于android.widget包中,是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定。使用RatingBar的默认大小时,用户可以触摸/拖动或使用键来设置评分,它有两种样式(小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndicator),其中大的只适合指示,不适合于用户交互

RatingBar控件的XML属性:

属性名称描述
android:isIndicatorRatingBar是否是一个指示器(用户无法进行更改)
android:numStars显示的星型数量,必须是一个整形值,如“100”。
android:rating默认的评分,必须是浮点类型,如“1.2”。
android:stepSize评分的步长,必须是浮点类型,如“1.2”。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值