Android - 将imageView发送到X Y位置

时间:2015-05-06 12:24:09

标签: android imageview translation

我有一个从右侧屏幕开始的imageView A. 我想以编程方式设置X和Y位置。要在左上角附近移动imageView,我必须设置X = -1497 Y = 20.我不明白为什么X = -1497。我认为因为它占据了imageView开始的(0,0)位置,但如何捕捉左上角的(0,0)屏幕?

这是因为,对于所有屏幕,我必须计算%以将imageView始终移动到同一个位置,但是如何使用负值来执行此操作。

Point origImagePos = new Point(-1460, 20);

public void moveImageView(View view){
  ObjectAnimator objectX;
  ObjectAnimator objectY;
  AnimatorSet animatorXY;

  objectX = ObjectAnimator.offFloat(view, "translationX", origImagePos.x);
  objectY = ObjectAnimator.offFloat(view, "translationY", origImagePos.y);
  animatorXY.playTogether(objectX, objectY);
  animatorXY.setDuration(500);
  animatorXY.start();
}

迎接

2 个答案:

答案 0 :(得分:0)

translationX相对于视图而言。试试这个,

objectX = ObjectAnimator.offFloat(view, "X", 20);
objectY = ObjectAnimator.offFloat(view, "Y", 20);

答案 1 :(得分:0)

实际上,您可以使用ViewPropertyAnimator代替ObjectAnimator来削减大部分代码。

public void moveImageView(View view){

    view.animate().translationX(0).translationY(0).setDuration(500);

}

这就是你需要的所有代码,应该将你的视图移到左上角。

您可以随时为以后的动画增强您的方法,例如:

// You should also always use Interpolators for more realistic motion.

public void moveImageView(View view, float toX, float toY, int duration){

     view.animate()
        .setInterpolator(new AccelerateDecelerateInterpolator())
        .translationX(toX)
        .translationY(toY)
        .setDuration(duration);
}

然后将其称为:

moveImageView(yourImageView, 0, 0, 500);

动态获取设备的坐标,以便知道移动的位置:

float screenWidth = getResources().getDisplayMetrics().widthPixels;
float screenHeight = getResources().getDisplayMetrics().heightPixels;

screenWidth + screenHeight将是右下角的坐标。

左上角坐标只是0,0。

屏幕坐标中心在逻辑上(screenWidth / 2)+(screenHeight / 2)。

希望将来让您的生活更轻松。