Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


ObjectAnimator con la propiedad scale hace bg black?

Utilizo ObjectAnimator para reducir un RelativeLayout:

ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(view, "scaleX", 0.5f); ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(view, "scaleY", 0.5f); scaleDownY.setDuration(1000); AnimatorSet scaleDown = new AnimatorSet(); scaleDown.play(scaleDownX).with(scaleDownY); scaleDown.start(); 

Se desciende bastante bien como se esperaba, pero el problema es que el área en torno a la vista más pequeña es negro hasta que otra acción del usuario, que es indeseable. Quiero que coincida con el fondo del padre de la vista escalada. Cualquier idea de cómo hacer que el área alrededor de cuadrado rojo tiene el color correcto de inmediato?

Introduzca aquí la descripción de la imagen

Mi xml:

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:gui="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/bg" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity$DummySectionFragment"> <RelativeLayout android:id="@+id/res1" android:layout_width="50dp" android:layout_height="50dp" android:tag="res1" android:background="@android:color/holo_red_dark" android:layout_alignTop="@+id/res2" android:layout_alignRight="@+id/include3" android:layout_marginRight="11dp"> <TextView android:layout_marginLeft="15dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="res1" android:id="@+id/res1T" android:layout_centerVertical="true" android:layout_centerHorizontal="true"/> </RelativeLayout> </RelativeLayout> 

  • Android libvlc problemas de superficie múltiples
  • Android- cómo programar una vista entre las vistas en el diseño pre-cargado desde el XML?
  • RatingBar se está semi-transparente
  • Tabhost- establece la posición de la divisa en pestañas Android
  • ¿Es posible cambiar el valor final de ObjectAnimator con la animación iniciada?
  • Deslizando un fragmento sobre otro en Android
  • Cómo enviar datos de la Actividad al Fragmento
  • ¿Cuál es la ventaja de usar Fragmentos en Android, en lugar de Vistas?
  • 2 Solutions collect form web for “ObjectAnimator con la propiedad scale hace bg black?”

    Puede que no sea la solución más limpia, pero si se agrega el oyente de actualización de animación y se invalida el padre, se podría realizar el trabajo.

     ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(view, "scaleX", 0.5f); ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(view, "scaleY", 0.5f); scaleDownX.setDuration(1000); scaleDownY.setDuration(1000); AnimatorSet scaleDown = new AnimatorSet(); scaleDown.play(scaleDownX).with(scaleDownY); scaleDownX.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { View p= (View) v.getParent(); p.invalidate(); }); scaleDown.start(); 

    La razón por la que la respuesta anterior es la necesidad de invalidar el padre es porque su escala AnimatorSetDown no tiene destino. Debe establecer el Objetivo de su ObjectAnimator a null y establecer el objetivo en el AnimatorSet. O una mejor manera sería utilizar el código de abajo:

     ObjectAnimator scaleDown = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat("scaleX", 0.5f), PropertyValuesHolder.ofFloat("scaleY", 0.5f)); scaleDown.setDuration(1000); scaleDown.start(); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.