Android自定义控件--图片3D翻转(其他控件或布局可以)
这是一个基础控件,粘贴过去就可以了
import android.graphics.Camera;
import android.graphics.Matrix;
import android.view.animation.Animation;
import android.view.animation.Transformation;public class Rotate3dAnimation extends Animation {private final float mFromDegrees;private final float mEndDegrees;private float mDepthZ=400;private float mCenterX,mCenterY;private Camera mCamera;private boolean mReverse;public Rotate3dAnimation(float mFromDegrees, float mEndDegrees,boolean reverse) {this.mFromDegrees = mFromDegrees;this.mEndDegrees = mEndDegrees;this.mReverse = reverse;}@Overridepublic void initialize(int width, int height, int parentWidth, int parentHeight) {super.initialize(width, height, parentWidth, parentHeight);mCamera=new Camera();mCenterX=width/2;mCenterY=height/2;}@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) {float degrees=mFromDegrees+((mEndDegrees-mFromDegrees)*interpolatedTime);mCamera.save();float z;if (mReverse){z=mDepthZ*interpolatedTime;mCamera.translate(0.0f,0.0f,z);}else {z=mDepthZ*(1.0f-interpolatedTime);mCamera.translate(0.0f,0.0f,z);}final Matrix matrix=t.getMatrix();mCamera.rotateY(degrees);mCamera.getMatrix(matrix);mCamera.restore();matrix.preTranslate(-mCenterX,-mCenterY);matrix.postTranslate(mCenterX,mCenterY);super.applyTransformation(interpolatedTime, t);}
}
如果想使用它就这样写,而且还是优化之后,这里是先翻转90度后再翻转90度,就是翻转180度了,为什么分两次是因为 随着翻转的角度,图像会变得很大,看着不太舒服,要解释的话,要敲好多字,算了就这样了,有空再解释。
private void initOpenAnimation() {
//openAnimation 被定义成全局了,懒得粘贴了
//这是一个方法,这样使用它
//imageView.startAnimation(openAnimation);openAnimation = new Rotate3dAnimation(0, 90, true);openAnimation.setDuration(duration);openAnimation.setFillAfter(true);openAnimation.setInterpolator(new AccelerateInterpolator());openAnimation.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}
//翻转结束时@Overridepublic void onAnimationEnd(Animation animation) {Rotate3dAnimation rotate3dAnimation = new Rotate3dAnimation(90, 180, false);rotate3dAnimation.setDuration(duration);rotate3dAnimation.setFillAfter(true);rotate3dAnimation.setInterpolator(new DecelerateInterpolator());imageView.startAnimation(rotate3dAnimation);}@Overridepublic void onAnimationRepeat(Animation animation) {}});}
Android自定义控件--图片3D翻转(其他控件或布局可以)相关推荐
- Android自定义控件实战——下拉刷新控件终结者:PullToRefreshLayout
说到下拉刷新控件,网上版本有很多,很多软件也都有下拉刷新功能.有一个叫XListView的,我看别人用过,没看过是咋实现的,看这名字估计是继承自ListView修改的,不过效果看起来挺丑的,也没什么扩 ...
- Android Studio可视化时不能拖动控件至布局解决
我新建了布局xml文件后,把之前的布局删去,并自己写了新的布局后,发现不能在Design模式也就是可视化拖动组件到布局 查了很多地方也没有插个结果,然后我就看了一下我新写的布局和之前的布局有什么区别, ...
- Android自定义控件之轮播图控件
背景 最近要做一个轮播图的效果,网上看了几篇文章,基本上都能找到实现,效果还挺不错,但是在写的时候感觉每次都要单独去重新在Activity里写一堆代码.于是自己封装了一下.这里只是做了下封装成一个控件 ...
- android 控件高度和图片一样高,Android 根据图片宽高比例设置控件宽高
这个方式适用于一个界面少量图片. 主要的计算公式就是得到当前控件最大的显示宽度(高度),一般填充屏幕的话,就直接取屏幕的宽度了. 得到宽度除以图片宽除以高,也可以直接得到图片宽高的比例.如下公式 这种 ...
- Android自定义控件传送,使用 Leanback 传输控件
Leanback androidx 库中具有新的播放控件,可改善用户体验.对于视频应用,传输控件支持使用前进/后退控件进行视频拖动.拖动时,屏幕上会显示缩略图来帮助浏览视频. 该库中包含抽象类和开箱即 ...
- WPF 实现3D翻转倒计时控件~
WPF开发者QQ群: 340500857 由于微信群人数太多入群请添加小编微信号 yanjinhuawechat 或 W_Feng_aiQ 邀请入群 需备注WPF开发者 PS:有更好的 ...
- Android自定义组件——3D立体旋转控件
BingoIdea 一个3D立体切换的自定义ViewGroup demo,支持横向和纵向滑动翻转. 项目配置 在项目的build.gradle配置 allprojects {repositories ...
- Android自定义控件之3D上下翻页效果的倒计时控件
这是一个自定义的倒计时控件,具有3D上下翻页翻转效果.最近项目中需要做一个倒计时控件,需要和iOS端的效果保持一样.大致效果是这样的,如下图所示: 由于暂时还不会怎么样制作gif动态图,所以想看具体效 ...
- 让一个图片填满一个控件_如何在Android中实现一个全景图控件(二)
一.背景 在 如何在Android中实现一个全景图控件(一)中,介绍了项目的一些基本情况(有 demo 演示),如果项目对你有帮助,希望文章赏个赞,项目 star 一下. 项目地址:https://g ...
最新文章
- java字符串去掉空格
- java反射详解 (一)
- 观察多个线程同时运行|| 查看进程线程的方法——未完待续
- .net面试题大全,绝大部分面试题(有答案)
- ue4 运行禁用鼠标_[UE4] VS code使用LuaPanda断点调试
- django-url映射给函数给默认值
- 实现页面弹框背景虚化效果
- 【算法】剑指 Offer 56 - II. 数组中数字出现的次数 II 【重刷】
- 回网友:不用PPT怎么做咨询顾问?
- 让Win7系统屏幕来个大翻转
- PDF页码怎么设置?如何给PDF文件设置页码
- 【实用】关于Ubuntu下的对拍程序
- linux系统查看电脑cpu,linux系统怎么查看自己电脑的cpu位数
- 达里奥:我阅人无数,没有一个成功人士天赋异禀 |【经纬低调分享】
- Spring Boot 启动 出现异常The bean xxx could not be injected as a xx.xxxx because it is a JDK dynami
- 史上最小白之BM25详解与实现
- vue打包后dist目录直接打开index资源路径错误和css样式背景图路径问题
- 一个购房者的辛酸经历(纯属娱乐)
- Danmo 的学习之路(HTML——CSS)
- 第6课 Altium Designer20(AD20)+VESC6.4实战教程:绘制原理图3(北冥有鱼)
热门文章
- 201619101025刘洋
- Mac音效增强软件:Boom 3D
- nvm安装nodejs 运行use命令时报错exit status 1: ��û���㹻��Ȩ��ִ�д˲�����...
- SVG 画正六边形的进度条~奇奇怪怪的需求
- java数据结构之数组
- javaee学习之路(十五)JSP编程总结
- 推荐收藏,25条实用简洁的 Python 代码真香啊
- hr人力资源管理系统8项功能
- 云终端计算机系统,云终端是什么?
- c++rpg黑框游戏_RPG游戏 C++源码 文字RPG游戏