Android 自学之拖动条SeekBar

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

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

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

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

通过一个实例:通过滑动块来改变图片的透明度,来看看SeekBar。

Layout/main.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:orientation="vertical"

 4     android:layout_width="fill_parent"

 5     android:layout_height="fill_parent"

 6     >

 7 <ImageView 

 8     android:id="@+id/image"

 9     android:layout_width="fill_parent" 

10     android:layout_height="240px" 

11     android:src="@drawable/lijiang"

12     />

13 <!-- 定义一个拖动条,并改变它的滑块外观 -->

14 <SeekBar 

15     android:id="@+id/seekbar"

16     android:layout_width="fill_parent" 

17     android:layout_height="wrap_content" 

18     android:max="255"

19     android:progress="255"

20     android:thumb="@drawable/ic_launcher"

21     />

22 </LinearLayout>

上面的界面布局代码中定义了两个组件:ImageView,SeekBar;SeekBar中thumb我使用了应用图标做了滑动块,下面我们看看主程序里面为滑动块添加的事件监听器

主程序:com.example.seekbar.SeekBarTest.java

 1 package com.example.seekbar;

 2 

 3 import android.support.v7.app.ActionBarActivity;

 4 import android.support.v7.app.ActionBar;

 5 import android.support.v4.app.Fragment;

 6 import android.os.Bundle;

 7 import android.view.LayoutInflater;

 8 import android.view.Menu;

 9 import android.view.MenuItem;

10 import android.view.View;

11 import android.view.ViewGroup;

12 import android.widget.ImageView;

13 import android.widget.SeekBar;

14 import android.widget.SeekBar.OnSeekBarChangeListener;

15 import android.os.Build;

16 

17 public class SeekBarTest extends ActionBarActivity {

18 

19     @Override

20     protected void onCreate(Bundle savedInstanceState) {

21         super.onCreate(savedInstanceState);

22         setContentView(R.layout.main);

23         

24         final ImageView image = (ImageView)findViewById(R.id.image);

25         SeekBar seekBar = (SeekBar)findViewById(R.id.seekbar);

26         

27         seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

28             

29             @Override

30             public void onStopTrackingTouch(SeekBar seekBar) {

31             }

32             

33             @Override

34             public void onStartTrackingTouch(SeekBar seekBar) {

35             }

36             

37             //当拖动条的滑块位置发生改变时触发该方法

38             @Override

39             public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {

40                 image.setAlpha(arg1);

41             }

42         });

43     }

44 }

运行后的效果图:

拉动后滑动块后的效果:

 

 

你可能感兴趣的:(android)