Android:动画后获取View的新位置

时间:2014-12-17 15:00:41

标签: java android

如何在动画后获得新的视角位置呢?

if(animationCompeleted == 1)
{
    return;
}

if(animationCounter != 0)
{
    this.width = this.width + 1.f;
    this.heigh = this.heigh + 1.f;
}
final ScaleAnimation scale = new ScaleAnimation(this.width, this.width + 1.0f, this.heigh, this.heigh + 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1.0f);
scale.setDuration(1000);
scale.setFillAfter(true); 
scale.setFillEnabled(true);
scale.setAnimationListener(new Animation.AnimationListener()
{
    @Override
    public void onAnimationStart(Animation arg0) 
    {

        animationCompeleted = 1;
        animationCounter++;
    }           
    @Override
    public void onAnimationRepeat(Animation arg0) 
    {
        animationCompeleted = 2;
    }           
    @Override
    public void onAnimationEnd(Animation arg0) 
    {
        animationCompeleted = 2;
        //I want to get new position of imageView for comparing with another view(detection going-on it)


    }
});     
imageView.startAnimation(scale);

我想知道我的imageView何时接近另一个视图 我怎么检查呢? 如何在动画后获得新的X和Y或高度和宽度?
我想让它们进入onAnimationEnd,但它是静态值,它在动画结束后不会改变..
对不起语法

3 个答案:

答案 0 :(得分:3)

尝试getLocationOnScreen方法。

int[] locationOnScreent = new int[2];
yourView.getLocationOnScreen(locationOnScreent);
// locationOnScreent[0] = x
// locationOnScreent[1] = y

答案 1 :(得分:0)

要获取视图的维度,请使用View.getLayoutParams().heightView.getLayoutParams().width

要获得位置,必须将LayoutParams转换为MarginLayoutParams并获取leftMargin / topMargin / rightMargin / bottomMargin

答案 2 :(得分:0)

这里的主要困惑是,你已经动画了视图的代表,而不是视图本身。 因此,动画后视图的坐标永远不会改变。

此外,setFillAfter(true)参数不会干扰进程。 setFillAfter(true)仍然只影响视图的代表。