문제

나는 애니메이션을하고 싶습니다. 웨이브가 오른쪽에서 왼쪽으로 이동합니다. 나는 그것이 시작되는 파도의 이미지를 만들었습니다

여기에 이미지 설명을 입력하십시오

웨이브가 움직이는 애니메이션을하고 싶습니다. animationlist가 400 프레임 이상이 필요하며 응용 프로그램의 크기가 자라게 될 것입니다 ...

이 유일한 프레임을 오른쪽에서 왼쪽으로 이동하는 방법이 필요합니다. 어떤 도움이 필요합니까?

도움이 되었습니까?

해결책

Drawable를 구현하고 이미지가 오른쪽에서 왼쪽으로 이동할 수있는 Animatable를 만들 수 있습니다.그것은 실제로 가질 수있는 것입니다.그러나 XML에서 지정할 수 없으며 프로그래밍 방식으로 설정하고 설정해야합니다.

다른 팁

GIF를 만들고이 GIF를 재생할 수도 있습니다. 다음은 코드입니다.

class mainactivity :

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(new MYGIFView(MainActivity.this));
    }

}
.

클래스 MyGiFView :

import java.io.InputStream;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Movie;
import android.view.View;

class MYGIFView extends View {

    Movie movie, movie1;
    InputStream is = null, is1 = null;
    long moviestart;

    public MYGIFView(Context context) {
        super(context);

        // Provide your own gif animation file

        is = context.getResources().openRawResource(R.drawable.animation);
        movie = Movie.decodeStream(is);

    }

    @Override
    protected void onDraw(Canvas canvas) {

        canvas.drawColor(Color.WHITE);
        super.onDraw(canvas);
        long now = android.os.SystemClock.uptimeMillis();
        System.out.println("now=" + now);
        if (moviestart == 0) { // first time
            moviestart = now;

        }
        System.out.println("\tmoviestart=" + moviestart);
        int relTime = (int) ((now - moviestart) % movie.duration());
        System.out.println("time=" + relTime + "\treltime=" + movie.duration());
        movie.setTime(relTime);
        movie.draw(canvas, this.getWidth() / 2 - 20, this.getHeight() / 2 - 40);
        this.invalidate();
    }
}
.

도달 가능한 폴더 안쪽에 GIF 이미지가됩니다.

첫째, 이미지 크기의 크기를 두 배로 늘리고 2 개의 파도가 아닙니다. 다음으로 이미지보기의 프레임 경계를 사용하여 하나만 웨이브 만 맞게해야합니다.이것은 단서입니다.

이미지 크기, 특히 너비를 기록하십시오.

애니메이션의 경우 다음을 사용하십시오.

<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0%"
    android:toXDelta="-50%"
    android:fromYDelta="0%"
    android:toYDelta="0%"
    android:duration="500"
    android:repeatCount="1000"
    android:interpolator="@android:anim/linear_interpolator"
    android:zAdjustment="top" />
.

예를 들어 res / anim / wave.xml 의 이름을 지정할 수 있습니다.

클래스 (활동?) :

    ...
    Animation anim = AnimationUtils.loadAnimation( this, R.anim.wave);
    anim.setRepeatMode(Animation.Infinite);
    animatedIm = (ImageView) findviewbyid(<your-id>)
    animatedIm.setAnimation(anim); 
.

ImageView 크기로 재생해야 할 수도 있고 계속해서 지속적인 웨이브를 움직여야합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top