zoukankan      html  css  js  c++  java
  • Android攻城狮SeekBar制作可拖动的进度条

    SeekBar介绍
    听歌的时候,我们常常喜欢快进或者退回到某一时间段、喜欢控制音量大小。SeekBar可以通过滑块的位置来标识数值,而且拖动条允许用户拖动滑块来改变进度值的大小。
    --------------------
    SeekBar的主要属性和方法:
    由于 SeekBar 是 PrograssBar 的子类,所以方法和属性也是类似的。
    (1)setMax ——设置SeekBar的最大数值
    (2)setProgress ——设置SeekBar当前的数值
    (3)setSecondaryProgress——设置SeekBar的第二数值,即当前拖动条推荐的数值。
    -----------------------
    SeekBar的事件
    由于拖动条可以被用户控制,所以需要对其进行事件监听,这就需要实现 SeekBar.OnSeekBarChangeListener接口。此接口共需要监听三个事件:
    	数值改变 onProgressChanged
    	开始拖动 onStartTrackingTouch
    	停止拖动 onStopTrackingTouch

    使用SeekBar制作可拖动的进度条的步骤:
    1. 在main.xml中添加标签 SeekBar 和两个 TextView用于显示状态。
    2. 在MainActivity中创建并初始化SeekBsr和TextView.
    3. 为了监听用户的手势,需要监听器,令 MainActivity 实现接口 OnSeekBarChangeListener,并重写3个方法:
        //数值改变的时候调用
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
            textView1.setText("正在拖动");
            textView2.setText("当前进度:"+progress);
        }
        //开始拖动的时候调用
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            textView1.setText("开始拖动");
        }
        //停止拖动的时候调用
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            textView1.setText("停止拖动");
        }
    4. SeekBar加载监听器。



    自定义SeekBar进度条
    SeekBar类似之前学的ProgressBar,都可以改变进度条的样式,但SeekBar还能改变滑块的样式。
    android:progressDrawable="@drawable/seekbar_img"(改变进度条的样式)
    android:thumb="@drawable/thumb"(改变滑块的样式)
    
    自定义滑块样式的步骤:
    1. 在 drawale文件夹中创建资源文件 normal.png、select.png 作为滑块的模型;
    2. 在 drawale文件夹中创建选择器selector资源文件 my_thumb.xml,在selector中添加代码:
    <!--按压的情况下-->
    <item android:drawable="@drawable/select" android:state_pressed="true" android:state_window_focused="true"></item>
    <!--获取到焦点的情况下-->
    <item android:drawable="@drawable/select" android:state_focused="true" android:state_window_focused="true"></item>
    <!--被选中的情况下-->
    <item android:drawable="@drawable/select" android:state_selected="true" android:state_window_focused="true"></item>
    <!--无操作的情况下-->
    <item android:drawable="@drawable/normal"></item>
    3. 在 main.xml 下的 SeekBar 添加属性:
    android:thumb="@drawable/my_thumb"。
    -------------------------
    自定义进度条样式的步骤:
    和前面学的 ProgressBar 完全一样。
    添加完需要的资源文件后,在 SeekBar中添加属性:android:progressDrawable="@drawable/progress_bar"

     1 //可拖动的进度条,它的监听事件:OnSeekBarChangeListener 
     2 //自定义进度条滑块样式————在drawable文件夹下
     3 public class MainActivity extends Activity implements OnSeekBarChangeListener {
     4     private SeekBar seekBar;
     5     private TextView textView, textView2;
     6 
     7     @Override
     8     protected void onCreate(Bundle savedInstanceState) {
     9         super.onCreate(savedInstanceState);
    10         setContentView(R.layout.main);
    11         seekBar = (SeekBar) findViewById(R.id.seekbar);
    12         textView = (TextView) findViewById(R.id.text1);
    13         textView2 = (TextView) findViewById(R.id.text2);
    14         seekBar.setOnSeekBarChangeListener(this);
    15 
    16     }
    17 
    18     // 数值改变
    19     @Override
    20     public void onProgressChanged(SeekBar seekBar, int progress,
    21             boolean fromUser) {
    22         // TODO Auto-generated method stub
    23         textView.setText("正在拖动");
    24         textView2.setText("当前数值:" + progress);
    25 
    26     }
    27 
    28     // 开始拖动
    29     @Override
    30     public void onStartTrackingTouch(SeekBar seekBar) {
    31         // TODO Auto-generated method stub
    32         textView.setText("开始拖动");
    33     }
    34 
    35     // 停止拖动
    36     @Override
    37     public void onStopTrackingTouch(SeekBar seekBar) {
    38         // TODO Auto-generated method stub
    39         textView.setText("停止拖动");
    40     }
    41 
    42 }
    ----自定义滑块的选择器------
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:drawable="@drawable/yes" android:state_pressed="true" android:state_window_focused="true"></item>
        <item android:drawable="@drawable/yes" android:state_focused="true" android:state_window_focused="true"></item>
        <item android:drawable="@drawable/yes" android:state_selected="true" android:state_window_focused="true"></item>
        <item android:drawable="@drawable/no" ></item>
    
    </selector>





  • 相关阅读:
    清单
    1
    s
    模块系统的演进
    改radio样式
    前端css库
    疑惑
    收藏
    事件
    社保档案
  • 原文地址:https://www.cnblogs.com/my334420/p/6718599.html
Copyright © 2011-2022 走看看