Tengo una IU donde el diseño de la raíz es un RelativeLayout. Tiene una serie de Vistas, como campos, botones, etc.¿Cómo funciona SetDrawingCacheEnabled() de Android?
También hay otros dos paneles que son inicialmente 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 cuadros es patética en un Nexus S.
Quiero usar setDrawingCacheEnabled (true) para (espero) acelerar la animación de estos dos paneles. Como un ejemplo simplificado, aquí está más o menos cómo me deslizo en uno de estos paneles. Lo llamaré "panel detallado".
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 DetailPanel trato de usar el caché. Tenía la esperanza de que la representación de mapa de bits a través de la caché mejoraría 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 es del tamaño correcto, pero es completamente negro.
¿Por qué mi mapa de bits es negro? Ese código puede ser obscenamente incorrecto; Probé un millón de cosas diferentes y no puedo entenderlo.
¿Has intentado extender SlidingDrawer? Ya tiene la animación deslizante. –
La animación específica no es realmente lo que busco. Es más que quiero una comprensión general de cómo funciona la memoria caché de dibujo para poder aplicarla a todo tipo de UI. –
Tal vez esto es algo en la dirección correcta: http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html – MrJre