我面临接下来的两个问题:
1)当我将图像视图从屏幕外部转换到屏幕内部时,当图像移动时,图像被裁剪,并且当完成移动图像视图修复并显示正常时。为什么会这样?
2)我使用translateAnimation将imageview从(0,0)移动到(300,0)。 我已经实现了触摸式监听器。当我尝试移动之前翻译的图像视图时,当我尝试用手指移动时,触摸不起作用,但如果用手指触摸位置(0,0),则图像视图会移动但图像不显示!我不明白发生了什么。 我尝试用手指将imageView移动到位置(300,0)但不起作用,当我触摸位置(0,0)时移动。但是如果我在x轴上移动例如100,则imageview不在位置(100,0),在(400,0)中!我不明白发生了什么。有些东西丢失了,我认为imageview保存了开始移动或某些东西的位置,我不明白。如果我将转换动画移到该imageview,ontouch工作正常!
我希望我很清楚。
以下是问题1的代码:
public void showImageFromOutside(ImageView image){
image.setImageResource(obtenerImagen(cartasJugador.get(0).toString()));
TranslateAnimation animation1 = new TranslateAnimation(100, 425, 100, 525);
animation1.setDuration(800);
animation1.setFillAfter(true);
animation1.setAnimationListener(animationListener);
image.startAnimation(animation1);
}
以下是问题2的代码:
public void moveImageView(Imageview image){
animation = new TranslateAnimation(0, 300, 0, 0);
animation.setDuration(250);
animation.setFillAfter(true);
animation.setAnimationListener(animationListener);
image.startAnimation(animation);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
seMueve = true;
break;
case MotionEvent.ACTION_MOVE:
if (seMueve) {
x = (int) event.getRawX() - v.getWidth()/2;
y = (int) event.getRawY() - v.getHeight();
v.setX(x);
v.setY(y);
}
break;
case MotionEvent.ACTION_UP:
seMueve = false;
break;
}
v.performClick();
return seMueve;
}
迎接
答案 0 :(得分:0)
看一看:
http://developer.android.com/guide/topics/graphics/prop-animation.html#property-vs-view
特别是
...视图动画系统的另一个缺点是它只修改了绘制视图的位置,而不是实际的视图本身。例如,如果您设置了一个按钮以在屏幕上移动,则该按钮会正确绘制,但您可以单击该按钮的实际位置不会更改,因此您必须实现自己的逻辑来处理此问题。
我认为您不能将onTouchListener与动画一起使用。你应该使用ObjectAnimator,它很简单。
如果您的API低于11,则可以尝试使用http://nineoldandroids.com/。
此致