徒手绘制 Android 通用进度条

拖动条(FlexSeekBar),在Android的各个地方都非常常用,本文旨在自研一套通用的进度条,非常适合车载App使用

样式如下:

image.png

使用示例

<!--默认用法-->
<com.max.android.ui.seekbar.FlexSeekBar
    android:id="@+id/seekbar_demo_default"
    android:layout_width="1000px"
    android:layout_height="wrap_content"
    android:layout_marginTop="32px"
    android:max="10000"
    android:min="0"
    android:paddingStart="36px"
    android:paddingEnd="36px"
    app:layout_constraintStart_toStart0f="parent"
    app:layout_constraintTop_toBottomOf="@id/seekbar_demo_default_title" />

<!--使用自定义容器包裹,可拓展触摸范围-->
<com.max.android.ui.seekbar.FlexSeekBarContaine
    android:id="@+id/seekbar_demo_dragging_containe""""
    android:layout_width="wrap_content"
    android:layout_height="300px"
    android:layout_marginTop="32px"
    android:background="@color/lui_core_pure_white_20"
    app:layout_constraintStart_toStart0f="parent"
    app:layout_constraintTop_toBottomOf="@id/seekbar_demo_dragging_title">
                                                                         
    <com.max.android.ui.seekbar.FlexSeekBar
        android:id="@+id/seekbar_demo_dragging"
        android:layout_width="1500px"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@null"
        android:max="10000"
        android:min="0"
        android:paddingStart="36px"
        android:paddingEnd="36px"
        app:lui_drag_track_height="28px"
        app:lui_drag_trial_thumb_size="36px"
        app:lui_thumb_size="56px"
        app:lui_track_height="8px"
        app:lui_trial_thumb_size="24px" />
                                       
</com.max.android.ui.seekbar.FlexSeekBarContainer>

接口说明

/**
 * 是否开启动效
 */
var animEnable:Boolean = true

/**
 * 是否开启可通过点击改变进度
 */
var enableClick:Boolean = true

/**
 * 是否显示track进度,如果false,则仅显示thumb
 */
var enableTrackProgress: Boolean = true

/** 
 * 隐藏/展示进度
 */
var hideProgress: Boolean = false

/**
 * 滑轨高度,单位px,默认8
 */
var trackHeightPx: Int = 8

/**
 * 拖动状态滑轨高度,单位px,默认14
 */
var dragTrackHeightPx: Int = 14


/** 
 * 滑块大小,单位px,默认48
 */
var thumbSizePx: Int = 48

/**
 * 试听点drawable
 * 2.0.0版本废弃
 */ 
@Deprecated
var trialThumb: Drawable? = null

/**
 * 试听点尺寸
 * 2.0.0版本废弃
 */
@Deprecated
var trialThumbSizePx: Int = 12

/**
 * 拖动时试听点尺寸
 * 2.0.0版本废弃
 */
@Deprecated
var dragTrialThumbSizePx: Int = 22

/**
 * 试听范围起始点
 * 2.0.0版本废弃
 */
@Deprecated
var start: Int = INVALID_TRAIL_POINT

/**
* 试听范围结束点
* 2.0.0版本废弃
*/
@Deprecated
var end: Int = INVALID_TRAIL_POINT

参数说明

  • anim_enable: boolean,是否开启动效,默认:开
  • click_enable: boolean,是否允许通过点击改变进度,默认:允许
  • disabled: boolean,是否停用进度条,默认:不停用
  • track_height: dimensition|reference,滑轨高度,默认:8px
  • drag_track_height: dimension|reference,拓动状态滑轨高度,默认:14px
  • thumb_size: dimension|reference,滑块直径,默认48px

接入后即可完成使用,样式和使用API都会比系统的更好用

需要体验sdk的朋友,或者想要参考源码的,可以评论留下联系方式,我会第一之间发给你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/788760.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Retrofit框架源码深度剖析【Android热门框架分析第二弹】

Android热门框架解析&#xff0c;你确定不来看看吗&#xff1f; OkHttp框架源码深度剖析【Android热门框架分析第一弹】 Retrofit框架源码深度剖析【Android热门框架分析第二弹】 什么是Retrofit&#xff1f; 准确来说&#xff0c;Retrofit 是一个 RESTful 的 HTTP 网络请求…

雷达视频采集卡 HPx-410

产品简介 雷达视频采集卡 HPx-410&#xff0c;应用于接入导航雷达数据&#xff0c;导航雷达视频&#xff0c;适用于JRC雷达、古野furuon雷达、Sperry雷达等多种型号的雷达。 HPx-410 可以接入导航雷达数据&#xff0c;引入导航雷达原始回波&#xff0c;然后将雷达视频采集到计…

centos部署jar包

第一步&#xff1a; 将IDEA中的项目打包为jar,将这个jar文件放到centos服务器上的目录里&#xff0c;我在opt新建api目录&#xff0c;将jar文件放入&#xff0c;如下图&#xff1a; 第二步&#xff1a; 将需要读取的配置文件也放入此目录(其他目录也可以&#xff0c;和脚本中…

Python面试宝典第9题:买卖股票

题目 给定一个整型数组&#xff0c;它的第i个元素是一支给定股票第i天的价格。如果最多只允许完成一笔交易&#xff08;即买入和卖出一支股票一次&#xff09;&#xff0c;设计一个算法来计算你所能获取的最大利润。注意&#xff1a;你不能在买入股票前卖出股票。 示例 1&#…

设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)

写在前面&#xff1a;本文是个人在学习设计模式时的所思所想&#xff0c;汇总了其他博主及自己的感悟思考&#xff0c;可能存在出入&#xff0c;请大家理性食用~~ 工厂模式 在工厂模式中&#xff0c;父类决定实例的生成方式&#xff0c;但并不决定所要生成的具体的类&#xf…

企业应对策略:全面防御.DevicData-P-xxxxxx勒索病毒

引言 在数字化时代&#xff0c;网络安全已成为不可忽视的重要议题。随着互联网的普及&#xff0c;各种网络威胁层出不穷&#xff0c;其中勒索病毒以其独特的攻击方式和巨大的破坏性&#xff0c;给个人用户和企业带来了严重的经济损失和数据安全风险。在众多勒索病毒中&#xff…

前端javascript中的排序算法之选择排序

选择排序&#xff08;Selection Sort&#xff09;基本思想&#xff1a; 是一种原址排序法&#xff1b; 将数组分为两个区间&#xff1a;左侧为已排序区间&#xff0c;右侧为未排序区间。每趟从未排序区间中选择一个值最小的元素&#xff0c;放到已排序区间的末尾&#xff0c;从…

LeetCode加油站(贪心算法/暴力,分析其时间和空间复杂度)

题目描述 一.原本暴力算法 最初的想法是&#xff1a;先比较gas数组和cost数组的大小&#xff0c;找到可以作为起始点的站点(因为如果你起始点的油还不能到达下一个站点&#xff0c;就不能作为起始点)。当找到过后&#xff0c;再去依次顺序跑一圈&#xff0c;如果剩余的油为负数…

11、Python之变量:看得见还是看不见

引言 在前面一篇关于Python变量的文章中&#xff0c;更多地结合对象的内存结构及字节码指令&#xff0c;来看不同代码针对不同的类型的对象的不同效果。 今天这篇文章中&#xff0c;想对新手在使用Python变量中&#xff0c;可能遇到的其他困惑&#xff0c;再展开来说一下。 大…

乐器培训课程报名小程序模板源码

模板介绍 一款实用的音乐课程&#xff0c;乐器培训&#xff0c;艺术类网页课程报名手机小程序模板下载。包含&#xff1a;主页、列表、个人中心、报名等模块。 图片演示 乐器培训课程报名小程序模板源码

《Windows API每日一练》9.13资源-鼠标位图和字符串

鼠标指针位图&#xff08;Mouse Cursor Bitmap&#xff09;是用于表示鼠标指针外观的图像。在 Windows 窗口编程中&#xff0c;可以使用自定义的鼠标指针位图来改变鼠标的外观&#xff0c;并提供更加个性化的用户体验。 ■以下是一些与鼠标指针位图相关的要点&#xff1a; ●…

九、C++11常用新特性—模板的优化

1.模板的右尖括号 在泛型编程种&#xff0c;模板实例化有一个非常繁琐的地方&#xff0c;那就是连续的两个右尖括号&#xff08;>>)会被编译器解析成右移操作&#xff0c;而不是模板参数表的结束&#xff0c;在C11以前需要在>>之间加上一个空格> >。C11之后…

中职网络安全Server2216

任务环境说明&#xff1a;✓ 服务器场景&#xff1a;Server2216&#xff08;开放链接&#xff09;✓ 用户名:root密码&#xff1a;1234561.黑客通过网络攻入本地服务器,通过特殊手段在系统中建立了多个异常进程找出启动异常进程的脚本&#xff0c;并将其绝对路径作为Flag值提交…

WindowsMac共享文件夹设置

共享文件夹设置 共享文件夹设置Windows系统设置步骤一&#xff1a;设置共享文件夹步骤二: 访问共享文件夹 Mac系统中设置共享文件夹步骤一&#xff1a;设置共享文件夹步骤二&#xff1a;访问共享文件夹 小贴士结论 共享文件夹设置 有时需要在多台电脑之间共享文件夹&#xff0…

学习嵌入式对于学历有要求吗?

学习嵌入式系统开发通常并不对学历有严格的要求&#xff0c;尤其是在技术行业中&#xff0c;实际的技能和经验往往比学历更为重要。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕…

【C++报错已解决】Multiple Definition of Symbol

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法&#xff1a;方法一&#xff1a;使用extern关键…

设计模式之Facade设计模式

Facade设计模式&#xff0c;也称为外观模式&#xff0c;是一种结构型设计模式&#xff0c;它主要用于为子系统中的一组接口提供一个统一的高层接口&#xff0c;从而使得子系统更加容易使用。以下是关于Facade设计模式的详细介绍&#xff1a; 一、定义 Facade模式为多个复杂的…

【单片机毕业设计选题24054】-基于STM32的水质检测系统

系统功能: 主要功能模块原理图: 电源时钟烧录接口: 单片机和按键输入电路: 传感器采集电路&#xff1a; 资料获取地址 系统主要功能模块代码 初始化代码: /* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration-----------------------------------------------…

Golang | Leetcode Golang题解之第226题翻转二叉树

题目&#xff1a; 题解&#xff1a; func invertTree(root *TreeNode) *TreeNode {if root nil {return nil}left : invertTree(root.Left)right : invertTree(root.Right)root.Left rightroot.Right leftreturn root }

C++ | Leetcode C++题解之第225题用队列实现栈

题目&#xff1a; 题解&#xff1a; class MyStack { public:queue<int> q;/** Initialize your data structure here. */MyStack() {}/** Push element x onto stack. */void push(int x) {int n q.size();q.push(x);for (int i 0; i < n; i) {q.push(q.front());…