Error al intentar crear revelación circular: IllegalStateException: no se puede iniciar esta animación en una vista separada
Por lo tanto, estoy experimentando tratando de crear una revelación circular en el API de nivel 21 en un TextView, pero sigo recibiendo este error. Al principio pensé que tenía algo que ver con el ciclo de vida del fragmento que estaba intentando pero luego intenté lo mismo en una actividad y todavía no funcionaría.
Aquí está el código:
- ¿Cómo puedo colocar un ProgressBar a la derecha de la barra de herramientas?
- Cómo puedo cambiar el color de texto del botón de diálogo predeterminado en android 5
- ¿Cómo usar StateListAnimator?
- ¿Cómo implementar una interfaz de usuario similar a la UI de aplicaciones recientes de Lollipop?
- Cómo resolver el error onClientConnectionState () - status = 22 clientIf = 7 en BLE
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Window w = getWindow(); w.setFlags( WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); w.setStatusBarColor(Color.parseColor("#0277bd")); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.text); int a = (tv.getLeft() + tv.getRight()) / 2; int b = (tv.getTop() + tv.getBottom()) / 2; int radius = tv.getWidth(); Animator anim = ViewAnimationUtils.createCircularReveal(tv, a, b, 0, radius); anim.start(); } @Override public boolean onCreateOptionsMenu(Menu menu) { return super.onCreateOptionsMenu(menu); } }
Todavía es temprano, así que no puedo encontrar respuestas sobre esto. ¿Algunas ideas?
- Android: ¿Detectar el estado de No molestar?
- ¿Cómo personalizar el botón "arriba" cuando se está expandiendo el searchView?
- Transiciones de elementos compartidos entre vistas (no actividades o fragmentos)
- Android Material botón circular
- Diseño de material de Card_view
- ¿Cómo obtener un solo marco de vista previa en Camera2 API Android 5.0?
- Cómo cambiar el color del borde de overscroll y overscroll resplandor
- ¿Cuál es la diferencia entre Android 4.4W (API20) y Android L (API20, L Preview) en el SDK Manager?
Usted está recibiendo el error porque la vista que pasó en no se ha medido y presentado en la pantalla todavía. ViewAnimationUtils.createCircularReveal
necesita que la vista de destino se mida para calcular la animación. También encontrará que sus variables a
y b
son siempre 0.
Si desea experimentar, cree la animación y iníciela en un oyente de clic de botón. He aquí un ejemplo de uso de su código:
Button button = (Button) findViewById(R.id.your_button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TextView tv = (TextView) findViewById(R.id.text); int a = (tv.getLeft() + tv.getRight()) / 2; int b = (tv.getTop() + tv.getBottom()) / 2; int radius = tv.getWidth(); Animator anim = ViewAnimationUtils.createCircularReveal(tv, a, b, 0, radius); anim.start(); } });
Puede utilizar Runnable
para hacer la animación. Runnable
se ejecutará después de la creación de la vista. No es necesario publicar la demora.
view.post(new Runnable() { @Override public void run(){ //create your anim here } });
O usted puede hacer esto.
tv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { tv.getViewTreeObserver().removeGlobalOnLayoutListener(this); } else { tv.getViewTreeObserver().removeOnGlobalLayoutListener(this); } Animator anim = ViewAnimationUtils.createCircularReveal(tv, a, b, 0, radius); anim.start(); } });
La adición de GlobalLayoutListener para esperar a que la vista se inflara funcionó para mí.
Llame a su lógica Animator
de onResume()
. De esta manera usted estará seguro de que todas las vistas se han adjuntado en el diseño.
O usted puede hacer esto.
tv.postDelayed(new Runnable() { @Override public void run() { //start your animation here } }, 1000);
- SQL Android Formulación de consultas con múltiples condiciones
- Biblioteca de soporte de Android: getDrawable independiente si vector o no