简体   繁体   English

如何应用多个平移动画?

[英]How to apply multiple transaltion Animation?

I am trying to apply multiple translation animation sequentially to my Image View.我正在尝试将多个翻译动画按顺序应用于我的图像视图。

But I always ended up having the last animation executed.但我总是最终执行最后一个动画。

I don't why this is happening.我不明白为什么会这样。 I even add some System Clock sleep call, that's not effective either.我什至添加了一些系统时钟睡眠调用,这也无效。

I don't know what I am doing wrong here.我不知道我在这里做错了什么。

I created a single activity app for making this more simple.我创建了一个单一的活动应用程序来使这更简单。 In this app, I have only one Image View .在这个应用程序中,我只有一个Image View And I am implementing multiple translation on this Image View .我正在这个Image View上实现多重翻译。

Applied translations are -应用翻译是 -

translation Left翻译左

translation Right翻译权

translation Right翻译权

translation Left翻译左

translation Up翻译起来

translation Down翻译下来

translation Down only this is working翻译下来,这才有效

translation Up翻译起来

This is my full code for better understanding这是我的完整代码,以便更好地理解

package com.example.translationanimation;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    ImageView arshadImage;

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

    public void imagePressed(View v) {
        translateLeft();
        SystemClock.sleep(2200);
        translateRight();
        SystemClock.sleep(2200);
        translateRight();
        SystemClock.sleep(2200);
        translateLeft();
        SystemClock.sleep(2200);
        translateUp();
        SystemClock.sleep(2200);
        translateDown();
        SystemClock.sleep(2200);
        translateDown();
        SystemClock.sleep(2200);
        translateUp();
    }

    public void translateLeft() {
        arshadImage.animate().translationXBy(1800).setDuration(2000);
    }

    public void translateRight() {
        arshadImage.animate().translationXBy(-1800).setDuration(2000);
    }

    public  void translateUp() {
        arshadImage.animate().translationYBy(1800).setDuration(2000);
    }

    public void translateDown() {
        arshadImage.animate().translationYBy(-1800).setDuration(2000);
    }
}

Just create an XML resource, like this :只需创建一个 XML 资源,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:pivotX="10%"
    android:pivotY="10%"
    android:repeatCount="infinite"
    android:repeatMode="reverse"/>

In code : (I do this, cause it's easy to trigger)在代码中:(我这样做,因为它很容易触发)

Animation animation = AnimationUtils.loadAnimation(this, R.anim.shake);
mBinding.image.startAnimation(animation);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM