Voy a añadir un brillo efecto de animación para un logotipo. Hasta ahora me las he arreglado para conseguir el brillo de la imagen detrás del logotipo, el uso de un LayeredDrawable, pero no puedo averiguar cómo animarlo. He encontrado que AlphaAnimation de lograr el efecto deseado, pero por desgracia sólo puedo aplicar en los puntos de vista, no Dibujables. ¿Cómo puedo lograr este efecto?

InformationsquelleAutor Casebash | 2010-05-25

4 Comentarios

  1. 8

    Ejemplo sencillo

    final ImageView imageView = (ImageView) findViewById(R.id.animatedImage);
    final Button animated = (Button) findViewById(R.id.animated);
    animated.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Drawable drawable = imageView.getDrawable();
            if (drawable.getAlpha() == 0) {
                ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(drawable, PropertyValuesHolder.ofInt("alpha", 255));
                animator.setTarget(drawable);
                animator.setDuration(2000);
                animator.start();
            } else {
                ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(drawable, PropertyValuesHolder.ofInt("alpha", 0));
                animator.setTarget(drawable);
                animator.setDuration(2000);
                animator.start();
            }
        }
    });

    Método getAlpha() agregar en la api de 19. Pero no es una gran restricción, usted puede guardar el estado de una variable local. ObjectAnimator agregar en Android 3.0 (api 11),tal vez una versión antigua de Android puede utilizar nineoldandroids. Yo no prueba con nineoldandroids.

  2. 0

    Gracias @AndreyNick, funciona como un encanto!
    He usado también para un LayerDrawable para animar a sólo una Imagen (una capa) en ella.
    Este es el código, tal vez podría ser útil para alguien:

    Drawable[] layers = new Drawable[2];
    layers[0] = new ColorDrawable(Color.RED);
    BitmapDrawable bd = new BitmapDrawable(activity.getResources(), bitmap);
    bd.setGravity(Gravity.CENTER);
    Drawable drawLogo = bd;
    layers[1] = drawLogo;
    LayerDrawable layerDrawable = new LayerDrawable(layers);
    
    layers[1].setAlpha(0);
    
    ((AppCompatActivity) activity).getSupportActionBar().setBackgroundDrawable(layerDrawable);
    
    ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(layers[1], PropertyValuesHolder.ofInt("alpha", 255));
    animator.setTarget(layers[1]);
    animator.setDuration(2000);
    animator.start();

    Que necesitaba para crear una imagen de la Barra de Acción con:

    • una capa (0), que es un color de fondo y
    • una capa (1) con el
      logo en el centro de ella (con la animación de desvanecimiento)

    Me carga el logo con Picasso y me gusta animar cuando se ha cargado (mapa de bits onBitmapLoaded de devolución de llamada).

    Espero que esto podría ayudar!

  3. -2

    Estoy usando una Animación en el ImageView la visualización de la imagen. Creo que esto debería ser posible en su caso.

    • Por desgracia, una capa de dibujable parece crear un único ImageView. Así que, si yo fuera a aplicar el Alfa Animación, entonces se aplicaría tanto para el logotipo y el resplandor.

Dejar respuesta

Please enter your comment!
Please enter your name here