求安卓数字时钟模拟时钟一个 如图

关注微口网微博
微信号:iweikou
Android中自界说控件一贯都是Android开发中的一个难点。近期看大牛写的里边的第六章Android绘图机制及处理窍门,里边经过Canvas完结了一个如下所示的仪表盘:(图一)在书中详细描写了怎样完结这个仪表盘,这儿就不赘述了,能够参阅其。可是这个表盘的指针是中止不动的,假定咱们能让这个表盘的指针展现当不时刻,跟着时刻而滚动,那么咱们就能够一款模仿时钟了。那么,疑问就来了:怎样才调让时钟的指针动起来呢?这个疑问,咱们能够思考分为2步去完结,榜首步先制作出其时的时刻,第二部再让指针动起来。经过这么咱们就能够完结一款模仿时钟。一. 制作当不时刻1. 获取当不时刻要制作当不时刻,咱们要先获取当不时刻。mTime.setToNow();2. 获取指针视点当不时刻可分为时,分,秒。咱们终究要获取的是时分秒3个指关于应的准确视点。秒针视点:最简略,直接乘以6即可取得。分针视点:其时分钟 * 6 + 6 * 秒 / 60F时针视点:(其时小时 % 12) * 30 + 30 * 其时分钟视点 / 360F;3. 制作指针获取到指针视点往后,接下来便是在表盘制作指针了。这儿咱们要运用canvas.rotate()这个办法来完结制作指针,详细完结代码如下所示: & &private void drawTime(Canvas canvas) { & & & &// 当不时刻 & & & &mTime.setToNow(); & & & &// 当不时刻对应的视点 & & & &float secRot = mTime.second * 6; & & & &float minRot = mTime.minute * 6 + 6 * mTime.second / 60F; & & & &float hrRot = (mTime.hour % 12) * 30 + 30 * minRot / 360F; & & & &Log.d(TAG, "hrRot=" + hrRot + ",minRot=" + minRot + ",secRot=" + secRot); & & & &// 画指针 & & & &Paint paintHour = new Paint(); & & & &paintHour.setStrokeWidth(20); & & & &Paint paintMinute = new Paint(); & & & &paintMinute.setStrokeWidth(10); & & & &Paint paintSecond = new Paint(); & & & &paintSecond.setStrokeWidth(5); & & & &canvas.save(); & & & &// 时针 & & & &canvas.rotate(hrRot, mWidth / 2, mHeight / 2); & & & &canvas.drawLine(mWidth / 2, mHeight / 2, mWidth / 2, mHeight / 2 - mWidth / 2 + 320, & & & & & & & &paintHour); & & & &canvas.rotate(-hrRot, mWidth / 2, mHeight / 2); & & & &// 分针 & & & &canvas.rotate(minRot, mWidth / 2, mHeight / 2); & & & &canvas.drawLine(mWidth / 2, mHeight / 2, mWidth / 2, mHeight / 2 - mWidth / 2 + 230, & & & & & & & &paintMinute); & & & &canvas.rotate(-minRot, mWidth / 2, mHeight / 2); & & & &// 秒针 & & & &canvas.rotate(secRot, mWidth / 2, mHeight / 2); & & & &canvas.drawLine(mWidth / 2, mHeight / 2, mWidth / 2, mHeight / 2 - mWidth / 2 + 150, & & & & & & & &paintSecond); & & & &canvas.rotate(-secRot, mWidth / 2, mHeight / 2); & & & &canvas.restore(); & &}二. 每一秒改写界面完结了榜首步往后,咱们要做的便是完结每隔1s去改写界面。这个完结很简略,经过Handler就能够完结。首要在自界说ViewClock中增加一个改写界面的接口:public void refreshClock() { & &postInvalidate();}增加接口往后,咱们再在Activity中运用Handler完结1s调用一次该接口即可: & &@Override & &protected void onCreate(Bundle savedInstanceState) { & & & &super.onCreate(savedInstanceState); & & & &mClock = new Clock(this); & & & &mHandler = new Handler(); & & & &mHandler.post(updateTime); & & & &setContentView(mClock); & &} & &private Runnable updateTime = new Runnable() { & & & &public void run() { & & & & & &mClock.refreshClock(); & & & & & &mHandler.postDelayed(updateTime, 1000); & & & &} & &};作业作用图如下所示:(图二)经过以上办法,咱们运用Android自界说View完结了一个模仿时钟了。
关键字: 模拟,时钟,实现,自定义,这个,指针,仪表盘,时间,表盘,问题,静止
看过本文的人还看过
人气:1334 更新:
人气:656 更新:
人气:536 更新:
人气:481 更新:
Linux技巧的更多文章
大家在看 ^+^
推荐阅读 ^o^
『中國邊疆研究與歷史書寫』研討會日程安排
过真伤己、过直伤人
中国人走得太远太快,灵魂跟不上了(深度好文)
他说第二,有人敢说第一吗?
猜你喜欢 ^_^
24小时热门文章
微信扫一扫
分享到朋友圈还没关注下载之家微信 的亲们赶紧扫一扫左侧的二维码吧!
亲们赶紧扫一扫关注下载之家的微信与我们互动吧!
微信公众号新浪微博
拼音索引:该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
可以用一个png的指针作为资源,放到drawable里面然后加载到view里面,当需要改变角度的时候,将 canvas 保存一下,然后选择相应的角度,然后再把 canvas 恢复回来,这样子就实现了图像的转动。至于为什么直接转动图像,原因是图像计算的效率和成本不如直接旋转画布低,所以 google 官方也推荐使用旋转画布的方法来旋转某个图像。
至于说是用代码画指针的话,也是一样,总是画一个水平的或者垂直的指针,然后根据需要旋转画布即可。
// 保存一下画布,便于之后恢复canvas.save();// 整个画布旋转 45°canvas.rotate(45);// 在旋转了 45° 的画布上面话一个指针canvas.drawBitmap(arrorBitmap, 100, 100, null);// 恢复画布未旋转之前的样子,这样就能将 指针 在画布上面旋转 45° 喽canvas.restore();
祝好,斑驳敬上
android本身自带有时钟控件,包括数字时钟DigtalClock和模拟时钟AnalogClock,一般来说就足够了。如果你非要自定制的话,方法是自己写一个View,上面的所有图标都自己画,这样就可以实现个性定制,至于旋转,只要在程序里面控制如何显示指针图片就可以了。
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (5876) 次当前【安卓手机】
全部安卓手机安卓平板安卓电视iPhoneiPad其他
当前位置:>>>模拟时钟安卓版
如果您正把手机连着电脑,欢迎点击
热门排行榜
9000万+人在玩9000万+人在玩1000万+人在玩1000万+人在玩100万+人在玩100万+人在玩
模拟时钟app相关推荐
发现该应用有下载安装使用错误或恶意扣费携带病毒,请
版权所有 京ICP备号-5
京公网安备 50 备

我要回帖

更多关于 安卓模拟时钟 的文章

 

随机推荐