簡體   English   中英

自定義活動過渡不適用於Nexus4

[英]Custom activity transition not working on Nexus4

我已經聲明了兩個自定義動畫,它們可以在運行HTC Sense 3.5的Android 2.3.5的HTC Desire上正常工作(自定義ROM,Endymion V3.5,因此我可以在ICS之前的OS上進行測試)。 在打開新活動時,新屏幕從右側滑動,在關閉當前活動時,新屏幕從左側滑動,因此一切都很好。 我的代碼是:

overridePendingTransition(com.my.app.R.anim.slidein, com.my.app.R.anim.slideout);

聲明動畫的xml如下:

slidein.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
           android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
       android:duration="@android:integer/config_mediumAnimTime" />

slideout.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
           android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
       android:duration="@android:integer/config_mediumAnimTime" />

但是,問題來了。

相同的apk在Nexus4上部分起作用。 當打開一個新活動時,它可以正常工作,新屏幕從右側滑入。 關閉當前活動時,前一個屏幕僅顯示默認動畫,而忽略了我的自定義動畫。 我在Nexus4上安裝了非官方CM 10.2和android 4.3

我的問題是:它應該在android 4.3上這樣工作嗎? 也許在較新的API級別上,還有另一種方法需要調用才能正確使用? 任何幫助表示贊賞!

干杯

編輯:我分別聲明了自定義退出動畫,並與建議的解決方案結合使用,現在可以正常工作了。

closeslidein.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
           android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
       android:duration="@android:integer/config_mediumAnimTime" />

closeslideout.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
           android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
       android:duration="@android:integer/config_mediumAnimTime" />

以及整理過程:

@Override
public void finish()
{
    super.finish();
    overridePendingTransition(com.my.app.R.anim.closeslidein, com.my.app.R.anim.closeslideout);
}

確保正確撥打電話。 如果要顯式調用finish() ,則需要在其后立即調用overridePendingTransition() 如果您沒有顯式調用finish() ,則需要重寫onBackPressed()並在其中調用overridePendingTransition()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM