Android开发手册SeekBar拖动条使用实例

作者:芝麻粒儿 时间:2022-02-21 13:59:45 

👉实践过程

😜常用属性

因为Seekbar继承自ProgressBar,所以ProgressBar支持的XML属性SeekBar都适用。

【android:max="100"】:设置该进度条的最大值

【android:progress="50"】:设置该进度条的已完成进度值

【android:progressDrawable="@drawable/icon_xinsui"】:自定义drawable显示

【android:secondaryProgress="50"】:定义二级进度值,值介于0到max。该进度在主进度和背景之间。比如用于网络播放视频时,二级进度用于表示缓冲进度,主进度用于表示播放进度。

【android:splitTrack="false"】:设置进度条的滑块图片

【android:thumb="@drawable/icon_xinsui"】:滑块底部 背景样式 (false为透明 )

公共方法总共有14个,小空直接亮个截图

Android开发手册SeekBar拖动条使用实例

😜基本使用

Java版

<TextView
   android:id="@+id/tvProgress"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:gravity="center"
   android:text="数值范围0~100之间,当前值:30"
   android:textSize="20sp" />
<SeekBar
   android:id="@+id/seekBar"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginTop="20dp"
android:progress="30" />
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
   @Override
   public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
       tvProgress.setText("数值范围0~100之间,当前值:"+progress);
   }
   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
   }
   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
   }
});

Kotlin版

seekBar.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
          override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
               tvProgress.setText("数值范围0~100之间,当前值:$progress")
           }
           override fun onStartTrackingTouch(seekBar: SeekBar) {}
           override fun onStopTrackingTouch(seekBar: SeekBar) {}
       })

Android开发手册SeekBar拖动条使用实例

然后使用Progressbar的属性indeterminateDrawable指定即可。

😜自定义样式

这是系统自带的一个对话框进度条,样式美观度不敢恭维。

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_bar);
   ProgressDialog pb = new ProgressDialog(this);
   pb.setMax(100);
   //点击外部是否可以被取消
   pb.setCancelable(true);
   //设置标题
   pb.setTitle("下载对话框");
   //设置中间文本内容
   pb.setMessage("正在下载中....");
   pb.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
   pb.show();
   //在show后调用
   pb.setProgress(50);
}

Android开发手册SeekBar拖动条使用实例

监听方法 onStartTrackingTouch:当开始滑动滑块时,会执行该方法下的代码 

不管哪个平台系统样式都无法满足多样的市场需求和审美需求,自定义样式就是每个平台都具有的功能。

<SeekBar
   android:id="@+id/seekBar"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginTop="20dp"
   android:progress="30"
   android:progressDrawable="@drawable/seekbar_one"
   android:thumb="@drawable/icon_xinsui" />
<SeekBar
   android:id="@+id/seekBarTwo"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginTop="20dp"
   android:progress="30"
   android:progressDrawable="@drawable/seekbar_two"
android:thumb="@drawable/icon_xinsui" />

seekbar_one.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list
   xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@android:id/background">
       <shape>
           <solid android:color="#33AADD" />
       </shape>
   </item>
   <item android:id="@android:id/secondaryProgress">
       <clip>
           <shape>
               <solid android:color="#3CC4C4" />
           </shape>
       </clip>
   </item>
   <item android:id="@android:id/progress">
       <clip>
           <shape>
               <solid android:color="#00ff00" />
           </shape>
       </clip>
   </item>
</layer-list>

seekbar_two.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@android:id/background">
       <shape>
           <corners android:radius="5dp"/>
       </shape>
       <!--    背景颜色-->
       <color android:color="#CCCCCC"/>
   </item>
   <item android:id="@android:id/progress">
       <clip
           android:clipOrientation="horizontal"
           android:gravity="left">
           <shape>
               <corners android:radius="5dp"/>
               <!--  开始颜色,中途颜色,最后颜色-->
               <gradient
                   android:startColor="#00FF00"
                   android:centerColor="#0000FF"
                   android:endColor="#FF0000"/>
           </shape>
       </clip>
   </item>
</layer-list>

同理thumb其实也是可以自定义的,只不过这个通常美工给个图就搞定了,如果是动态整个drawable动画即可。

除此以外,通常我们还会遇见双向选择的滑动条,比如购物类App选择价格区间的时候。

可参考:

https://www.jb51.net/article/250882.htm

https://www.jb51.net/article/250876.htm

来源:https://juejin.cn/post/7103321733439946766

标签:Android,SeekBar,拖动条
0
投稿

猜你喜欢

  • C#中将ListView中数据导出到Excel的实例方法

    2023-12-07 04:00:08
  • 获取控件大小和设置调整控件的位置XY示例

    2022-06-06 04:40:25
  • 浅谈java面向对象中四种权限

    2023-03-09 18:43:46
  • Java 非阻塞I/O使用方法

    2022-01-01 22:54:57
  • C#异常捕获机制图文详解

    2023-05-22 19:39:20
  • C# 中的 is 真的是越来越强大越来越语义化(推荐)

    2021-06-24 11:55:12
  • Java线程安全问题小结_动力节点Java学院整理

    2021-09-25 21:01:43
  • Hibernate中Session增删改查操作代码详解

    2022-12-25 17:14:22
  • Android zygote启动流程详解

    2023-09-13 07:44:12
  • Java基础入门总结之序列化和反序列化

    2023-02-19 03:29:10
  • JAVA使用hutool工具实现查询树结构数据(省市区)

    2021-11-04 18:30:09
  • SpringBoot面试突击之过滤器和拦截器区别详解

    2022-10-13 02:02:05
  • springboot与vue详解实现短信发送流程

    2023-05-24 14:55:29
  • Android PickerView实现三级联动效果

    2023-02-25 15:05:47
  • 微服务如何通过feign.RequestInterceptor传递参数

    2022-02-26 00:28:20
  • 如何将javaweb项目部署到linux下

    2023-11-11 11:45:11
  • Java日常练习题,每天进步一点点(17)

    2021-10-15 10:24:46
  • 在Java中判断两个Long对象是否相等

    2022-09-01 11:22:10
  • Jenkins一键打包部署SpringBoot应用

    2022-08-03 16:37:18
  • Java常见数据结构面试题(带答案)

    2023-11-24 19:44:05
  • asp之家 软件编程 m.aspxhome.com