[英]How to animate a view in Android and have it stay in the new position/size?
我目前在我的 Android 應用中有一個視圖,並且該視圖正在播放幀動畫。 我想為視圖設置動畫以將其大小增加到 150%。 當我對其應用縮放動畫並完成縮放動畫時,我希望查看器在 Activity 的其余生命周期中保持該新大小。 不幸的是,當放大動畫完成時,視圖會恢復到原始大小。 我怎樣才能讓它保持新的動畫轉換?
我正在使用
myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));
謝謝!
確保將以下屬性添加到動畫 xml 的根元素中:
android:fillAfter="true"
android:fillEnabled="true"
嘗試從代碼構建動畫並設置這樣的屬性
anim.setFillEnabled(true);
anim.setFillAfter(true);
如果你想把你的動畫放在 xml 中,它可能需要這個來幫助:
<set
android:fillEnabled="true"
android:fillAfter="true"
xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0"
android:toYDelta="-20%p"
android:duration="7000" />
</set>
https://stackoverflow.com/a/6519233/371749
也請欣賞其他答案,幫助了我:)祝你好運!
現在它變得非常容易:
view.animate().x(valueX).y(valueY).setDuration(500).start();
(在這個片段中使用了 ViewPropertyAnimator)。
也可以附加多個其他選項。
視圖將位於新位置。
編輯:Qlimax 的答案更好,但由於 OP 沒有返回更改復選標記並且我無法刪除已接受的答案,我將其復制到此處:只需設置 fillAfter=true fillEnabled=true
我的原始答案(有效,但相比之下有點荒謬)如下:
為了在動畫后按預期工作,至少根據此線程,您必須編寫一個onAnimationEnd
處理程序,並在其中手動調整視圖的“真實”(轉換前)邊界以匹配最終結果比例動畫。
將 android:fillAfter="true" 放在 SET 標簽中 - 因為將它們放在動畫標簽中會將它們限制在“過渡參數”或“動畫期間/動畫參數”中。 SET 中的參數將在完成動畫后應用您正在尋找的轉換。
實際上,由於您使用的動畫似乎是嵌入在 Android 框架中的動畫,我不確定您是否可以更改其中的任何內容。
但是,您可以按照文檔中的示例創建自己的動畫。 如果您希望在動畫結束后保持縮放,則必須放置 android:fillAfter="true"。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.