首页 > 代码库 > Android 自学之拖动条SeekBar
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 }
运行后的效果图:
拉动后滑动块后的效果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。