欢迎光临散文网 会员登陆 & 注册

DEVLOG 9.10 使用Camera实现可以随着手势转动的View

2021-09-10 11:03 作者:房顶上的铝皮水塔  | 我要投稿

开发过程中的随笔---

代码仓库连接:

https://github.com/kolibreath/Practices/blob/master/RotateTextView.kt

实现了一个随着手势进行转动的View


困难点和遇到的问题:

Q1. 如何围绕中心进行旋转

A1. 使用Camera类实现。Camera类使用的时候需要格外注意

  1. 这个类的坐标系和View和手机坐标系不同,具体可以看看扔物线的视频https://www.bilibili.com/video/BV1Xx411H7HE?zw。Camera在Z轴上确定了一个虚拟相机,在旋转的时候会根据物体投影到XoY平面上的内容进行绘制。

  2. Camera和Canvas的操作顺序都是【从下往上】的,这主要是方便理解

canvas先移动-mCenterX和-mCenterY到原点,然后再移动正值还原。并且之后都要进行restore

3. 其实Matrix在使用的时候也需要进行reset。Canvas可以获取到自身的Matrix对象,如果没有设置就是一个单位矩阵。


下一步结合ViewDragHelper实现ViewGroup对于View的控制。因为在事件分发的过程中,会检测当前的MotionEvent的x y 是否触碰到对应的View。但是小米天气的主页面在触摸大的ViewGroup时就回翻转字体+平移下面的View。这里使用ViewGroup拦截不好实现。

DEVLOG 9.10 使用Camera实现可以随着手势转动的View的评论 (共 条)

分享到微博请遵守国家法律