能夠在onCreate或者onResume中start Animation嗎?

    最近產品中出了一個問題,在解決的過程當中發現了一篇這樣的文章: java

    http://damianflannery.wordpress.com/2011/06/08/start-animation-in-oncreate-or-onresume-on-android/ android

   下面是這篇文章的一些觀點和實現的一些方法。 ide

    開門見山的講,若是你在onCreate或者onResume中啓動一個動畫,那麼結果會很是讓你失望的。 wordpress

    解決辦法1: 在onCreate或者onResume中啓動一個timer,delay必定的時間後啓動動畫。這樣作的缺點是delay的時間過短的話,動畫起不來;太長的話用戶體驗會不好。並且相同delay時間在不一樣的手機上可能表現還不同。 動畫

  解決辦法2: 在onWindowsFocussedChanged方法中啓動動畫。這個方法會在activity window得到focus或者失去focus時被調用。因此這個方法能夠更好的表示出當前的activity是否被用戶看到了。 this

    例子: code

private TextView myTextView;
 
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_home);
     myTextView= (TextView)findViewById(R.id.my_textview);
     anim = AnimationUtils.loadAnimation(this, R.anim.fade_in);
 }
 
@Override
public void onWindowFocusChanged (boolean hasFocus) {
   super.onWindowFocusChanged(hasFocus);
   if (hasFocus)
      myTextView.startAnimation(anim);
}



*hasFoucs* 參數爲true表示當前的window已經得到focus。 xml

動畫效果定義在下面的文件中 res/anim/fade_in.xml: utf-8

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:fromAlpha="0.0" android:toAlpha="1.0"
       android:duration="1500" />
相關文章
相關標籤/搜索