【问题标题】:Creating a Flip Card animation in android studio using java使用java在android studio中创建翻转卡动画
【发布时间】:2021-09-30 17:34:55
【问题描述】:

我正在学习使用 android studio 和 Java 进行移动开发。我试图实现一个翻转卡片动画来构建一个类似游戏的翻转卡片记忆(没有库)并且没有扩展到另一个活动。我基本上是使用一个函数来翻转图像然后替换它,但是图像被替换然后它旋转。在下面找到我工作的代码。该功能稍后将支持如果翻转的2张图像不匹配,则将图像倒回,如果它们匹配,则将分数加1。

    public void flipCard(View view){
         ImageView card = (ImageView) view;
         card.animate().rotationYBy(180);
         card.SetImageResource(R.drawable.ex1);
} 

 

【问题讨论】:

    标签: java android


    【解决方案1】:

    要在翻转动画完成后替换图像,你必须使用ViewPropertyAnimatorwithEndAction(Runnable runnable)方法。

    示例如下:

    public void flipCard(View view){
        ImageView card = (ImageView) view;
        card.setImageResource(0);
        card.animate().rotationYBy(180).withEndAction(new Runnable(){
            @Override
            public void run() {
                card.setImageResource(android.R.drawable.ic_dialog_alert);
            }
        });
    }
    

    要在一定时间后恢复这两个图像,您可以更改rotationYBy to -180,您可以使用setStartDelay 方法在一定时间(以毫秒为单位)后启动动画。

    示例如下:

    public void flipCardToInitialState(View view){
        ImageView card = (ImageView) view;
        card.animate().rotationYBy(-180).setStartDelay(1000).withEndAction(new Runnable(){
            @Override
            public void run() {
                card.setImageResource(0);
            }
        });
    }
    

    如果两个图像不匹配,您可以使用它,如下所示:

    flipCardToInitialState(imageView1);
    flipCardToInitialState(imageView2);
    

    您也可以使用Handler().postDelayed 在一定时间(以毫秒为单位)后将两个图像翻转回来:

    //flip the 2 images
    flipCard(imageView1);
    flipCard(imageView2);
    
    //and if the don't match flip the back after a certain of time in milliseconds
    if(theyDontMatch)
    {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        flipCardToInitialState(imageView1);
                        flipCardToInitialState(imageView2);
                    }
                }, 2000); //flip them back after 2 seconds delay
            }
        });
    }
    

    【讨论】:

    • 有什么办法可以让 2 个翻转的图像在不匹配的情况下在一定时间后恢复原状。谢谢!
    • 当然,您可以将 2 张图片还原回来检查更新的答案。
    • 好的,非常感谢!我会尝试修正我的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2018-02-17
    • 2012-01-24
    • 2013-11-22
    • 1970-01-01
    相关资源
    最近更新 更多