簡體   English   中英

如何在 Android 中為視圖設置動畫並使其保持在新的位置/大小?

[英]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.

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