簡體   English   中英

Android自定義縮放動畫效果不佳

[英]Android custom zoom animation poor performance

我有一個特定的問題,但希望有人會歡呼並提供幫助。

我已經編寫了一個自定義縮放動畫(發布runnables,可以在一定的時間內將目標視圖更改為處理程序)但是當我更改視圖的寬度和高度時,就好像我已經執行了縮放(0,0)視圖,而我想圍繞其中心縮放,所以我通過相應地改變其邊距來移動視圖。 事情是,當縮放迭代步驟太小(即0.01f或更小)時,我必須改變視圖的邊距,例如1px,有時僅在一個方向上,這使得它看起來好像動畫是毛病的。 我不確定確切的原因,但我嘗試了以下事項:

1)我嘗試通過覆蓋我的父視圖的onLayout()來更改邊距,這將在縮放時設置layoutParams時進行調整(我這樣做是為了避免在移動時第二次調用setLayoutParams(),這實際上現在似乎沒有非常合理,因為setLayoutParams()只是設置了一些將在以后使用的標志。

2)我正在檢查要設置的新邊距,以便只有在X和Y方向上的新邊距和舊邊距之間存在差異時才設置它們。

3)我嘗試使用view.offsetLeftAndRight()view.offsetTopAndBottom()而不是更改布局參數以移動視圖,但它再次無濟於事。

有什么建議可以解決這個問題嗎?

如果我沒有正確找到你,你需要從視圖中獲取Bitmap緩存並手動繪制它。 在這種情況下,將繪制沒有毛刺的位圖(如果打開位圖過濾)。

您可以按以下步驟執行此操作:

  1. 獲取視圖緩存 - 通過View.getDrawingCache或通過調用View.draw函數
  2. 隱藏視圖
  3. 獲取當前系統時間 - SystemClock.elapsedRealtime(感謝您可以計算動畫進度)
  4. 開始發布runnables以使屏幕無效並檢查動畫是否結束
  5. 顯示視圖

可能它可以通過Android Animation類完成,但我不使用它,因為它非常有限。

暫無
暫無

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

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