千家信息网

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如何实现扑克卡片翻转"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0