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线程的睡眠状态,从而冻结应用程序一段时间。