La animación de imagen de mapa de bits en android

He creado una imagen de mapa de bits que es un círculo y que como yo quería animar, así que se convirtió en bitmapdrawable y que se añadió a la animación dibujable..Pero debido a esto el círculo en forma de ha cambiado de forma oval…

Entonces, ¿qué debo hacer ?

¿Hay algún otro método para animar sólo el archivo de mapa de bits. ?

Gracias de antemano..

InformationsquelleAutor aagam94 | 2012-07-14

2 Kommentare

  1. 3

    no, usted no puede animar la bitmap sí mismo con el android animation framwork. Usted puede animar directamente Views o ViewGroups y todas las clases que se deriva de View y ViewGroup.

    Llamada view la ImageView que contiene el mapa de bits.

    TranslateAnimation slide = new TranslateAnimation(view.getX(), view.getX()  + 100, view.getY(), view.getY()  + 100 );   
    slide.setDuration(1000);
    view.startAnimation(slide) 

    que debe traducir el ImageView por 100px desde la posición actual

    • entonces, ¿qué debo hacer para animar el círculo que he creado usando mapa de bits ??
    • poner el mapa de bits dentro de una vista, y la animación de la propia vista. Voy a editar mi respuesta con un ejemplo
  2. 5

    Si usted está usando Canvas, me gustaría sugerir la celebración de un puntero a la actual mapa de bits y la carga de todos los otros mapas de bits en una matriz.

    Decir,

    Bitmap[] frames = new Bitmap[10] //10 frames
    Bitmap frame[0] = BitmapFactory.decodeResource(getResources(), R.drawable.circlefram1);
    Bitmap frame[1] = BitmapFactory.decodeResource(getResources(), R.drawable.circlefram2);
    ...

    Seleccione el currentFrame al señalar en el marco de los que estás interesado.

    Bitmap currentBitmap = frame[3]; //4th frame

    Así que cuando usted llama drawBitmap(currentBitmap) sólo dibujar el marco de usted está interesado en. Usted puede cambiar el mapa de bits cada tantos marcos, mediante la asignación de un fps en el marco de la animación.

    Si usted sólo quiere escalar o rotar el mapa de bits (rotación de un círculo?), la mejor manera de cambiar el tamaño de un mapa de bits es el uso de createScaledBitmap, y la rotación de uso de una matriz.

    Para la Escala, puede cargar cualquier mapa de bits en la memoria, de esta

    Bitmap circleBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.circle);

    Si desea que el círculo (o cualquier mapa de bits) reescalado que haría algo como esto:

    Bitmap scaledCircle = Bitmap.createScaledBitmap(circleBitmap, dstWidth, dstHeight, filter);

    Donde dstWidth y dstHeight son el destino de la anchura y la altura, que se puede calcular previamente por la ampliación de la anchura y altura originales.

    int scaledHeight = circleBitmap.getHeight()/2;
    int scaledWidth = circleBitmap.getWidth()/2;

    Y, finalmente, normalmente dibujar este mapa de bits usando una tela como esta

    canvas.drawBitmap(bitmap)

    Para rotar, crear una Matriz de

    Matrix mat;
    mat.postRotate(degrees); //Rotate the matrix
    Bitmap rotatedBitmap = Bitmap.createBitmap(originalBitmap, x, y, width, height, mat, filter);

    y finalmente

    canvas.drawBitmap(rotatedBitmap);

    Tenga en cuenta Lienzos son lentas para juegos o cualquier cosa en tiempo real!

    Espero que ayude.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea