android如何实现扑克卡片翻转
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了android如何实现扑克卡片翻转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android如何实现扑克卡片翻转文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
网络安全去当兵
学计算机网络技术做什么工作
网络安全信息系统评标
jq获取当前点击数据库
软件开发中poco含义
做嵌入式和软件开发
德州市网络安全和信息化专家
银行网络安全重要吗
中通吉网络技术咋样
厦门中网通网络技术
oracle数据库表设计
我的世界服务器锁定别人基地坐标
工业互联网是软件开发么
顺义服务器回收门店
北京金融软件开发公司有哪些
数据库中修改表中时间
bt 软件开发
取消服务器管理员密码
车载服务器是什么问题
包商银行软件开发待遇
服务器不启动
7016恢复数据库
赤子城网络技术有限公司济南
支付宝网络安全素材
怎么进入unix系统中的数据库
服务器防护墙设置微信访问
杭州的网络安全发展
plsql记录的数据库密码
我的世界摧毁服务器指令
筑客网络技术有限公司