学习使用SeekBar,设置样式
我的学习步骤
-
在xml中拖出一个SeekBar控件
- 效果图
- 代码
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar" />
- 效果图
只想说这不是我想要的风格,然后参考了自定义漂亮的Android 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"/> -
现在设置背景样式了
- 在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_pressed.png -
最后在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^)/~
来一句:理解并承认自己也会犯错误,犯了错误之后我们可以从中学习经验,然后保持一个积极的心态,继续前行继续进步