0

我正在创建一个动画,其中图像从一个方向转换到另一个方向,动画将一半图像移出屏幕,但动画结束时图像显示完整。我只想在动画后显示一半的图像。

目前,我在动画开始时在图像视图中使用完整图像,并在动画结束时将其替换为半图像,但它显示图像更改反射,看起来很尴尬,这是我的实际问题。

下面是我的 xml 和类文件。

动画代码

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration = "2000"
    android:fillBefore="true"
    android:fillEnabled="true"
    android:fromXDelta = "-300%"
    android:fromYDelta="200%"
    android:toXDelta="60%">

</translate>

animimv5.setAnimationListener(new AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                imv5.setBackgroundResource(R.drawable.img5);
            }
            @Override
            public void onAnimationRepeat(Animation animation) {

            }
            @Override
            public void onAnimationEnd(Animation animation) {
                imv5.setBackgroundResource(R.drawable.img5_2);
            }
        });
4

2 回答 2

1

您可以尝试以下操作:

在 xml 中(将其添加到设置参数)android:fillAfter或在类源中使用相关方法setFillAfter(boolean)

设置为 true 时,动画结束后应用动画变换。根据此处的文档, 当设置为 true 时,将在动画结束后应用动画变换。默认值为假。如果 fillEnabled 未设置为 true 并且未在 View 上设置动画,则假定 fillAfter 为 true。

有关其他提示和解释,请查看Chet 的博客文章

希望能帮助到你.. ;)

于 2013-09-03T07:06:16.647 回答
0

给你,先生:

MainActivity :

    public class MainActivity extends Activity {

    private View animatedView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        animatedView = findViewById(R.id.view);
    }

    public void animate(View view) {
        int targetX = ((View) animatedView.getParent()).getWidth() - animatedView.getWidth() / 2;
        ObjectAnimator.ofFloat(animatedView, "x", 0, targetX).setDuration(1000).start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

布局 XML:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context=".MainActivity">

    <TextView
            android:id="@+id/view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#CC0000"
            android:padding="30dp"
            android:textColor="@android:color/white"
            android:text="@string/hello_world"/>
    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Animate"
            android:onClick="animate"
            android:id="@+id/button"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"/>

</RelativeLayout>
于 2013-09-03T12:34:59.550 回答