首页 > 代码库 > 从零开始学android<SeekBar滑动组件.二十二.>
从零开始学android<SeekBar滑动组件.二十二.>
拖动条可以由用户自己进行手工的调节,例如:当用户需要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构如下所示:
java.lang.Object
? android.view.View
? android.widget.ProgressBar
? android.widget.AbsSeekBar
? android.widget.SeekBar
常用方法
public SeekBar(Context context) | 构造 | 创建SeekBar类的对象 |
public void setOnSeekBarChangeListener( SeekBar.OnSeekBarChangeListener l) | 普通 | 设置改变监听操作 |
public synchronized void setMax(int max) | 普通 | 设置增长的最大值 |
public staticinterface SeekBar.OnSeekBarChangeListener{
/**
* 开始拖动时触发操作
* @param seekBar触发操作的SeekBar组件对象
*/
publicabstract void onStartTrackingTouch(SeekBar seekBar) ;
/**
* @param seekBar触发操作的SeekBar组件对象
* @param progress当前的进度值
* @param fromUser是否为用户自己触发
*/
publicabstract void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) ;
/**
* 停止拖动时触发操作
* @param seekBar触发操作的SeekBar组件对象
*/
publicabstract void onStopTrackingTouch(SeekBar seekBar) ;
}
基本的使用
xml文件
<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <SeekBar android:max="100" android:progress="30" android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="60dp" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/seekBar1" android:layout_below="@+id/seekBar1" android:layout_marginLeft="28dp" android:layout_marginTop="32dp" android:text="seek1" android:textAppearance="?android:attr/textAppearanceMedium" /> <SeekBar android:id="@+id/seekBar2" android:max="100" android:secondaryProgress="60" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:layout_marginTop="67dp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/seekBar2" android:layout_marginTop="28dp" android:text="seek2" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout> </span>
java文件
<span style="font-size:18px;">package com.example.seekbar; import android.app.Activity; import android.os.Bundle; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; public class MainActivity extends Activity implements OnSeekBarChangeListener{ private TextView textView1,textView2; private SeekBar seekBar1,seekBar2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView1=(TextView)this.findViewById(R.id.textView1); textView2=(TextView)this.findViewById(R.id.textView2); seekBar1=(SeekBar)this.findViewById(R.id.seekBar1); seekBar2=(SeekBar)this.findViewById(R.id.seekBar2); seekBar1.setOnSeekBarChangeListener(this); seekBar2.setOnSeekBarChangeListener(this); } @Override public void onProgressChanged(SeekBar seekBar, int position, boolean flag) { // TODO Auto-generated method stub if (seekBar.getId()==seekBar1.getId()) { textView1.setText("当前seekbar1刻度"+position); } else { textView2.setText("当前seekbar2刻度"+position); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub if (seekBar.getId()==seekBar1.getId()) { textView1.setText("开始滑动seek1"); } else { textView2.setText("开始滑动seek2"); } } @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub if (seekBar.getId()==seekBar1.getId()) { textView1.setText("停止滑动seek1"); } else { textView2.setText("停止滑动seek2"); } } } </span>
效果图
使用seekbar来控制屏幕的亮度
xml文件
<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="24dp" android:text="调节手机亮度" /> <SeekBar android:max="100" android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="117dp" android:progress="50" /> </RelativeLayout></span>
JAVA文件
<span style="font-size:18px;">package com.example.seekbardemo; import android.app.Activity; import android.os.Bundle; import android.view.WindowManager; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends Activity implements OnSeekBarChangeListener { private SeekBar myseekBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myseekBar=(SeekBar)this.findViewById(R.id.seekBar1); myseekBar.setOnSeekBarChangeListener(this); } @Override public void onProgressChanged(SeekBar seekBar, int position, boolean flag) { // TODO Auto-generated method stub } //调节亮度的方法 private void setScreenBrightness(float num) { WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); // 取得window属性 layoutParams.screenBrightness = num; // num已经除以100 super.getWindow().setAttributes(layoutParams); // 0~1之间 } @Override public void onStartTrackingTouch(SeekBar arg0) { // TODO Auto-generated method stub } //在拖动结束是使用getProgress获得当前的Progress值来设置亮度 @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub if (seekBar.getId()==myseekBar.getId()) { // 将progress除以100并转换为float类型 setScreenBrightness((float)seekBar.getProgress()/100); } } } </span>
效果图
改变后
当然,使用SeekBar组件也可以对音量进行控制,大家可以查询相关API自行尝试
下节预报:RatingBar评分组件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。