Android 安卓-撤销动画
我希望随机选择的图像在设置动画后重置,这样另一个随机选择的图像位于原点,旧图像将被删除。如何返回动画中设置图像的部分Android 安卓-撤销动画,android,Android,我希望随机选择的图像在设置动画后重置,这样另一个随机选择的图像位于原点,旧图像将被删除。如何返回动画中设置图像的部分 Random rand = new Random(); int imag = rand.nextInt(4) + 1; switch (imag) { case 1:
Random rand = new Random();
int imag = rand.nextInt(4) + 1;
switch (imag)
{
case 1:
imageView.setImageResource(R.drawable.a);
break;
case 2:
imageView.setImageResource(R.drawable.b);
break;
case 3:
imageView.setImageResource(R.drawable.c);
break;
case 4:
imageView.setImageResource(R.drawable.d);
break;
}
}
public boolean onTouchEvent(MotionEvent touchevent)
{
final ViewPropertyAnimator animator = imageView.animate();
switch (touchevent.getAction())
{
case MotionEvent.ACTION_DOWN:
{
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP:
{
x2 = touchevent.getX();
y2 = touchevent.getY();
if (x1 < x2 && (x2-x1)>=(y1-y2) && (x2-x1)>=(y2-y1))
{
animator.translationX(imageView.getWidth()*2)
.setDuration(180) //it's optional
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
}
})
.start();
}
}
Random rand=new Random();
int imag=rand.nextInt(4)+1;
开关(imag)
{
案例1:
setImageResource(R.drawable.a);
打破
案例2:
setImageResource(R.drawable.b);
打破
案例3:
setImageResource(R.drawable.c);
打破
案例4:
设置图像资源(R.drawable.d);
打破
}
}
公共布尔onTouchEvent(MotionEvent touchevent)
{
最终视图属性yanimator animator=imageView.animate();
开关(touchevent.getAction())
{
case MotionEvent.ACTION\u DOWN:
{
x1=touchevent.getX();
y1=touchevent.getY();
打破
}
case MotionEvent.ACTION\u UP:
{
x2=touchevent.getX();
y2=touchevent.getY();
如果(x1=(y1-y2)&&(x2-x1)>=(y2-y1))
{
animator.translationX(imageView.getWidth()*2)
.setDuration(180)//它是可选的
.setListener(新的AnimatorListenerAdapter(){
@凌驾
AnimationEnd上的公共无效(Animator动画){
super.onAnimationEnd(动画);
}
})
.start();
}
}
也许您可以尝试以下方法:
int getMyRandomResId() {
Random rand = new Random();
int imag = rand.nextInt(4);
switch (imag) {
case 0:
return R.drawable.a;
break;
case 1:
return R.drawable.b;
break;
case 2:
return R.drawable.c;
break;
default:
return R.drawable.d;
}
}
private boolean animationRunning = false;
public boolean onTouchEvent(MotionEvent touchevent)
{
final ViewPropertyAnimator animator = imageView.animate();
switch (touchevent.getAction()) {
case MotionEvent.ACTION_DOWN: {
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP: {
x2 = touchevent.getX();
y2 = touchevent.getY();
if (!animationRunning) {
if (x1 > x2 && (x1 - x2) >= (y1 - y2) && (x1 - x2) >= (y2 - y1)) {
animationRunning = true;
animator.translationX(-imageView.getWidth() * 2)
.setDuration(180)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
imageView.setTranslationX(0);
imageView.setImageResource(getMyRandomResId());
animationRunning = false;
}
})
.start();
}
}
}
}
}
也许你可以试试这样的东西:
int getMyRandomResId() {
Random rand = new Random();
int imag = rand.nextInt(4);
switch (imag) {
case 0:
return R.drawable.a;
break;
case 1:
return R.drawable.b;
break;
case 2:
return R.drawable.c;
break;
default:
return R.drawable.d;
}
}
private boolean animationRunning = false;
public boolean onTouchEvent(MotionEvent touchevent)
{
final ViewPropertyAnimator animator = imageView.animate();
switch (touchevent.getAction()) {
case MotionEvent.ACTION_DOWN: {
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP: {
x2 = touchevent.getX();
y2 = touchevent.getY();
if (!animationRunning) {
if (x1 > x2 && (x1 - x2) >= (y1 - y2) && (x1 - x2) >= (y2 - y1)) {
animationRunning = true;
animator.translationX(-imageView.getWidth() * 2)
.setDuration(180)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
imageView.setTranslationX(0);
imageView.setImageResource(getMyRandomResId());
animationRunning = false;
}
})
.start();
}
}
}
}
}
我编辑了代码以获取更多信息。在设置图像动画后,它应该返回原点并选择一个新的rendom图像不确定这是否是您想要的-结尾可能有一个跳转,因此可能需要额外的入口动画。我尝试了您的代码,但我不知道您的
public void performation()是什么
方法是为,因为它没有被调用,所以我想我把它漏掉了。代码的另一部分使用了getMyRandomResId()
对我来说听起来很合乎逻辑,但是如果我设置它,我会看到一个空白屏幕,这可能是什么原因呢?关于performAnimation()(这只是一个遗留问题)你是对的当你开始动画时,你的翻译不是0吗?我假设0是原来的位置。但是如果这个假设是错误的,一个空白的屏幕是确定的可能性。BTW,你使用哪一个动画类?好的,原理上是这样。图像重置到它的初始P。点,但这样做的结果是,当活动开始时,没有图像,首先是动画完成时。第二个问题是图像“闪烁”:当手势完成时,图像之间的切换非常快,为什么在动画结束之前没有一张图片停留?我正在实现OnGetureListener,没有extra classI编辑了代码以获取更多信息。在设置我的图像动画后,它应该回到原点并选择一个新的rendom图像不确定这是否是您想要的-可能在结尾处有一个跳转,因此可能需要额外的入口动画。我尝试了您的代码,但我不知道您的public void performAnimation()是什么
方法是为,因为它没有被调用,所以我想我把它漏掉了。代码的另一部分使用了getMyRandomResId()
对我来说听起来很合乎逻辑,但是如果我设置它,我会看到一个空白屏幕,这可能是什么原因呢?关于performAnimation()(这只是一个遗留问题)你是对的当你开始动画时,你的翻译不是0吗?我假设0是原来的位置。但是如果这个假设是错误的,一个空白的屏幕是确定的可能性。BTW,你使用哪一个动画类?好的,原理上是这样。图像重置到它的初始P。点,但这样做的结果是,当活动开始时,没有图像,首先是动画完成时。第二个问题是图像“闪烁”:当手势完成时,图像之间的切换非常快,为什么在动画结束之前没有一张图片停留?我正在实现OnGetureListener,没有extra类