android5 0的過度動畫

2021-07-22 20:47:12 字數 3866 閱讀 4310

最近一直研究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檔案,替換掉就可以了。...