2016-09-24 143 views
2

當我做:如何通過windowManager.UpdateViewLayout在沒有任何動畫的情況下移動視圖?

LayoutParams lp = getLayoutParams(view); 
    lp.x = absoluteX; 
    lp.y = absoluteY; 
    this.mWindowManager.updateViewLayout(view, lp); 

然後我有從位置一個線性動畫其中視圖是到新的位置absoluteX/absoluteY。如何在沒有任何動畫的情況下移動視圖?

我嘗試設置lp.windowAnimations = 0但它改變什麼:( 任何想法,我該怎麼辦?

如果這是無法避免的動畫,是他們沒有辦法知道實際?視圖的位置,也許我可以使其不可見仍是真正的位置是不是absoluteX/absoluteY

注:

找了Android的源代碼,我在文件WindowManager.java這ENTR看到y:

 /** 
    * Never animate position changes of the window. 
    * 
    * {@hide} */ 
    public static final int PRIVATE_FLAG_NO_MOVE_ANIMATION = 0x00000040; 

    /** 
    * Control flags that are private to the platform. 
    * @hide 
    */ 
    public int privateFlags; 

它看起來像是我需要的,但我不知道如何訪問和設置這樣的標誌:(任何想法?

+0

你也許'removeView()',然後立即用更新'LayoutParams'添加回來。 –

+0

Mike M,有效地做RemoveView和AddView刪除動畫,但這真的是最好的辦法嗎?我看看Android源代碼,我看到佈局參數有PRIVATE_FLAG_NO_MOVE_ANIMATION和public int privateFlags;也許我必須玩這個? – loki

+0

我們通過回答這個問題解決了這個問題。使用反射來禁用私有標誌動畫。 http://stackoverflow.com/a/33171254/5053013 –

回答

0

嘗試禁用佈局動畫:

android:animateLayoutChanges="false" 
+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/13777628) –

+0

他詢問如何移動一個沒有動畫的視圖,並且這個屬性會禁用由佈局改變引起的動畫。 – Jamal

+0

謝謝jamal,但不幸的是它沒有工作:(我嘗試設置它像這樣 loki

相關問題