0

我想知道如何在沒有動畫的情況下從上往下移動視圖。我這樣問,是因爲我想在每一步都獲得視圖的位置,以便我可以檢查該視圖與任何其他視圖之間是否存在任何碰撞。在Android中無需動畫連續移動視圖從上往下移動

使用動畫可以將視圖從一個位置移動到另一個位置(Animator類),但動畫會向用戶產生幻覺,表明它正在移動,但它的位置始終是固定的。所以這不能使用動畫來完成?

第二種方法是增加視圖的位置。我在onCreate()中應用此方法。如果我沒有使用Thread.sleep(50),那麼該活動不會顯示該視圖,如果我將其應用於Thread.sleep(50),則活動在某段時間內不會啓動。

回答

0

解決使用ValueAnimator問題: -

CodeSnippet: -

va=ValueAnimator.ofFloat(0.0f,size.y); 
va.setDuration(5000); 
va.setRepeatCount(va.INFINITE); 
va.setRepeatMode(va.REVERSE); 
va.start(); 
va.addUpdateListener(new AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator animation) { 
     // TODO Auto-generated method stub 
       bullet[0].setTranslationY((Float) va.getAnimatedValue());   
        Rect R11=new Rect(bullet[0].getLeft(),bullet[0].getTop()+(int)bullet[0].getTranslationY(),bullet[0].getRight(),bullet[0].getBottom()+(int)bullet[0].getTranslationY()); 
         Rect R21=new Rect(ball.getLeft(), ball.getTop(), ball.getRight(), ball.getBottom()); 
         if(R11.intersect(R21)) 
         va.cancel(); 
    } 
}); 
1

屬性動畫(Animator類的子類)實際上移動視圖,因爲它們更新視圖的實際屬性。它是視圖動畫(Animation類的子類),它不移動實際視圖,而是移動到用戶看起來的位置。 來源:http://developer.android.com/guide/topics/graphics/prop-animation.html Quote:使用屬性動畫系統,這些約束被完全刪除,並且可以爲任何對象(視圖和非視圖)的任何屬性設置動畫,並且對象本身實際上被修改。

你也不應該開始在onCreate方法中移動東西,因爲它仍在初始化(推薦使用onwindowfocuschanged)。此外,如果您調用thread.sleep,則您將進入主UI線程的睡眠狀態,從而凍結應用程序一段時間。