将图像由左到右,然后旋转动画图像、动画、左到右

2023-09-08 08:40:57 作者:伱最后还是莪得过客

我在做一个例子,运动图像由左到右,然后旋转它的自我。 我已经使用AnimationSet尝试,但图像的旋转是不正确的。它的动作在一个周期不是很自我。 如何解决这个问题呢?

I'm making an example that moving an image from left to right then rotate it self. I've tried using AnimationSet but the image rotation isn't correct. It moves in a cycle not it self. How to fix this problem?

我要什么 MainActivity

What I want MainActivity

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    AnimationSet set = new AnimationSet(true);
    set.setFillAfter(true);
    img_animation = (ImageView) findViewById(R.id.imgBanner);
    Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotation);
    rotation.setStartOffset(2000);
    rotation.setDuration(2000);
    TranslateAnimation moveLefttoRight = new TranslateAnimation(0, 200, 0, 0);
    moveLefttoRight.setStartOffset(1000);
    moveLefttoRight.setDuration(1000);
    set.addAnimation(moveLefttoRight);
    set.addAnimation(rotation);
    img_animation.startAnimation(set);
}

Rotation.xml

Rotation.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromDegrees="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="90" />

activity_main.xml

activity_main.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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/imgBanner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/banner" />

</RelativeLayout>

任何建议与我有益

Any suggestion is helpful with me

推荐答案

请尝试使用这样的:

RotateAnimation anim = new RotateAnimation(0f, 360f,
                    Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f);

因此​​,将相对转动本身。 希望这有助于。

So it will rotate relative to itself. Hope this helps.

编辑:

image.clearAnimation();
RotateAnimation anim = new RotateAnimation(30, 360, image.getWidth()/2, image.getHeight()/2);
anim.setFillAfter(true);
anim.setRepeatCount(0);
anim.setDuration(10000);
image.startAnimation(anim); 

我测试了这个在演示应用程序。它的工作太棒了。希望这可以帮助你:)

I tested this one in demo application. Its working great. Hope this helps you :)