Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android動畫繪制者Animator與LayoutAnimator

Android動畫繪制者Animator與LayoutAnimator

編輯:關於Android編程

概述:

與Android的Animation控件相比,Animator與LayoutAnimator處理後的控件完成動畫效果後不會回復原狀。Animator只使用與View對象,和Animation類似,Animator也能通過xml定義,需要用objectAnimator來定義各種動畫效果。
LayoutView常用於給控件的添加刪除增加一些特殊效果,如淡入淡出等。

Demo

Animator

Animator動態方式:

        //改變大小
        ObjectAnimator.ofFloat(mImageViewAnim,scaleX,0.0f,1.0f).setDuration(2000).start();

Animator靜態方式,需要在res目錄下新建一個animator文件夾,在此文件夾裡新建一個xml文件,我的是scale:



    

    

    

在代碼中加載R.animator.scale資源

        AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(getApplicationContext(),R.animator.scale);
        set.setTarget(view);//animator將永久改變view的狀態
        set.start();

LayoutAnimator

public class LayoutAnimatorActivity extends Activity {
    private Button mButtonAdd;
    private LinearLayout mLinearLayout;
    private int count;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_animator);

        mButtonAdd = (Button) findViewById(R.id.button_addAnimator);
        mLinearLayout = (LinearLayout) findViewById(R.id.linear_layout);

    //定義一個LayoutTransition,用於設置各種動畫效果
        LayoutTransition transition = new LayoutTransition();
        //
        transition.getDuration(2000);
        //當子控件被添加後出現時,動畫效果是靜態實現的R.animator.scale
        transition.setAnimator(LayoutTransition.APPEARING, AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.scale));
//當CHANGE_APPEARING是,調用默認狀態改變的動畫效果       transition.setAnimator(LayoutTransition.CHANGE_APPEARING,transition.getAnimator(
                LayoutTransition.CHANGE_APPEARING));
//當子控件消失時,調用默認的消失的動畫效果          transition.setAnimator(LayoutTransition.DISAPPEARING,transition.getAnimator(
                LayoutTransition.DISAPPEARING));
//當CHANGE_APPEARING是,調用默認的消失時狀態改變的動畫效果         transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING,transition.getAnimator(
                LayoutTransition.CHANGE_DISAPPEARING));
        mLinearLayout.setLayoutTransition(transition);
        mButtonAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                count++;
                Button btn = new Button(getApplicationContext());
                //LayoutParams類是用於child view(子視圖) 向 parent view(父視圖)傳達自己各種屬性的容器
                ViewGroup.LayoutParams params =
                        new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                btn.setLayoutParams(params);
                btn.setText(按鈕 + count);
                //設置btn的初始尺寸大小
                btn.setScaleX(0f);
                btn.setScaleY(0f);
                //給要新添加的Button類子控件加點擊事件:點擊刪除自己
                btn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mLinearLayout.removeView(v);
                    }
                });
                //在mLinearLayout中添加這個子控件
                mLinearLayout.addView(btn);

            }
        });
    }
}

結果演示:
這裡寫圖片描述

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved