Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中補間動畫效果演示

Android中補間動畫效果演示

編輯:關於Android編程

一、補間動畫(即view動畫)
1.透明    AlphaAnim
2.旋轉    RotateAnim
3.縮放    ScaleAnim
4.位移   TranslateAnim
原理:動畫效果不會改變控件的真實坐標位置

布局文件:activity_main.xml

 




    

MainActrivity.java

1> 定義布局文件中的幾個控件

	private Button btn_touming;
	private Button btn_suofang;
	private Button btn_xuanzhuan;
	private Button btn_weiyi;
	private Button btn_yiqi;
	private ImageView iv_show;

2> 在OnCreate方法中進行初始
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.activity_main);
        btn_touming = (Button)findViewById(R.id.btn_touming);
        btn_suofang = (Button)findViewById(R.id.btn_suofang);
        btn_xuanzhuan = (Button)findViewById(R.id.btn_xuanzhuan);
        btn_weiyi = (Button)findViewById(R.id.btn_weiyi);
        btn_yiqi = (Button)findViewById(R.id.btn_yiqi);
        iv_show = (ImageView)findViewById(R.id.iv_show);
        
        btn_touming.setOnClickListener(this);
        btn_suofang.setOnClickListener(this);
        btn_xuanzhuan.setOnClickListener(this);
        btn_weiyi.setOnClickListener(this);
        btn_yiqi.setOnClickListener(this);
    }

3> 實現OnClick事件
@Override
    public void onClick(View v) {
    	
    	switch(v.getId()){
	    	case R.id.btn_touming:
	    	{
	    		//透明
	    		AlphaAnimation aa = new AlphaAnimation(1.0f,0.0f);
	    		aa.setDuration(2000);//設置執行時間
	    		aa.setRepeatCount(1);//設置動畫重復次數
	    	    aa.setRepeatMode(Animation.REVERSE);//反向執行
	    		iv_show.startAnimation(aa);//執行動畫
	    		break;
	    	}
	    	case R.id.btn_xuanzhuan:
	    	{
	    		//旋轉
	    		//RotateAnimation ra = new RotateAnimation(0,360);//默認是以圖片左上角的坐標進行旋轉
	    		RotateAnimation ra = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//後面的參數進行指定坐標以自己坐標為屏幕寬的一半和屏幕高的一半為坐標進行旋轉
	    		ra.setDuration(2000);//設置執行時間
	    		ra.setRepeatCount(1);//設置動畫重復次數
	    		ra.setRepeatMode(Animation.REVERSE);//反向執行
	    		iv_show.startAnimation(ra);//執行動畫
	    		break;
	    	}
	    	case R.id.btn_suofang:
	    	{
	    		//縮放
	    		ScaleAnimation sa = new ScaleAnimation(1.0f,2.0f,1.0f,2.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
	    		sa.setDuration(2000);//設置執行時間
	    		sa.setRepeatCount(1);//設置動畫重復次數
	    		sa.setRepeatMode(Animation.REVERSE);//反向執行
	    		iv_show.startAnimation(sa);//執行動畫
	    		
	    		break;
	    	}
	    	case R.id.btn_weiyi:
	    	{
	    		//位移
	    		TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0.2f);
	    		ta.setDuration(2000);//設置執行時間
	    		ta.setRepeatCount(1);//設置動畫重復次數
	    		ta.setRepeatMode(Animation.REVERSE);//反向執行
	    		ta.setFillAfter(true);
	    		iv_show.startAnimation(ta);//執行動畫
	    		break;
	    	}
	    	case R.id.btn_yiqi:
	    	{
	    		AnimationSet set = new AnimationSet(false);
	    		
	    		//以上幾種一起執行
	    		AlphaAnimation aa = new AlphaAnimation(1.0f,0.0f);
	    		aa.setDuration(2000);//設置執行時間
	    		aa.setRepeatCount(1);//設置動畫重復次數
	    	    aa.setRepeatMode(Animation.REVERSE);//反向執行
	    		RotateAnimation ra = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//後面的參數進行指定坐標以自己坐標為屏幕寬的一半和屏幕高的一半為坐標進行旋轉
	    		ra.setDuration(2000);//設置執行時間
	    		ra.setRepeatCount(1);//設置動畫重復次數
	    		ra.setRepeatMode(Animation.REVERSE);//反向執行
	    		ScaleAnimation sa = new ScaleAnimation(1.0f,2.0f,1.0f,2.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
	    		sa.setDuration(2000);//設置執行時間
	    		sa.setRepeatCount(1);//設置動畫重復次數
	    		sa.setRepeatMode(Animation.REVERSE);//反向執行
	    		TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0.2f);
	    		ta.setDuration(2000);//設置執行時間
	    		ta.setRepeatCount(1);//設置動畫重復次數
	    		ta.setRepeatMode(Animation.REVERSE);//反向執行
	    		ta.setFillAfter(true);
	    		
	    		//載入動畫
	    		set.addAnimation(aa);
	    		set.addAnimation(ra);
	    	    set.addAnimation(sa);
	    	    set.addAnimation(ta);
	    	    
	    		iv_show.startAnimation(set);//執行動畫
	    		
	    		break;
	    	}
	    	default:
	    		break;
    	}
    	
    }

第二種方式采用XML添加補間動畫效果:

特別注意的是:要在res目錄下創建一個anim文件夾,然後下面的布局文件要放到anim下才可以。

1.alpha.xml 透明效果





2.rotate.xml 旋轉效果


    
    
    
    


3.scale.xml 縮放效果



    
    
    

 

4.translate.xml 位移效果

 





 

5.set.xml 采用集合的方式

 




    
    

    
    


MainActivity.java:

OnClick 方法的實現:

@Override
    public void onClick(View v) {
    	
    	switch(v.getId()){
	    	case R.id.btn_touming:
	    	{
	    		//透明
	    		Animation aa = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha);
	    		iv_show.startAnimation(aa);
	    		break;
	    	}
	    	case R.id.btn_xuanzhuan:
	    	{
	    		//旋轉
	    		Animation ra = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate);
	    		iv_show.startAnimation(ra);//執行動畫
	    		break;
	    	}
	    	case R.id.btn_suofang:
	    	{
	    		//縮放
	    		Animation sa = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scale);
	    		iv_show.startAnimation(sa);//執行動畫
	    		
	    		break;
	    	}
	    	case R.id.btn_weiyi:
	    	{
	    		//位移
	    		Animation ta = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.translate);
	    		iv_show.startAnimation(ta);//執行動畫
	    		break;
	    	}
	    	case R.id.btn_yiqi:
	    	{
	    		Animation set = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.set);
	    	 
	    		iv_show.startAnimation(set);//執行動畫
	    		
	    		break;
	    	}
	    	default:
	    		break;
    	}
    	
    }

二、屬性動畫
原理:動畫效果會改變控件的坐標位置 (未完待繼續...)
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved