• Android通过动画实现翻牌效果


    实现效果如下:

     

    实现原理:准备好两张图片,一张作为正面,一张作为背面,当点击图片的正面后,正面的图片的横坐标x进行收缩,直到缩为0%,当正面图片的横坐标x收缩为0之后图片切换为作为背面图片,背面图片的横坐标x由x放大到100%。通过两个动画的交替使用实现翻牌效果

    步骤一:定义两个动画文件

    收缩动画:back.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="2000">
    
    
        <scale
            android:fromXScale="100%"
            android:fromYScale="100%"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="0%"
            android:toYScale="100%"></scale>
    
    
    </set>
    

    放大动画:font.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="2000">
    
        <scale
            android:fromXScale="0%"
            android:fromYScale="100%"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="100%"
            android:toYScale="100%"></scale>
    
    
    </set>
    

    布局文件:activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
    
    
        <ImageView
            android:id="@+id/ima"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@drawable/meinv" />
    
    
    </LinearLayout>
    

    java实现代码:

    package com.contentprovide.liuliu.dabian_gridview;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity {
    
        ImageView ima;
    
        Animation animation;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            ima = (ImageView) findViewById(R.id.ima);
    
    
            animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.back);
    
    
            ima.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    
    //                调用setAnimationListener方法对动画的实现过程进行监听
                    animation.setAnimationListener(new Animation.AnimationListener() {
                        @Override
                        public void onAnimationStart(Animation animation) {
    
                        }
    
                        @Override
                        public void onAnimationEnd(Animation animation) {//当动画结束时需要执行的行为
    
                            animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.font);
                            ima.setBackgroundResource(R.drawable.ruhua);
                            ima.startAnimation(animation);
    
                        }
    
                        @Override
                        public void onAnimationRepeat(Animation animation) {
    
                        }
                    });
                    ima.startAnimation(animation);
                }
            });
    
    
        }
    }
    
  • 相关阅读:
    排序方法之冒泡排序
    JAVA浮点数的范围 和精度
    史上最全的SPRING注解
    ETL应用:使用Pro*C写入文件信息入库的方法
    MySQL查询优化器工作原理解析
    php通过Mysqli和PDO连接mysql数据详解
    PHP实现各种经典算法
    http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
    程序中使用ajax时,type为put,或者delete时在 IIS上没效果,发生HTTP Error 405.0
    linux定时任务crontab
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/8310760.html
Copyright © 2020-2023  润新知