Android仿IOS10圆盘时间选择器

 更新时间:2018年07月27日 08:35:33   作者:云de天空  
这篇文章主要为大家详细介绍了Android仿IOS10圆盘时间选择器,自定义圆盘时间选择器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

介绍

这是一款仿IOS10(就寝功能)的圆盘时间选择器

项目演示

实现思路

以720度为一个周期,0~360°对应0~12小时,360°~720°对应12~24小时

这里以”开始时间设置按钮”为例来谈谈它的滑动实现:
将”开始时间设置按钮”作为点A,表盘中心作为点O,手指触摸点作为点P.通过反正切公式可以计算出∠AOP的大小,然后随着手指的位置不断变化去更新点A的位置(即点A的角度).

// 坐标系的直线表达式
// 直线l1的表达式子:过钟表中心点和开始控件中心点
float a1 = mCenterY - mStartBtnCurY;
float b1 = mStartBtnCurX - mCenterX;
float c1 = mStartBtnCurY * mCenterX - mCenterY * mStartBtnCurX;
double d1 = (a1 * eventX + b1 * eventY + c1) / (Math.sqrt(a1 * a1 + b1 * b1));

// 直线l2的表达式:过钟表中心点且垂直直线l1
     float a2 = b1;
     float b2 = -a1;
     float c2 = -a2 * mCenterX - b2 * mCenterY;
     double d2 = (a2 * eventX + b2 * eventY + c2) / (Math.sqrt(a2 * a2 + b2 * b2));

// 以l1为基准线,顺势针半圆为0-180度,逆时针半圆为0-负180度
     double moveDegree = Math.toDegrees(Math.atan2(d1, d2));

     mStartDegree = (float) (mStartDegree + Math.floor(moveDegree));
     mStartDegree = (mStartDegree < 0) ? mStartDegree + mDegreeCycle : mStartDegree % mDegreeCycle;
     refreshStartBtnPositon();
     invalidate();

项目地址:Android仿IOS10圆盘时间选择器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Retrofit2日志拦截器的使用

    Retrofit2日志拦截器的使用

    这篇文章主要介绍了Retrofit2日志拦截器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Android应用开发中RecyclerView组件使用入门教程

    Android应用开发中RecyclerView组件使用入门教程

    这篇文章主要介绍了Android应用开发中RecyclerView组件使用的入门教程,RecyclerView主要针对安卓5.0以上的material design开发提供支持,需要的朋友可以参考下
    2016-02-02
  • 基于Android RecyclerView实现宫格拖拽效果

    基于Android RecyclerView实现宫格拖拽效果

    在Android发展的进程中,网格布局一直比较有热度,其中一个原因是对用户来说便捷操作,对app厂商而言也会带来很多的曝光量,本篇我们会使用RecyclerView来实现网格拖拽,本篇将结合图片分片案例,实现拖拽效果,需要的朋友可以参考下
    2024-03-03
  • Android SeekBar实现禁止滑动

    Android SeekBar实现禁止滑动

    这篇文章主要为大家详细介绍了Android SeekBar实现禁止滑动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Android实现模仿UCweb菜单效果的方法

    Android实现模仿UCweb菜单效果的方法

    这篇文章主要介绍了Android实现模仿UCweb菜单效果的方法,较为详细的分析了Android模仿UCweb菜单效果的页面布局及功能实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • android surfaceView实现播放视频功能

    android surfaceView实现播放视频功能

    这篇文章主要为大家详细介绍了android surfaceView实现播放视频功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • ScrollView嵌套ListView滑动冲突的解决方法

    ScrollView嵌套ListView滑动冲突的解决方法

    这篇文章主要介绍了ScrollView嵌套ListView滑动冲突的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android中创建一个透明的进度对话框实例

    Android中创建一个透明的进度对话框实例

    这篇文章主要介绍了Android中创建一个透明的进度对话框实例,需要的朋友可以参考下
    2014-05-05
  • android AsyncTask详细介绍

    android AsyncTask详细介绍

    本篇文章主要主要介绍了AsyncTask介绍,AsyncTask,是android提供的轻量级的异步类,有兴趣的同学可以了解一下。
    2016-11-11
  • 在kotlin的安卓项目中使用dagger的操作方法

    在kotlin的安卓项目中使用dagger的操作方法

    在 Kotlin 的 Android 项目中使用 ​​Dagger​​(特别是 ​​Dagger Hilt​​,官方推荐的简化版)进行依赖注入(DI)可以大幅提升代码的可测试性和模块化程度,这篇文章主要介绍了在kotlin的安卓项目中使用dagger的相关操作,需要的朋友可以参考下
    2025-04-04

最新评论