Android对角线旋转动画,重写Animation
2016-04-08 17:15
585 查看
之前我写了一个对角线旋转的动画,但是那个需要继承View重写onDraw,感觉耦合度太高。
最近又看了一下Animation,发现可以不再onDraw里面重写绘制的流程,重写Animation.applyTransformation(float interpolatedTime, Transformation t)在t.getMatrix()获取矩阵来进行变换。优点是降低了耦合,减少了工作量;缺点是不能切割成很多个方块,只能一整个view一起变动。
代码Animation.applyTransformation
这两个的作用刚开始是图形如图
这时还是沿着X轴翻转,只不过图逆时针旋转45度
然后这时在加上顺时针旋转45度
变成了
然后就变成了对角线旋转了,这里我们主要用到的是矩阵Matrix来进行变换。
然后调用view.startAnimation就可以了。
完整源码github
最近又看了一下Animation,发现可以不再onDraw里面重写绘制的流程,重写Animation.applyTransformation(float interpolatedTime, Transformation t)在t.getMatrix()获取矩阵来进行变换。优点是降低了耦合,减少了工作量;缺点是不能切割成很多个方块,只能一整个view一起变动。
代码Animation.applyTransformation
matrix3.postRotate(45);//顺时针旋转45度
protected void applyTransformation(float interpolatedTime, Transformation t) { Matrix matrix = t.getMatrix(); float deg = mFromDegrees+interpolatedTime * mToDegrees; mCamera.save(); mCamera.rotateX(deg); mCamera.getMatrix(matrix); mCamera.restore(); matrix2.postRotate(-45);//逆时针旋转45度 matrix2.setConcat(matrix, matrix2);//图逆时针旋转45度和X轴旋转相加 matrix2.setConcat(matrix3, matrix2);//在之前的基础上图和X轴都顺时针旋转45度 matrix.set(matrix2); matrix2.reset(); // 通过pre方法设置矩阵作用前的偏移量来改变旋转中心 matrix.preTranslate(-mCenterWidth, -mCenterHeight);// 在旋转之前开始位移动画 matrix.postTranslate(mCenterWidth, mCenterHeight);// 在旋转之后开始位移动画 }这里我解释一下
matrix2.setConcat(matrix, matrix2);//图逆时针旋转45度和X轴旋转相加 matrix2.setConcat(matrix3, matrix2);//在之前的基础上图和X轴都顺时针旋转45度
这两个的作用刚开始是图形如图
matrix2.setConcat(matrix, matrix2);//图逆时针旋转45度和X轴旋转相加加上这步以后图就变成这样
这时还是沿着X轴翻转,只不过图逆时针旋转45度
然后这时在加上顺时针旋转45度
matrix2.setConcat(matrix3, matrix2);//在之前的基础上图和X轴都顺时针旋转45度
变成了
然后就变成了对角线旋转了,这里我们主要用到的是矩阵Matrix来进行变换。
然后调用view.startAnimation就可以了。
完整源码github
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories