学习使用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^)/~
来一句:理解并承认自己也会犯错误,犯了错误之后我们可以从中学习经验,然后保持一个积极的心态,继续前行继续进步