versiones pie oreo developer descargar android

oreo - android pie



¿Cómo funciona setDrawingCacheEnabled() de Android? (2)

De la documentación de Android ( http://developer.android.com/reference/android/view/View.html#setDrawingCacheEnabled%28boolean%29 ):

Habilitar el caché de dibujo es similar a configurar una capa cuando la aceleración de hardware está desactivada. Cuando la aceleración de hardware está activada, habilitar el caché de dibujo no tiene ningún efecto en la representación porque el sistema utiliza un mecanismo de aceleración diferente que ignora la bandera. Si desea utilizar un mapa de bits para la vista, incluso cuando la aceleración de hardware está habilitada, consulte setLayerType (int, android.graphics.Paint) para obtener información sobre cómo habilitar las capas de software y hardware.

Tal vez este es tu caso?

Tengo una interfaz de usuario donde el diseño raíz es un RelativeLayout. Tiene varias vistas, como campos, botones, etc.

También hay otros dos paneles que inicialmente son invisibles. Cuando el usuario hace clic en un botón, uno de estos paneles se desliza desde la izquierda, otro se desliza desde la parte inferior. El problema es que la velocidad de fotogramas es patética en un Nexus S.

Quiero usar setDrawingCacheEnabled (true) para (espero) acelerar la animación de estos dos paneles. A modo de ejemplo simplificado, aquí es más o menos cómo me deslizo en uno de estos paneles. Lo llamaré "detailPanel".

public class MyActivity extends Activity { // Initially invisible. private View detailPanel; // A simple slide animation. private Animation detailEnterAnimation; ... public void someButtonClicked(View view) { detailPanel.startAnimation(detailEnterAnimation); detailPanel.setVisibility(View.VISIBLE); detailPanel.setDrawingCacheEnabled(true); } }

Ahora en el DetailPanel trato de usar el caché. Esperaba que la representación del mapa de bits a través del caché mejorara el rendimiento:

public class DetailPanel extends LinearLayout { public void draw(Canvas canvas) { Bitmap cache = getDrawingCache(); if (cache != null) { canvas.drawBitmap(cache, 0, 0, null); } else { super.draw(canvas); } } }

El mapa de bits no es nulo y tiene el tamaño correcto, pero es completamente negro.

¿Por qué mi mapa de bits es negro? Ese código puede ser obscenamente incorrecto; He intentado un millón de cosas diferentes y simplemente no puedo resolverlo.


Es posible que desee crear su caché de dibujo antes de usarlo, de lo contrario, le dará un mapa de bits en blanco

public void someButtonClicked(View view) { detailPanel.startAnimation(detailEnterAnimation); detailPanel.setVisibility(View.VISIBLE); detailPanel.setDrawingCacheEnabled(true); detailPanel.buildDrawingCache(); //may be you need to add this? }