DEVLOG 9.10 使用Camera实现可以随着手势转动的View
开发过程中的随笔---
代码仓库连接:
https://github.com/kolibreath/Practices/blob/master/RotateTextView.kt
实现了一个随着手势进行转动的View

困难点和遇到的问题:
Q1. 如何围绕中心进行旋转
A1. 使用Camera类实现。Camera类使用的时候需要格外注意
这个类的坐标系和View和手机坐标系不同,具体可以看看扔物线的视频https://www.bilibili.com/video/BV1Xx411H7HE?zw。Camera在Z轴上确定了一个虚拟相机,在旋转的时候会根据物体投影到XoY平面上的内容进行绘制。
Camera和Canvas的操作顺序都是【从下往上】的,这主要是方便理解

canvas先移动-mCenterX和-mCenterY到原点,然后再移动正值还原。并且之后都要进行restore
3. 其实Matrix在使用的时候也需要进行reset。Canvas可以获取到自身的Matrix对象,如果没有设置就是一个单位矩阵。
下一步结合ViewDragHelper实现ViewGroup对于View的控制。因为在事件分发的过程中,会检测当前的MotionEvent的x y 是否触碰到对应的View。但是小米天气的主页面在触摸大的ViewGroup时就回翻转字体+平移下面的View。这里使用ViewGroup拦截不好实现。