拖动条(SeekBar)的功能和用法

      拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程序,而拖动条则通过滑块的位置来标识数值——而且拖动条允许用户拖动滑块来改变值,因而拖动条通常用于对系统的某种数值进行调节,比如调节音量等。

      SeekBar允许用户改变拖动条的滑块外观,改变滑块外观通过如下属性来指定。

  • android:thumb:指定一个Drawable对象,该对象将作为自定义滑块。     

      为了让程序能响应拖动条滑块位置的改变,程序可以程序可以考虑为它绑定一个OnSeekBarChangeListener监听器。

      下面通过一个实例来示范SeekBar的功能和用法。

       实例:通过滑块来改变图片的透明度

       该程序的界面布局中需要两个组件:一个ImageView用于显示图片,一个SeekBar用于动态改变图片的透明度。界面布局文件如下。

       

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
  >
 <ImageView android:id="@+id/image"
            android:layout_width="fill_parent"
            android:layout_height="240dp"
            android:src="@drawable/lijiang"/>
 
<!-- 定义一个拖动条,并改变它的滑块外观 -->
<SeekBar android:id="@+id/seekbar"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:max="255"
         android:progress="255"
         android:thumb="@drawable/ic_launcher" />

</LinearLayout>

     上面的程序中粗体字代码定义了该拖动条的最大值、当前值都是255,并通过指定android:thumb属性来改变拖动条上滑块的外观。

      该示例的主程序比较简单,程序只要为拖动条绑定一个监听器,当滑块位置发生改变时动态改变ImageView的透明度即可。主程序如下。

package org.crazyit.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class SeekBarTest extends Activity {
     
    ImageView image;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.seek_bar_test);
        image=(ImageView)findViewById(R.id.image);
        SeekBar seekBar=(SeekBar)findViewById(R.id.seekbar);
        seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                // TODO Auto-generated method stub
                //动态改变图片的透明度
                image.setAlpha(progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub
                
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub
                
            }
            
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.seek_bar_test, menu);
        return true;
    }

}

     上面的粗体字代码就是监听拖动条上滑块位置发生改变的关键代码;当滑块位置发生改变时,ImageView的透明度将变为该拖动条的当前数值。运行上面的Activity代码将看到如下效果:

   

posted @ 2013-10-24 20:47  TealerProg  Views(1364)  Comments(0Edit  收藏  举报