概述

android 本身只有一个水平的 seekbar,开发需要使用垂直的seekbar就只能自己实现了,好在可以直接继承水平seekbar,修改几个重载事件即可
忘了放图了,补上
默认水平SeekBar


自定义垂直SeekBar

下面的progress值显示就是一TextView

实例

public class MyVerticalSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {public MyVerticalSeekBar(@NonNull Context context) { super(context);  }public MyVerticalSeekBar(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); }public MyVerticalSeekBar(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr);  }//onDraw事件中旋转画布,由水平变垂直@Overrideprotected void onDraw(Canvas canvas) {canvas.rotate(-90);canvas.translate(-getHeight(), 0);super.onDraw(canvas);}//measure事件中重新计算控件尺寸,对换宽高值@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);int width = getMeasuredHeight();int height = getMeasuredWidth();setMeasuredDimension(width, height);}//切记加上尺寸变更时的事件,变更对换宽高值@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(h, w, oldh, oldw);}//最后重载一下滑动事件,重新计算progress值@SuppressLint("ClickableViewAccessibility")@Overridepublic boolean onTouchEvent(MotionEvent event) {if (!isEnabled()) return false;switch (event.getAction()) {case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_MOVE:case MotionEvent.ACTION_UP://因为我这是向上滑动的,所以最大值乘Y轴的滑动比例得到上面的取值,实际值再用最大值去减即可setProgress(getMax() - (int) (getMax() * event.getY() / getHeight()));onSizeChanged(getWidth(), getHeight(), 0, 0);break;}return true;}
}

外观

以上即可实现垂直的seekbar,但我在实际使用时,发现显示不出来,拉大尺寸发现本身是有显示出来的,但是位置什么的都不对,感觉内部padding值很大。
尝试自定义外观测试下发现问题不在padding上,不过问题也解决了,那就加上自定义的外观吧

滑动条样式

在drawable目录下新建一个ic_progress.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="@color/white2" /><corners android:radius="5dp" /></shape></item><item android:id="@android:id/secondaryProgress"><clip><shape><solid android:color="@color/teal_200" /><corners android:radius="5dp" /></shape></clip></item>
</layer-list>
设置属性
android:progressDrawable="@drawable/ic_progress"

图标样式

这个随便找个喜欢的图片就行,为了水平垂直变更后不会太丑,尽量找个圆环类似的图片

android:thumb="@drawable/ic_thumb"

最后

最后就完成啦,直接像其他控件一样进行引用就行啦
记得设置宽高值的时候还是要按水平的seekbar进行设置

<com.zqunyan.zgfloatmenu.utils.MyVerticalSeekBarandroid:id="@+id/seek_gesture_duration"android:layout_width="150dp"android:layout_height="24dp"android:thumb="@drawable/ic_thumb"android:progressDrawable="@drawable/ic_progress"app:layout_constraintStart_toStartOf="@+id/iv_gesture_stop"app:layout_constraintEnd_toEndOf="@+id/iv_gesture_stop"app:layout_constraintTop_toBottomOf="@+id/iv_gesture_stop" />

代码中使用

floatView.seekGestureDuration.setMax(9000);
floatView.seekGestureDuration.setProgress(3600);
floatView.seekGestureDuration.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int i, boolean b) {floatView.tvGestureDuration.setText(String.valueOf(i));}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}
});

Android自定义垂直 SeekBar相关推荐

  1. [Android]自定义垂直滚动的广告区

    [Android]自定义垂直滚动的广告区View @Author GQ 2016年07月13日 在github上找到一个在项目中常用的自定义控件,封装的不错,垂直滚动带渐入渐出动画. github项目 ...

  2. Android开发之如何自定义垂直方向的SeekBar

    SeekBar进度条在项目开发过程中使用的太频繁了,比如媒体播放器当前播放的时间进度等.那么今天将对seekbar的使用做一个总结,后面写工作要用到直接过来copy就好.这边seekbar的使用分为横 ...

  3. Android自定义Seekbar拖动条式样

    SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 1.1SeekBar常用属性 SeekBar的常用属性 ...

  4. android遥控杆控件,Android自定义滑杆控件SeekBar多功能版本

    在应用开发中有没有遇到过通过滑杆控件选择一些区间条件实现参数变化?今天我们就来自定义View实现一个多功能又实用的版本SeekBar. Paste_Image.png ](http://upload- ...

  5. Android 自定义seekbar【仿微信联系人】

    /** *  * 转载请标明出处:http://blog.csdn.net/u013598111/article/details/50452578 *   @author:[JunTao_sun]   ...

  6. Android按钮滚动条,Android自定义Seekbar滑动条,Pop提示跟随滑动按钮一起滑动

    由于项目需要做出此效果,自定义写了一个. 效果图 思路: 原始的seekbar只有滑动条并没有下方的提示文字,所以我们必须要继承Seekbar重写这个控件. 代码: 在values文件夹下新建attr ...

  7. android自定义主题背景颜色,Android 自定义SeekBar 实现分段显示不同背景颜色的示例代码...

    在最近的开发工作中,要实现一个调色板的进度条,SeekBar要分成10段显示不同颜色,功夫不负有心人,终于实现了这个功能,下面分享给大家 示例图: 1.自定义SeekBar import androi ...

  8. android自定义seekbar,Android自定义SeekBar实现视频播放进度条

    本文实例为大家分享了Android实现视频播放进度条的具体代码,供大家参考,具体内容如下 首先来看一下效果图,如下所示: 其中进度条如下: 接下来说一说我的思路,上面的进度拖动条有自定义的Thumb, ...

  9. Android自定义SeekBar,带开始值结束值和Thumb上方滑动的Text

    之前根据网友的博文写了一个Demo(点击打开链接)但是这个Demo用到attr,layout color,还有其他的类,给使用者造成很多麻烦,我想,这样的自定义控件为啥不用一个类来完成呢,这样直接复制 ...

最新文章

  1. pxeconfig 4.2.0 发布,PXE 首要启动设备
  2. Oracle Sql技巧 - Upsert, Multitable Insert, Undrop
  3. Python学习笔记(5)——使用list和tuple
  4. python算法预测风险等级_一般算法水平到底什么样子才能秒杀Bat的笔试编程题?...
  5. Fiori Launchpad Tile点击后跳转的调试技巧
  6. 程序员如何与人打交道
  7. java ui线程_UI线程异常处理方法
  8. PyOpenCV 实战:借助视觉识别技术实现围棋终局的胜负判定
  9. 用java画网状图_如何在背景中绘制一个带网格线的漂亮条形图?
  10. python的主要内容_请教,python基础班主要学哪些内容?
  11. css 水印_自制腾讯视频去除水印Chrome插件!厉害吧!
  12. 《罗兰小语》最全UMD+TXT版(来自EXE版的反编译)
  13. 十六进制转字符串 java_JAVA十六进制与字符串的转换方法
  14. git clone提示鉴权失败
  15. 从数学归纳法到递归算法
  16. 字符全角半角转换及特殊符号转换
  17. Java计算机毕业设计水果购物商城源码+系统+数据库+lw文档
  18. python中排序英文单词怎么写_Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)...
  19. Python挑战游戏( PythonChallenge)闯关之路Level- 2
  20. 简单模拟struts框架,了解strusts的框架实现机制

热门文章

  1. DirectX End-User Runtimes2010 dl
  2. 群晖Synology FileStation不显示Share文件夹的解决办法
  3. 2020十大最佳大数据分析工具
  4. [Mac]开启鼠标键
  5. 奈雪的茶“快跑”,喜茶“慢行”
  6. 配置Web.config文件显示错误信息
  7. 【WinForm】TextBox只能输入数字
  8. 根据屏幕大小自适应根字体大小
  9. 记录舒马赫告别F1车坛(转载)
  10. 转-基于NodeJS的14款Web框架