微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 在翻译动画时是否可以获得ImageView的实时坐标?

我在ImageView中有一个子弹的图像,可以执行翻译动画.

我需要显示实时坐标以显示它与目标的实时距离.

ImageView myimage = (ImageView)findViewById(R.id.myimage);    
Animation animation = new TranslateAnimation(100, 200, 300, 400);
animation.setDuration(1000);
myimage.startAnimation(animation);
animation.setRepeatCount(Animation.INFINITE);

在进行TranslateAnimation时,是否可以获得图像的实时x和y坐标?

如果使用TranslateAnimation不可能,还有其他方法可以在运动时提供图像的实时坐标吗?

我试过了 –

int x = myimage.getLeft();
int y = myimage.getTop(); 

int[] firstPosition = new int[2];
myimage.measure(View.MeasureSpec.EXACTLY, View.MeasureSpec.EXACTLY);
myimage.getLocationOnScreen(firstPosition);
int x = firstPosition[0];
int y = firstPosition[1];

在这两种方式中,它给出了ImageView的初始静态坐标.

解决方法:

以下是基于user3249477和Vikram所说的完整示例:

    final TextView positionTextView = (TextView)findViewById(R.id.positionTextView);
    ImageView myimage = (ImageView)findViewById(R.id.imageView);    

    ObjectAnimator translateXAnimation= ObjectAnimator.ofFloat(myimage, "translationX", 0f, 100f);
    ObjectAnimator translateYAnimation= ObjectAnimator.ofFloat(myimage, "translationY", 0f, 100f);     
    translateXAnimation.setRepeatCount(ValueAnimator.INFINITE);      
    translateYAnimation.setRepeatCount(ValueAnimator.INFINITE);

    AnimatorSet set = new AnimatorSet();
    set.setDuration(1000);
    set.playTogether(translateXAnimation, translateYAnimation);
    set.start();

    translateXAnimation.addUpdateListener(new AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            imageXPosition = (Float)animation.getAnimatedValue();
        }
    });

    translateYAnimation.addUpdateListener(new AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            imageYPosition = (Float)animation.getAnimatedValue();
            String position = String.format("X:%d Y:%d", (int)imageXPosition, (int)imageYPosition);
            positionTextView.setText(position);
        }
    });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐