Android——抽奖转盘的实现
百度日前已经正式从美国加州机动车辆管理局获得了测试自动驾驶汽车的许可。事实上,早在今年四月,百度就宣布在硅谷建立了无人驾驶技术团队,同时计划在今年年底将团队规模扩大到超过100人。该团队目前由机器学习研究人员、软件工程师和硬件工程师组成,涉及机器人、机器视觉和传感器研发领域。此外,百度还在硅谷大量招聘具有汽车行业经验的从业者。
本文转载Nipuream 的博客
前言:
最近需要实现一个抽奖的控件,我简单搜索了下,感觉要不很多细节地方没有处理,要么根本就不能用。索性想自己实现个,从千图网搜了下,挑选了个自己比较喜欢的出来,psd打开后效果如下:
最终的效果图:
点击GO按钮自动滚动
实现的效果还不错,因为是模拟器加录制,画面可能会有些卡顿,真机其实蛮顺畅的,下面简单的讲讲实现的步骤。
实现绘制过程:
首先第一个我们要它给画出来,但是要注意的就是Android所对应的坐标系的问题。
其中有两个地方需要注意下,第一个 就是画弧的地方 第一个角度是起始角度,第二个是弧的角度,并不是结束的角度,所以是 固定值60。第二个地方 就是计算具体的 x,y的值 的时候要 根据弧度去计算,不能根据角度。
使用属性动画旋转
如果用 SurfaceView 去进行重绘旋转存在一些问题,比如旋转的角度不好控制,旋转的速度不好控制。但是用属性动画,这个问题就很好解决了。
用动画最重要的就是,如何计算出结束动画后的位置,那么把最终旋转的总角度%360°就得到最后一圈实际旋转的角度,再除以60就得到了到底选择了几个位置,因为一个位置占据60°,这应该不难理解。
但是问题又来了,Android所对应的坐标系,0的位置应该是最底下,而指针的位置是在最上面,所以,我们结合上面的坐标系来看,还需要处理下,如上面的代码所示。
处理手势
触摸事件的处理,最后到底允不允许转盘随手势滑动呢?其实貌似做成这样也就可以了,但是最后还是实现了下,用到了 GestureDetector 和 Scroller 这个类。其实做法有很多,首先获取我们的滑动的距离,Math.sqrt(dx * dx + dy * dy),然后无非就是把这个距离转换成我们需要的角度,你可以把这个距离当作我们的周长来处理,也可以把这个距离当作我们总的旋转的角度来处理。之后就是随着时间的流逝,不断的刷新我们的界面了。
处理剩余问题
还存在个问题,如果没有手势去操作转盘,那我们很容易判断它所旋转的角度,但是有手势的参与,我们很容易旋转到转盘中两个分片中间的位置,那么,我们在让它旋转之前,要简单处理下,避免这种事情发生。
//TODO 为了每次都能旋转到转盘的中间位置
int offRotate = DesRotate % 360 % 60;
DesRotate -= offRotate;
DesRotate += 30;
这样不管手势怎么操作,我最终都是旋转到分片的中间位置了。
代码下载地址
Android——抽奖转盘的实现相关推荐
- Android 抽奖转盘的实现
** 本篇文章已授权公众号 guolin_blog (郭霖)独家发布 ** 序言 最近需要实现一个抽奖的控件,我简单搜索了下,感觉要不很多细节地方没有处理,要么,根本就不能用.索性想自己实现个,从千图 ...
- android 转盘抽奖4 4,[Android][抽奖转盘]④---转盘启动和停止
添加代码 mStartAngle+=mSpeed; //如果点击了停止按钮 if(isShouldEnd){ mSpeed-=1; } if(mSpeed<=0){ mSpeed=0; isSh ...
- android自定义抽奖,Android自定义view制作抽奖转盘
本文实例为大家分享了Android自定义view制作抽奖转盘的具体代码,供大家参考,具体内容如下 效果图 TurntableActivity package com.bawei.myapplicati ...
- 详解与重构hyman《Android SurfaceView实战 打造抽奖转盘》
详解与重构hyman<Android SurfaceView实战 打造抽奖转盘> 作者:邵励治 一.概述--关于SurfaceView您不得不知道的二三事 1.SurfaceView是干什 ...
- Android实现抽奖转盘
慕客网视频传送门:http://www.imooc.com/learn/444 好久都没去慕客网了,虽然这次学习的是一个比较老的视频了,但是总比不学的好.(末尾附源码) 在学习之前,先来了解一波Sur ...
- Android开发:抽奖转盘的实现
故事的开始 最近有个需求,支付成功的时候加个抽奖轮盘.类似问卷星提交后的那种东西,翻了一下gayhub,下面给出自己的实现思路. 写在题前 这东西是在github上一个项目是拓展的.但是实现时间和下载 ...
- android自定义抽奖转盘
项目中有用到抽奖转盘,网上找的demo有些不合设计的要求(不能随意添加转盘中item的个数,不能以上层view滚动等),于是自己尝试写了个自定义的抽奖转盘,方便以在别的项目中更改使用,大致的效果如下图 ...
- 九宫格抽奖转盘源码分析
效果如上图所示,下面对其实现代码进行分析,看能不能破解其抽奖规则.需要引入jquery-1.8.3.min.js和images/9张图片. <!DOCTYPE html PUBLIC ...
- 安卓源码集合,视频播放器手机屏幕助手点融投资悬浮窗抽奖转盘
1.android视频播放器源码 2.Android手机屏幕助手 3.android一个类似点融投资的app源码 4.android实现支付宝信用界面动画 5.android自定义悬浮窗 6.综合资讯 ...
最新文章
- 递归删除N天前的文件夹及子文件夹下的特定文件
- 异常 java.lang.NumberFormatException: For input string:
- java网络编程(三)
- SAP Commerce Cloud 架构概述
- CreateFeatureClass COM异常
- 云服务器 ECS 建站教程:部署Linux主机管理系统WDCP
- 树莓派 树莓派 编c++_树莓派6年
- SQL server 查询语句
- vue 初识MVC与MVVM,及其与vue基本代码之间的关系
- Java SE下载方式
- AMOS分析技术(导航页)
- java考试题及答案翁凯,快来收藏!
- [词根词缀]cre/cred/crit/cult字根由来及词源C的故事
- We will rock you (我们将震憾你)
- Timer 和TimerTask分析
- 浏览器被hao123拦截
- 第八章 VAR模型与脉冲响应
- fater-RCNN遇到的错误及其解决方案
- 【信息技术学考】2021年深圳市高中学业水平考试卷(解析版)
- CEA-2014(简述)
热门文章
- Tasks and Back stack 详解
- 区块链扫盲知识图解:其实就是一个由集体维护的分布式数据库
- 【Python零基础入门篇 · 7】:Python中的注释、字符串的常见操作、对象的布尔值
- 基本概念学习(1003)---嵌入式系统
- Tomcat启动成功能访问主页面但是不能访问应用解决办法
- 模拟哈特曼波前探测器
- 西南交大有计算机专业,西南交通大学和重庆邮电大学哪个计算机专业更好?
- 为何收入或存款增量难找存量告急
- Enabling the future of colonoscopy with intelligent and autonomous magnetic manipulation
- 关于术后贫血处治的国际共识声明推荐包括Masimo SpHb(R)在内的血红蛋白无创测量