呼,忙了兩天了這個,找了各種資料,勉勉強強實作我的功能,這個還得改進一下,線程方面的知識沒有學到多少,弄了線程畫UI有着各種bug,無奈。。就這樣跳過先了,哪一天有時間在回來搞一下。
正文————
要實作開頭動畫,有兩種方法,一種是用xml檔案定義,第二種則是用java實作。
xml動畫中,有着四種基本的動畫,如下圖檔說明
可以使用這四種組合出更加進階的xml動畫
具體請點選這個:XML做動畫UI
使用xml動畫的方法過程:
第一步,首先要在res建立一個anim的檔案夾,之後,在裡面寫xml動畫檔案,如圖
第二步,加載資源檔案
示範代碼如下,改一下後面的R.anin.xxx
Animation animation=AnimationUtils.loadAnimation(this, R.anim.fade_in);
第三步,為某個控件指定動畫
first.startAnimation(animation);
PS:
- first是一個ImageView
- 這個方法放線上程run()方法裡會報錯,我對線程不太懂,是以還找不到解決辦法
除此之外,一般我們都是要給animation添加監聽器,定義動畫開始前的行為,動畫循壞的行為,和動畫結束的行為
AnimationListener animationlistener = new AnimationListener() {//設定動畫監聽事件
@Override
public void onAnimationStart(Animation arg0) {//動畫開始前
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation arg0) {//動畫循壞時
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation arg0) {//動畫結束後
Intent intent = new Intent();
intent.setClass(StartActivity.this, MainActivity.class);
StartActivity.this.startActivity(intent);
}
};
開頭動畫一般結束之後都是跳轉到app主界面的activity,用Intent意圖跳轉activity
不要忘了在AndroidMainfest裡面聲明一個activity
animation.setAnimationListener(animationlistener);
之後設定監聽器方法,這個不要忘
使用java方法實作動畫效果:
第一步,new一個動畫對象
AlphaAnimation alphaanimation = new AlphaAnimation(0.0f, 1.0f);
//透明度從0.0(完全透明)到1.0(完全不透明)
上述代碼就是實作淡入效果的,舉一反三,其他的這裡便不多說
第二步,為對象設定相關屬性,
alphaanimation.setDuration(3000);//設定動畫持續時間為3s
alphaanimation.setFillAfter(true);//設定動畫結束後保留目前狀态
當然不止這兩種屬性,不過常用的就這兩種了,其他的話,百度吧
第三步,為控件指定動畫
first.startAnimation(alphaanimation);
PS:參數就是上述的對象名
個人使用中遇到的問題:
如果控件的visibility屬性為gone的話,動畫效果無法顯示出來,要将visibility屬性改為invisible,這樣就行了
最後,附上參考:自定義控件三部曲
提問之前,請先看提問須知
點選右側圖示發起提問

或者加入QQ群一起學習
TornadoFx學習交流群:1071184701