Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 2.2中的Android动画翻译_Android_Animation_Translate Animation - Fatal编程技术网

Android 2.2中的Android动画翻译

Android 2.2中的Android动画翻译,android,animation,translate-animation,Android,Animation,Translate Animation,我有两个图像视图,点击即可转换。 动画对于一个视图正常工作,但是对于第二个图像视图,我的动画不符合提供的坐标 当我单击“顶部图像视图”(img1)时,它会正确地向底部图像视图(img2)移动。但是,当我单击底部图像视图时,它会从下面的某个位置设置动画,并仅向图像视图2的初始位置移动。虽然预期的行为是,但它应该从其位置到顶部图像视图(img1)初始位置设置动画 我的xml是 <?xml version="1.0" encoding="utf-8"?> <RelativeL

我有两个图像视图,点击即可转换。 动画对于一个视图正常工作,但是对于第二个图像视图,我的动画不符合提供的坐标

当我单击“顶部图像视图”(img1)时,它会正确地向底部图像视图(img2)移动。但是,当我单击底部图像视图时,它会从下面的某个位置设置动画,并仅向图像视图2的初始位置移动。虽然预期的行为是,但它应该从其位置到顶部图像视图(img1)初始位置设置动画

我的xml是

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <ImageView  
        android:layout_width="100dp" 
        android:layout_height="100dp" 
        android:src="@drawable/letter_f"
        android:layout_alignParentTop="true"
        android:id="@+id/imgview1"
        android:background="@drawable/chart"/>

    <ImageView android:layout_height="100dp" 
        android:layout_width="100dp"
        android:id="@+id/imgview2" 
        android:src="@drawable/letter_g" 
        android:background="@drawable/chart" 
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"/>

</RelativeLayout>

您的问题是由于您的位置造成的。我相信当动画以绝对像素移动时,它是相对于自身的。所以,在第二个动画中,实际上是将其从x2=220移动到x1=0,从y2=419移动到y1=0。所以它是从(currentX+220,currentY+419)移动到(currentX+0,currentY+0),它=自身

要解决此问题,只需对第二个幻灯片声明的值进行求反和切换,如下所示:

TranslateAnimation slide;
        if(arg0 == img1)
        {
            //translate from img view 1 to img view 2
            slide = new TranslateAnimation(Animation.ABSOLUTE,x1,Animation.ABSOLUTE, x2,Animation.ABSOLUTE, y1,Animation.ABSOLUTE,y2 );
        }
        else
        {
            // translate from img view 2 to img view 1
//            slide = new TranslateAnimation(Animation.ABSOLUTE,x2,Animation.ABSOLUTE, x1,Animation.ABSOLUTE,y2,Animation.ABSOLUTE,y1);
            slide = new TranslateAnimation(Animation.ABSOLUTE,0,Animation.ABSOLUTE, (-x2),Animation.ABSOLUTE,0,Animation.ABSOLUTE, (-y2));
        }
这只会发生,因为您的左上角精灵处于0,0。你必须认真地重新考虑你如何移动你的精灵。请记住,TranslateAnimation会相对于当前位置移动精灵,基本上将精灵的原始位置设置为(0,0)。

可能是错的,但希望能有所帮助。它对我有用


很抱歉,我花了这么长时间才回复你,我丢失了你的帖子,不知什么原因再也找不到了。很高兴你早些发表评论

你可能想确切地解释到底出了什么问题,而不是说“不工作”。是否设置了不正确坐标的动画?在错误的时间?触摸错误?当我点击顶部图像视图(img1)时,它会正确地向底部图像视图(img2)移动。但是,当我单击底部图像视图时,它会从下面的某个位置设置动画,并仅向图像视图2的初始位置移动。虽然预期的行为是,它应该从它的位置动画到顶部图像视图(img1)的初始位置。我目前正在处理我自己的一个问题,当我有机会时,我会使用你的代码,并尝试重新创建和逐步通过它。可能很晚,今晚很晚。在此之前,我会查看XML实体上的对齐方式,并在调试器中逐步检查代码,确保位置值(x1、x2、y1、y3)正确无误。对不起,我看不到任何突然出现在我身上的东西。我已经在下面列出了答案,如果你能给出正确的答案,我将不胜感激。谢谢
TranslateAnimation slide;
        if(arg0 == img1)
        {
            //translate from img view 1 to img view 2
            slide = new TranslateAnimation(Animation.ABSOLUTE,x1,Animation.ABSOLUTE, x2,Animation.ABSOLUTE, y1,Animation.ABSOLUTE,y2 );
        }
        else
        {
            // translate from img view 2 to img view 1
//            slide = new TranslateAnimation(Animation.ABSOLUTE,x2,Animation.ABSOLUTE, x1,Animation.ABSOLUTE,y2,Animation.ABSOLUTE,y1);
            slide = new TranslateAnimation(Animation.ABSOLUTE,0,Animation.ABSOLUTE, (-x2),Animation.ABSOLUTE,0,Animation.ABSOLUTE, (-y2));
        }