關於android的animation的xml定義中的android:interpolator屬性的含義

來源:互聯網
上載者:User
 下面是一個切換兩個activity是過度動畫效果執行個體:
(注意裡面的overridePendingTransition()方法)
Java代碼   
1.  @Override        
public  void  onCreate(Bundle  savedInstanceState)  {        
2.      super.onCreate(savedInstanceState);         
3.      
4.      setContentView(R.layout.SplashScreen);        
5.         
6.      new  Handler().postDelayed(new  Runnable()  {        
7.      @Override        
8.      public  void  run()  {        
9.      Intent  mainIntent  =  new  Intent(SplashScreen.this,     
        AndroidNews.class);        
10.    SplashScreen.this.startActivity(mainIntent);        
11.    SplashScreen.this.finish();        
12.        
13.    overridePendingTransition(R.anim.mainfadein,        
14.                      R.anim.splashfadeout);        
15.  }        
16.},  3000);        
}      

1.若要實現淡入淡出效果,就要將overridePendingTransition()方法修改為:overridePendingTransition(Android.R.anim.fade_in,android.R.anim
.fade_out);      

2.若要實現左向右滑入的效果  :
    overridePendingTransition(Android.R.anim.slide_in_left,android.
R.anim.slide_out_right);     

3.實現zoomin 和zoomout,即類似iphone的進入和退出時的效果:
  overridePendingTransition(R.anim.zoomin,  R.anim.zoomout);
    這裡我們自己定義zoomin.xml和zoomout.xml

   zoomin.xml  代碼:

1.  <?xml  version="1.0"  encoding="utf-8"?>     
2.  <set   
3.  xmlns:Android="http://schemas.android.com/apk/res/android"   
4.  Android:interpolator="@android:anim/decelerate_interpolator">
<scale  Android:fromXScale="2.0"  android:toXScale="1.0"     
5.  Android:fromYScale="2.0"  android:toYScale="1.0"     
6.  Android:pivotX="50%p"  android:pivotY="50%p"     
7.  Android:duration="@android:integer/config_mediumAnimTime"  />
</set>     
可能有很多人不理解其中的android:interpolator="@android:anim/decelerate_interpolator"是什麼含義,文檔裡說的也不太清楚,其實很簡單,看下面:
      interpolator定義一個動畫的變動率(the rate of change)。這使得基本的動畫效果(alpha, scale, translate, rotate)得以加速,減速,重複等。

用通俗的一點的話理解就是:動畫的進度使用 Interpolator 控制。Interpolator 定義了動畫的變化速度,可以實現勻速、正加速、負加速、無規則變加速等。Interpolator 是基類,封裝了所有 Interpolator 的共同方法,它只有一個方法,即 getInterpolation (float input),該方法 maps a point on the timeline to a multiplier to be applied to the transformations of an animation。Android 提供了幾個 Interpolator 子類,實現了不同的速度曲線,如下:

AccelerateDecelerateInterpolator        在動畫開始與介紹的地方速率改變比較慢,在中間的時侯加速
AccelerateInterpolator        在動畫開始的地方速率改變比較慢,然後開始加速
CycleInterpolator        動畫迴圈播放特定的次數,速率改變沿著正弦曲線
DecelerateInterpolator        在動畫開始的地方速率改變比較慢,然後開始減速
LinearInterpolator        在動畫的以均勻的速率改變
對於 LinearInterpolator ,變動率是個常數,即 f (x) = x.
public float getInterpolation(float input) {
return input;
}
Interpolator其他的幾個子類,也都是按照特定的演算法,實現了對變動率。還可以定義自己的 Interpolator 子類,實現拋物線、自由落體等物理效果。
就到這裡了,希望對大家有協助...

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.