Android-SeekBar(拖动进度条)

时间:2021-12-30 09:00:49

学习使用SeekBar,设置样式

我的学习步骤

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

    • 效果图
      Android-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"/> 设置了拖动按钮的样式
    • 效果图:
      Android-SeekBar(拖动进度条)
    • 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
    Android-SeekBar(拖动进度条)
    seekbar_thumb_pressed.png
    Android-SeekBar(拖动进度条)

  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^)/~

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