1. 程式人生 > >屬性動畫的基本使用

屬性動畫的基本使用

動畫分為:幀動畫,補間動畫,屬性動畫

屬性動畫實現的效果與補間動畫非常相似,
最大的區別:屬性動畫真實的改變了控制元件的屬性,而補間動畫只是幻影
屬性動畫是在Android3.0以後才出現,所以要高於API11的情況下

下面是一些按鈕的點選事件:佈局就不寫了,比較簡單

 @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.tranlate:    //平移
                ObjectAnimator translationY = ObjectAnimator.ofFloat(image, "translationY", new float[]{10f, 20f, 50f});
                //時長
                translationY.setDuration(2000);
                //執行模式
                translationY.setRepeatMode(ObjectAnimator.RESTART);
                //重複次數
                translationY.setRepeatCount(1);
                //開始
                translationY.start();
                
                break;
            case R.id.rotate:    //旋轉
                ObjectAnimator rotationX = ObjectAnimator.ofFloat(image, "rotationX", 90f, 180f, 360f);
                rotationX.setDuration(3000);
                rotationX.setRepeatMode(ObjectAnimator.REVERSE);
                rotationX.setRepeatCount(2);
                rotationX.start();
                break;
            case R.id.alpha:  //漸變  0.0是完全透明  
                ObjectAnimator alpha = ObjectAnimator.ofFloat(image, "alpha", 0.0f, 1.0f);
                alpha.setDuration(2000);
                alpha.setRepeatCount(3);
                alpha.setRepeatMode(ObjectAnimator.REVERSE);
                alpha.start();
                break;
            case R.id.scale://伸縮
                ObjectAnimator scale = ObjectAnimator.ofFloat(image, "scaleX", 1f,4f,5f);
                scale .setDuration(2000);
                scale .setRepeatCount(3);
                scale .setRepeatMode(ObjectAnimator.REVERSE);
                scale .start();
                break;
            case R.id.animatorset://動畫集合
                AnimatorSet animatorSet = new AnimatorSet();
                ObjectAnimator sc = ObjectAnimator.ofFloat(image, "scaleX", 1f,4f,5f);
                sc.setDuration(2000);
                ObjectAnimator rotation = ObjectAnimator.ofFloat(image, "rotationX", 90f, 180f, 360f);
                rotation.setDuration(2000);
                animatorSet.playTogether(sc,rotation);
                animatorSet.start();
                break;
        }
    }