Android-SeekBar(拖动进度条)

来源:互联网 发布:淘宝儿童玩具大全 编辑:程序博客网 时间:2024/05/17 09:34

学习使用SeekBar,设置样式

我的学习步骤

  1. 在xml中拖出一个SeekBar控件

    • 效果图
      这里写图片描述
    • 代码
      <SeekBar    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/seekBar" />
  2. 只想说这不是我想要的风格,然后参考了自定义漂亮的Android SeekBar样式

  3. 首先改改基本布局

            <SeekBar            android:id="@+id/seekBar"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:focusable="true"  获取焦点            android:maxHeight="4dp"  最大高度            android:minHeight="4dp"   最小高度            android:paddingLeft="30dp"            android:paddingRight="30dp"/>
  4. 现在设置背景样式了

    • 在drawable下创建样式文件po_seekbar.xml,seekbar_thumb.xml
    • 根标签为layer-list,这个我又不了解了,参考了:shape和selector和layer-list的详细说明
    • 为SeekBar添加了两个属于代码如下:
          <SeekBar            android:id="@+id/seekBar"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:focusable="true"            android:maxHeight="4dp"            android:minHeight="4dp"            android:paddingLeft="30dp"            android:paddingRight="30dp"            android:progress="50" 设置了当前拖动位置            android:secondaryProgress="70" 设置了加载的进度            android:progressDrawable="@drawable/po_seekbar" 设置了拖动SeekBar的各种显示状态背景颜色            android:thumb="@drawable/seekbar_thumb"/> 设置了拖动按钮的样式
    • 效果图:
      设置后的效果图
    • po_seekbar.xml代码如下:
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background"> 蓝色背景设置    <shape>        <solid android:color="#0000ff" />    </shape></item><item android:id="@android:id/secondaryProgress">红色进度颜色设置    <clip>        <shape>            <solid android:color="#ff0000" />        </shape>    </clip></item><item android:id="@android:id/progress">紫色拉动进度颜色设置    <clip>        <shape>            <solid android:color="#ff996dfe" />        </shape>    </clip></item></layer-list>
    • seekbar_thumb.xml代码如下:
    <?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">当获取焦点、没有按下的时候显示的图片<item android:state_focused="true" android:state_pressed="false" android:drawable="@mipmap/seekbar_thumb_normal" />当获取焦点、按下的时候显示的图片<item android:state_focused="true" android:state_pressed="true" android:drawable="@mipmap/seekbar_thumb_pressed" />当没有获取焦点、按下的时候<item android:state_focused="false" android:state_pressed="true" android:drawable="@mipmap/seekbar_thumb_pressed" />其他状态的时候<item android:drawable="@mipmap/seekbar_thumb_normal" /></selector>

    seekbar_thumb_normal.png
    seekbar_thumb_normal.png
    seekbar_thumb_pressed.png
    seekbar_thumb_pressed.png

  5. 最后在java代码里获取控件设置监听事件

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {        @Override        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {        }        @Override        public void onStartTrackingTouch(SeekBar seekBar) {        }        @Override        public void onStopTrackingTouch(SeekBar seekBar) {        }    });

我的感受

  • layer-list 标签是可以用来叠加图像的
  • clip标签好像是根据条件剪切图形( ̄┰ ̄*)
  • android:secondaryProgress可以用来显示数据加载的进度,比如正在播放的连网音乐下载进度,我们就可以根据下载进度来快进了

想说的话

  • 博客坚持写,不管怎么样,今后打算学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们

  • 如果内容有什么地方不对,请告知,希望大家能一起学习和成长(^o^)/~

  • 来一句:理解并承认自己也会犯错误,犯了错误之后我们可以从中学习经验,然后保持一个积极的心态,继续前行继续进步

0 0