Domanda

Voglio fare un'animazione, un'onda che si sposta da destra a sinistra. Ho fatto un'immagine di un'onda dove l'inizio di esso coincide con la fine

Inserisci Descrizione dell'immagine qui

Voglio fare un'animazione in cui la mossa dell'onda, con un animationlist avrei bisogno di più di 400 fotogrammi e le dimensioni dell'applicazione crescerebbero ...

Ho bisogno di un modo per spostare questo solo telaio da destra a sinistra, qualsiasi aiuto?

È stato utile?

Soluzione

È possibile creare un Drawable del tuo che implementa Animatable e che l'immagine si sposta da destra a sinistra.In realtà sarebbe una cosa utile avere.Tuttavia, non saresti stato in grado di specificarlo da XML, dovrai costruirlo e impostarlo programmaticamente.

Altri suggerimenti

Puoi persino creare un GIF e riprodurre questa GIF: Di seguito è riportato il codice:

Maineattività della classe:

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));
    }

}
.

Classe 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();
    }
}
.

Dentro la cartella Diseggi sarà la tua immagine GIF.

In primo luogo, devi raddoppiare le dimensioni dell'immagine SRC, con 2 onde non una. Successivamente, devi giocare con i limiti del telaio della tua imageview, devi adattarsi solo una onda.Questo è l'indizio.

Dopo aver preso nota della dimensione della tua immagine, in particolare la larghezza.

Per l'animazione, usa questo:

<?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" />
.

Ad esempio è possibile chiamarlo res / anim / wave.xml

Classe (attività?):

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

Potrebbe essere necessario giocare con le dimensioni dell'imaciplicazione, per avere un movimento continuo in movimento

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top