最近一直研究5.0的過度動畫,網上找了好多帖子、博文,千篇一律,乙個博文或者乙個帖子,引申出好多,然並卵,基本上都說的是一共分成兩種方法:
一,**實現:
fade fade = new fade();
fade.setduration(2000);
getwindow().setreentertransition(fade);
intent intent = new intent(mainactivity.this, slideactivity.class);
startactivity(intent, activityoptions.makescenetransitionanimation(this).tobundle());
第二個activity
getwindow().requestfeature(window.feature_content_transitions);
getwindow().setentertransition(new explode());
getwindow().setexittransition(new explode());
//getwindow().setreentertransition(new explode());
//getwindow().setreturntransition(new explode());
setcontentview()
二,xml實現
在res目錄下,新建乙個transition資料夾,建立***.xml檔案(就是動畫xml)
explode.xml
silde.xml
fade.xml
style:
true
@transition/explode
@transition/explode
@transition/change_image_transform
@transition/change_image_transform
activity跳轉
intent intent = new intent(mainactivity.this, slideactivity.class);
startactivity(intent, activityoptions.makescenetransitionanimation(this).tobundle());
相信自己親手寫過並除錯過的都會出現一種情況,用xml寫,沒有效果,反正我沒做出來,效果一直出不來,知道在第二個activity裡邊加入如下**:
getwindow().requestfeature(window.feature_content_transitions);
getwindow().setentertransition(new explode());
getwindow().setexittransition(new explode());
//getwindow().setreentertransition(new explode());
//getwindow().setreturntransition(new explode());
setcontentview()
但是,什麼情況,這不是**實現的動畫嗎?既然這樣,那幹嘛還浪費時間寫xml動畫啊,沒辦法繼續研究吧
終於找到一篇文章,感謝作者的分享
首先,在你定義乙個繼承自材料主題的風格時,通過android:windowcontenttransitions
屬性啟用視窗內容過渡效果。你也可以在風格定義中指定出入和共享元素過渡效果:
true
@transition/explode
@transition/explode
@transition/change_image_transform
@transition/change_image_transform
這個例子子中的change_image_transform
過渡效果定義如下:
changeimagetransform
元素對應於changeimagetransform
類。
要想啟用**中的視窗內容過渡效果,得呼叫window.requestfeature()
方法:
// inside your activity (if you did not enable transitions in your theme)
getwindow().requestfeature(window.feature_content_transitions);
getwindow().setexittransition(new explode());
要在**中指定過渡效果,呼叫這些方法使用transition
類:
window.setentertransition();
window.setexittransition();
window.setsharedelemententertransition();
window.setsharedelementexittransition();
方法setentertransition()
和setsharedelementexittransition()
給呼叫者acivity
定義了退出過渡效果,而方法setentertransition()
和setsharedelemententertransition()
為被呼叫者定義了進入過渡效果。
為了獲取過渡的全部效果,你必須啟用呼叫和被呼叫activity
的視窗內容過渡效果。否則的話,否則的話,呼叫者activity
將會啟動退出過渡效果,但是你會看到這個視窗過渡效果的(例如縮放或者褪色)。
為了盡可能早的啟動進入過渡效果,得在被呼叫activity
中使用window.setallowentertransitionoverlap()
。這將使你擁有更多戲劇般美妙的進入過渡效果。
也可以這麼理解:
1. 在style中使用使用android:windowcontenttransitions屬性,宣告使用transitions,
2. 需要在xml中自定義自己的transitions,然後需要在style中寫入
@transition/explode
@transition/explode
@transition/explode
@transition/explode
3. 在**中啟用transitions:
// inside your activity (if you did not enable transitions in your theme)
getwindow().requestfeature(window.feature_content_transitions);
// set an exit transition
getwindow().setexittransition(new explode());
無語,終於弄明白了,要不是自己去試了,就被網上那些博文,帖子坑慘了,等到真正用的時候,指不定出現什麼問題呢 android5 0後的動畫
android5.0以後,系統新增了很多動畫,給我們使用,今天記錄幾個activity的跳轉時候的動畫。1 首先使用動畫,需要在style中新增 windowcontenttransitions true 才能使用動畫。2.1 makecustomanimation 使用者自定義動畫,定位進入,退出...
Android5 0新控制項
1.recycleview 使用方法 實現listview,gridview及瀑布流 新增分割線 自定義itemderection 刪除及增加動畫 下拉重新整理 onscrollstatechanged 引數 recyclerview recyclerview,int newstate 正在滾動 p...
android 5 0 修改預設桌布
android 5.0中homescreen的預設桌布位置 frameworks base core res res drawable nodpi default wall jpg 可以在frameworks base core res目錄下搜尋default wall jpg檔案,替換掉就可以了。...