android如何实现扑克卡片翻转
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章主要介绍了android如何实现扑克卡片翻转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android如何实现扑克卡片翻转文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2024年11月17日android如何实现扑克卡片翻转
这篇文章主要介绍了android如何实现扑克卡片翻转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android如何实现扑克卡片翻转文章都会有所收获,下面我们一起来看看吧。
还需额外注意一点:这是刚刚才发现的问题,在主activity中,正反面那个xml文件放在后面就会优先默认显示那个xml文件,所以,如果我需要一打开app就看到正面的话,那么正面xml文件需要放到反面xml文件的下面,就是
根据代码的逻辑线走,则是接下来的两个layout:
这两个FrameLayout也是需要写id的,之后会用到。
cell_card_back.xml:
cell_card_front.xml:
继续顺着上面两个布局的逻辑线来走,就需要用到两个Drawable的文件作为背景图,所以接着看drawable文件:
rectangle_back.xml:
大概是一个黑边红底色带圆角的卡片界面
rectangle_front.xml:
大概是一个黑边灰底色带圆角的卡片界面
走完界面UI的逻辑线之后,就去看Java代码,发现需要两个Animator,于是在res文件下创建一个animator资源文件夹,在下创建两个动画文件:
anim-in.xml:
这是一个从左边进入的动画,一开始是隐藏的,逆向旋转,当旋转到一半时,显示卡片
anim_out.xml:
这是一个右边出去的动画,旋转180度,旋转到一半时,卡片就消失了。
接着看Java代码:
MainActivity:
public class MainActivity extends AppCompatActivity { @Bind(R.id.main_fl_card_back) FrameLayout mFlCardBack; @Bind(R.id.main_fl_card_front) FrameLayout mFlCardFront; @Bind(R.id.main_fl_container) FrameLayout mFlContainer; private AnimatorSet mLeftInSet; private AnimatorSet mRightOutSet; private boolean mIsShowBack; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setAnimation();//设置动画 setCameraDistance();//设置镜头距离,在这里不是太懂 } private void setAnimation() { //mLeftInSet是左边进入的动画 mLeftInSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.anim_in); //mRightOutSet是右边出去的动画 mRightOutSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.anim_out); //点击事件 //通过ListenerAdapter就不需重写所有方法,只需写需要写的方法 mRightOutSet.addListener(new AnimatorListenerAdapter() { //动画开始时候 @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); mFlContainer.setClickable(false); } }); //动画结束的时候 mLeftInSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); mFlContainer.setClickable(true);//主布局中framelayouy的就允许你去点击了 } }); }//一直不是很懂的设置镜头距离,//帖子上的注释写着:改变视角距离,贴近屏幕 private void setCameraDistance() { int distance = 16000; float scale = getResources().getDisplayMetrics().density*distance; mFlCardFront.setCameraDistance(scale);//设置距离 mFlCardBack.setCameraDistance(scale);//设置距离 }//这是主Framelayout的点击方法 public void flipCard(View view){ //mIsShowBack可以理解为互斥,所以为boolean if(!mIsShowBack){ //右出动画设置在正面卡片界面 mRightOutSet.setTarget(mFlCardFront); //左入动画设置在反面卡片界面 mLeftInSet.setTarget(mFlCardBack); //开始动画 mRightOutSet.start(); mLeftInSet.start(); mIsShowBack = true; }else { //右出动画设置在卡片背面界面 mRightOutSet.setTarget(mFlCardBack); //左入动画设置在卡片正面界面 mLeftInSet.setTarget(mFlCardFront); mRightOutSet.start(); mLeftInSet.start(); mIsShowBack = false; } } //这一点我一直没想到,还可以在onDestroy方法中解绑ButterKnife protected void onDestroy(){ super.onDestroy(); ButterKnife.unbind(this); }}
关于"android如何实现扑克卡片翻转"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"android如何实现扑克卡片翻转"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
卡片
动画
文件
界面
两个
扑克
方法
正面
这是
代码
知识
逻辑
内容
反面
右边
圆角
布局
底色
时候
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
塞班软件开发难吗
部署计算机管理与服务器坏境
福州oa软件开发
测试数据库的步骤
服务器散热片尺寸
网络安全等级保护3级要求
杨紫一起关注网络安全
互联网酷炫科技有限公司
顺义服务器回收价格查询
如何找到服务器后面的ip
中标麒麟安装数据库驱动
软件开发 功能划分 越详细
国家网络安全基本面分析
请检查数据库是否正确
企业网络安全事故
三合理一规范内容 网络安全
数据库系统概论王珊考试题
数据库接口实例化
金蝶服务器存在但没有套账信息
计算机网络技术实习生招聘
网络安全拓扑框架
音乐网站数据库设计的整体结构图
福州oa软件开发
什么是网络安全域
xp打印服务器
dnf私服数据库连接失败
江苏四大开源分布式存储数据库
人社网络安全规定
济南恒锐网络技术有限公司
数据库要考虑啥