Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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动画定位问题_Android_Xml_Animation - Fatal编程技术网

Android动画定位问题

Android动画定位问题,android,xml,animation,Android,Xml,Animation,我尝试在android中制作两个翻译动画,但遇到了问题: 我试图显示一个图像,从一侧进入,从另一侧退出,并重复几分钟。我可以看到一个移动的图像,但每次动画开始时,我都会看到一毫秒的图像闪烁 这是我的布局xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientat

我尝试在android中制作两个翻译动画,但遇到了问题:

  • 我试图显示一个图像,从一侧进入,从另一侧退出,并重复几分钟。我可以看到一个移动的图像,但每次动画开始时,我都会看到一毫秒的图像闪烁
  • 这是我的布局xml:

        <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:background="@drawable/bg"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    
        <ImageView  android:id="@+id/anim_image" android:src="@drawable/movimage"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"
                    android:visibility="invisible"  android:layout_marginTop="30dp"
        />
    
    </FrameLayout>
    
    
    
    这是我的动画xml:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
     android:fromDegrees="40" android:toDegrees="-40" android:toYScale="0.0"
     android:pivotX="40%" android:pivotY="30%" android:duration="4000" />
         <set>
            <translate 
                android:fromXDelta="200%p" android:toXDelta="-150%p" android:fromYDelta="20%"
                android:toYDelta="10%" android:duration="4000" android:zAdjustment="bottom" />
        </set>
     </set>
    
    
    
    在我的java类中,我创建了一个倒计时程序,每个onTick都会调用它: 图像。startAnimation(动画)

    我还试着听动画: anim.setAnimationListener(此)

    并添加到onAnimationEnd: image.setVisibility(View.GONE)

    但这对我没有帮助。 有人知道我能做些什么来修复它吗

    --

  • 我试着展示一个“流星”图像——我创建了一个小的png文件(30px*30px),我试着把它放在屏幕的一边,让它移动到另一边,然后消失。但是我在动画XML中编写的每一个代码都不能做到这一点! 有人能帮我正确地写动画吗 我写过:翻译 android:fromXDelta=“100%p”android:toXDelta=“-100%p”android:fromYDelta=“0%p” android:toYDelta=“100%p”android:duration=“500”

    但它不起作用


    编辑:我找到了解决方案:

    我发现了问题所在。我编写了一个带有倒计时的代码,用于重复,而不是使用动画的repeat选项。我已将我的XML更改为:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" android:startOffset="1000"
    >
        <rotate
                android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
                android:fromDegrees="40" android:toDegrees="-40" android:toYScale="0.0"
                android:pivotX="40%" android:pivotY="30%" android:duration="4000" />
         <set>
            <translate 
                android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
                android:fromXDelta="100%p" android:toXDelta="-100%p" android:fromYDelta="20%"
                android:toYDelta="10%" android:duration="4000" android:zAdjustment="bottom" />
        </set>
     </set>
    
    
    
    现在它在屏幕上不闪烁的情况下工作。 同样对于《流星》,我将XML更改为:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate 
                android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
                android:fromXDelta="100%p" android:toXDelta="-100%p" android:fromYDelta="0%p"
                android:toYDelta="100%p" android:duration="2500" android:zAdjustment="bottom" />
         <set>
         <alpha 
            android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
            android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2500" />
        </set>
     </set>
    
    
    

    现在它工作得很好

    我认为在动画完成后,imageView会回到其原始位置。您可以尝试在翻译动画的xml中使用android:fillAfter=“true | false”(试试其中一个)。或者,如果正在使用
    AnimationUtils

    加载动画对象,请在动画对象上尝试
    setFillAfter(布尔)
    ,确定我找到了解决方案。我尝试编写自己的循环显示,而不是使用android的代码。我已经删除了计时器,并在动画中添加了以下代码:android:repeatCount=“infinite”android:repeatMode=“restart”android:fillAfter=“false”效果很好。我发现了另一个问题——AnimationRepeat方法从未被调用。我认为这是android平台的一个bug。你是如何加载动画和设置动画监听器的?anim=AnimationUtils.loadAnimation(这个,R.anim.move);anim.setAnimationListener(此);