Android 使用View的旋转实现漂亮的动画效果

一、点击Icon,水平翻转360°后再打开应用效果:

Android 使用View的旋转实现漂亮的动画效果_第1张图片

class MyOnClickListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.layoutMap:
            openAfterRotate(v);
            break;

        case R.id.layoutMusic:
            openAfterRotate(v);
            break;

        case R.id.layoutTongting:
            openAfterRotate(v);
            break;

        default:
            break;
        }
    }
}
/**
 * 卡片水平旋转360度后再打开应用
 * 
 * @param view
 */
private void openAfterRotate(final View view) {
    final int[] degreeRotate = { 0 };
    new Thread(new Runnable() {
        @Override
        public void run() {
            for (int i = 1; i <= 36; i++) {
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                degreeRotate[0] = i * 10;
                mainHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        view.setRotationY(degreeRotate[0]);
                    }
                });
                if (i == 36) {
                    switch (view.getId()) {
                    case R.id.layoutMusic:
                        OpenUtil.openModule(MainActivity.this,
                                MODULE_TYPE.MUSIC);
                        break;

                    case R.id.layoutTongting:
                        OpenUtil.openModule(MainActivity.this,
                                MODULE_TYPE.TONG_TING);
                        break;

                    case R.id.layoutMap:
                        OpenUtil.openModule(MainActivity.this,
                                MODULE_TYPE.NAVI_GAODE_CAR_MIRROR);
                        break;

                    default:
                        break;
                    }

                }
            }
        }
    }).start();
}

二、ViewPager翻页过程中渐进压缩特效:

viewPager.setOnSwipeListener(new TransitionViewPager.OnSwipeListener() {
    @Override
    public void onSwipe(int positionOffset) {
        setPageRotationByOffset(positionOffset);
    }
});
private void setPageRotationByOffset(int positionOffset) {
    int degree = (int) (45 * ((float) positionOffset / 1280));
    if (degree != nowDegree) {
        if (degree == 0 && Math.abs(nowDegree - degree) > 20) {
            new Thread(new Runnable() {

                @Override
                public void run() {
                    for (int i = nowDegree; i > 0; i--) {
                        try {
                            Thread.sleep(5);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        mainHandler.post(new Runnable() {

                            @Override
                            public void run() {
                                setPageRotationByDegree(--nowDegree);
                            }
                        });
                    }

                }
            }).start();
        } else
            setPageRotationByDegree(degree);
    }
}

private int nowDegree = 0;

private void setPageRotationByDegree(int degree) {
    MyLog.i("setPageRotationByOffset.DEGREE:" + degree);
    if (degree < 0)
        degree = 0;
    nowDegree = degree;
    if (isLoadA) {
        layoutTongting.setRotationX((int) (degree * 3.0));
        layoutMap.setRotationX((int) (degree * 2.5));
        layoutRecord.setRotationX((int) (degree * 2.0));
        layoutPhone.setRotationX((int) (degree * 1.5));
    }
    if (isLoadB) {
        layoutEDog.setRotationX((int) (degree * 0.8));
        layoutXimalaya.setRotationX((int) (degree * 0.7));
        layoutFMTransmit.setRotationX((int) (degree * 0.6));
        layoutYiKa.setRotationX((int) (degree * 0.5));
        layoutReplay.setRotationX((int) (degree * 0.4));
        layoutMoreApp.setRotationX((int) (degree * 0.3));
    }
}

你可能感兴趣的:(Android,view旋转,动画,android,翻转)