安卓项目--2D图片翻转

实行思路:插入两张大小一样的图片,刚开始的时候显示第一张图片,但鼠标点击的时候,第一张图片使用ScaleAnimation类进行缩小动画,缩小动画完成后,第二张图片显示并使用ScaleAnimation类进行放大动画。

public class MainActivity extends Activity {


    private ImageView imageA;
    private ImageView imageB;

//使用ScaleAnimation类
    private ScaleAnimation sato0 = new ScaleAnimation(1,0,1,1,Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);

    private ScaleAnimation sato1 = new ScaleAnimation(0,1,1,1,Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        findViewById(R.id.root).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if(imageA.getVisibility() == View.VISIBLE) {
                    imageA.startAnimation(sato0);
                } else {
                    imageB.startAnimation(sato0);
                }
            }   
        });

    }
        private void showImageA() {
        //A图显示,B图不显示
            imageA.setVisibility(View.VISIBLE);
            imageB.setVisibility(View.INVISIBLE);
        }

        private void showImageB() {
        //B图不显示,A图显示
            imageA.setVisibility(View.INVISIBLE);
            imageB.setVisibility(View.VISIBLE);
        }

        private void initView() {
            //先找到两个对象
            imageA = (ImageView) findViewById(R.id.ivA);
            imageB = (ImageView) findViewById(R.id.ivB);

            //
            showImageA();

            //持续时间
            sato0.setDuration(500);
            sato1.setDuration(500);

            //当第一个动画完成,执行第二个
            sato0.setAnimationListener(new AnimationListener() {
                @Override
                public void onAnimationEnd(Animation arg0) {
                    // TODO Auto-generated method stub
                    //判断图A是否显示
                    if(imageA.getVisibility() == View.VISIBLE) {
                        //把第一个动画动作清空
                        imageA.setAnimation(null);
                        //显示第二个图
                        showImageB();
                        //加载第二张图的动画
                        imageB.startAnimation(sato1);
                    } else {
                        //把第二个动画动作清空
                        imageB.setAnimation(null);
                        //显示第一个图
                        showImageA();
                        //加载第一张图的动画
                        imageA.startAnimation(sato1);
                    }
                }

                @Override
                public void onAnimationRepeat(Animation arg0) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationStart(Animation arg0) {
                    // TODO Auto-generated method stub

                }

            });
        }

XML中插入两张图片,用来翻转。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/root"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/ivA"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/b"
        ></ImageView>

    <ImageView
        android:id="@+id/ivB"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/c" 
        ></ImageView>
</RelativeLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值