SeekBar小demo
来源:互联网 发布:手机数据恢复精灵 编辑:程序博客网 时间:2024/06/05 21:05
概述:
Android中组件有很多种,其中SeekBar就是其中经常见到的组件之一。SeekBar是滑动条组件,在音视频的播放器的下面经常看到。也就是settings下的sound¬ification
一些属性值:
·android:max 设置范围最大值
·android:progress 设置当前进度值
·android:secondaryProgress 设置当前次进度值
·android:progressDrawable 设置进度条的图片
·android:thumb 设置进度条的滑块的图片
常用的方法:
·getMax() 获取最大范围值 eg:seekbar.getMax();
·getProgress() 获取当前进度值 eg:seekbar.getProgress();
·setMax(int) 设置范围最大值 eg:seekbar.setMax();
·setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener l)。监听器 eg:seekbar.setOnSeekBarChangeListener();
SeekBar.OnSeekBarChangeListener中可以监听三种事件:
数值的改变(onProgressChanged)
开始拖动(onStartTrackingTouch)
停止拖动(onStopTrackingTouch)
下面是小demo实现:
1)首先是布局文件activity_main:
<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/seekbar_tetview_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定义SeekBar" /> <TextView android:id="@+id/seekbar_tetview_two" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拖动SeekBar时,信息提示" /> <!-- // android:layout_centerInparent 相对于父元素完全居中 --> <SeekBar android:id="@+id/seekBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:max="100" //设置范围最大值 android:progress="30" //设置当前进度值 android:maxHeight="20px" android:minHeight="5px" android:paddingLeft="20px" android:paddingRight="20px" android:progressDrawable="@drawable/seekbar_style" //用@drawable /> </LinearLayout></ScrollView>
2)seekbar_style.xml:
在res/drawable下定义seekbar_style.xml
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background" //注意是@android: android:drawable="@color/yellow_color"/> <item android:id="@android:id/progress" android:drawable="@color/pink_color"/> <item android:id="@android:id/secondProgress" android:drawable="@color/pink_color"/></layer-list>
3)在res/values/下定义colors.xml
<?xml version="1.0" encoding="utf-8"?><resources> <color name="yellow_color">#ffc559</color> <color name="pink_color">#ff5a9d</color> <color name="blue_color">#0173d6</color></resources>
2)然后就是MainActivity.java了:
package com.example.seekbartest;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;public class MainActivity extends Activity { private TextView textviewOne; private TextView textviewTwo; private SeekBar seekBar; private String RESULT; private int MSG_WHAT = 0; private String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textviewOne = (TextView) findViewById(R.id.seekbar_tetview_one); textviewTwo = (TextView) findViewById(R.id.seekbar_tetview_two); seekBar = (SeekBar) findViewById(R.id.seekBar); seekBar.setOnSeekBarChangeListener(mSeekBarChangeListener); } private OnSeekBarChangeListener mSeekBarChangeListener = new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) { Log.d(TAG, "onProgressChanged"); textviewTwo.setText("进度条正在改变,还没有停止调节"); Message msg = new Message(); Bundle bundle = new Bundle(); int pro = seekbar.getProgress(); int proMax = seekbar.getMax(); int result = pro/proMax; bundle.putInt(RESULT, result); msg.setData(bundle); msg.what = MSG_WHAT; mHandler.sendMessage(msg); } public void startSample() { textviewTwo.setText("2 进度条开始改变"); //postStartSample(); } public void stopSample() { textviewTwo.setText("2 已停止条件进度条"); //postStopSample(); } @Override public void onStartTrackingTouch(SeekBar seekbar) { Log.d(TAG, "onStartTrackingTouch"); textviewTwo.setText("进度条开始改变");//注意这个是touch,得是触屏的才会调用 } @Override public void onStopTrackingTouch(SeekBar seekbar) { Log.d(TAG, "onStopTrackingTouch"); textviewTwo.setText("已停止条件进度条"); } }; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == MSG_WHAT) { textviewOne.setText("当前拖动位置占 : " + msg.getData().getInt(RESULT)) ; } }; };}
輸出log:
01-01 01:12:58.021 MainActivity: onStartTrackingTouch
01-01 01:12:58.021 MainActivity: onProgressChanged
01-01 01:12:58.037 MainActivity: onProgressChanged
01-01 01:12:58.502 MainActivity: onStopTrackingTouch
效果图:
- SeekBar小demo
- SeekBar单向选择,SeekBar使用demo
- Android竖式SeekBar实现及demo
- 小demo
- 小demo
- 小demo
- 关于seekBar的一些小问题
- seekbar去掉thumb(小圆球)
- SeekBar
- SeekBar
- SeekBar
- SeekBar
- SeekBar
- SeekBar
- SeekBar
- SeekBar
- SeekBar
- SeekBar
- Android小型知识点收录:studio快捷键
- linux下socket编程常用头文件
- mysql绿色版安装
- 微信小程序正式开放公测,将给创业者带来哪些机会?
- C++ Primer Plus(StringBad类的改进)
- SeekBar小demo
- OSG osgDB::readNodeFile 读取ply文件
- 用于图像去雾的优化对比度增强算法
- webview和swiperefreshLayout 的下拉冲突问题
- CMD文件及段的总结
- 大数相加(hdu1022)
- studio快捷键
- Scrapy安装介绍-windows版
- C/C++——线程池:CThreadPoolManager