一.Spinner概述  

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

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

android spinner 下拉框样式 android下拉框控件_滑块控件SeekBar

android spinner 下拉框样式 android下拉框控件_进度条ProgressBar_02



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包下

android spinner 下拉框样式 android下拉框控件_评分控件RatingBar_03

android spinner 下拉框样式 android下拉框控件_下拉列表控件Spinner_04


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实例作为参数传入

android spinner 下拉框样式 android下拉框控件_下拉列表控件Spinner_05

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:isIndicator

RatingBar是否是一个指示器(用户无法进行更改)

android:numStars

显示的星型数量,必须是一个整形值,如“100”。

android:rating

默认的评分,必须是浮点类型,如“1.2”。

android:stepSize

评分的步长,必须是浮点类型,如“1.2”。

android spinner 下拉框样式 android下拉框控件_滑块控件SeekBar_06

android spinner 下拉框样式 android下拉框控件_滑块控件SeekBar_07