| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 仿iOS时间环形的时间选择器 -> 正文阅读 |
|
[移动开发]仿iOS时间环形的时间选择器 |
仿iOS时间环形的时间选择器项目中用到时间选择器,一个类似iOS里面健康睡眠设置时间的样式。样式如下: 相比于常规的自定义View,该时间控件主要是结合了触摸滑动的事件,还有比较重要的是对弧度的绘制,需要特别注意的是弧度和角度相关的转换。且需要将手指触摸绘制的轨迹在我们预想的位置绘制出完整的圆环。转换公式涉及到一些三角函数的使用。这里需要特别注意。 控件内部主要绘制流程自定义参数初始化主要是通过自定义参数,在xml中设置一些常用的颜色,尺寸相关参数 view开始绘制的主要分为一下几个部分背景部分绘制,包括整体的表盘绘制,刻度绘制,整点的文字绘制
绘制文字和刻度的时候需要通过旋转画布来保证绘制的文字方向正确。 旋转画布,调整弧度开始的位置,然后在表盘边缘绘制圆环。
进行弧度的绘制通过计算开始的弧度和扫过的弧度绘制。 保存画布后,绘制拖拽的滑块。
如上绘制部分基本完成。后面主要逻辑都是在处理手势的部分。 处理触摸事件的逻辑首先在每个事件中都需要区分滑块1和滑块2,对每个滑块的事件区分处理。 核心方法将坐标点转换为弧度
该方法为非常核心的转换方法,通过计算点落在不同象限,获取到具体的弧度数值。 move事件中则是对绘制弧度的具体限制了。具体代码比较繁琐,可以根据自己的业务需求进行定制。
后续就是我们添加的限制,比如我的限制为:不可以超过设置的起始时间,临近边界则不可滑动。 这里对两个滑块都要进行不同的判断,且需要对两个滑块增加限制,根据需求是否可以进行交叉等。 up事件中则是最终的结果,这里我们通过最后的弧度数值,进行换算来获取最后的时间。 比如,我的规则是每刻度是半个消息,这里就需要对滑动后的滑块进行矫正,让滑块落在刻度中心。将最后的数据结果通过实现注册的监听事件传递出去。 自定义view能更好的帮助我们熟悉view的绘制流程,对我们编码有很好的帮助。 项目地址,如果有需求可以参考实现: GitHub - yihu5566/CircleAlarmTimer: 圆形的时间选择控件 基础来源 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 2:46:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |