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>





  • 相关阅读:
    【题解】【BT】【Leetcode】Populating Next Right Pointers in Each Node
    【题解】【BT】【Leetcode】Binary Tree Level Order Traversal
    【题解】【BST】【Leetcode】Unique Binary Search Trees
    【题解】【矩阵】【回溯】【Leetcode】Rotate Image
    【题解】【排列组合】【素数】【Leetcode】Unique Paths
    【题解】【矩阵】【回溯】【Leetcode】Unique Paths II
    【题解】【BST】【Leetcode】Validate Binary Search Tree
    【题解】【BST】【Leetcode】Convert Sorted Array to Binary Search Tree
    第 10 章 判断用户是否登录
    第 8 章 动态管理资源结合自定义登录页面
  • 原文地址:https://www.cnblogs.com/my334420/p/6718599.html
Copyright © 2011-2022 走看看