Ho un'interfaccia utente in cui il layout radice è un RelativeLayout. Ha un numero di viste, come campi, pulsanti, ecc.Come funziona setDrawingCacheEnabled() di Android?
Ci sono anche altri due pannelli che sono inizialmente invisibili. Quando l'utente fa clic su un pulsante, uno di questi pannelli scorre da sinistra, un altro scorre dalla parte inferiore. Il problema è che il frame rate è patetico su un Nexus S.
Voglio usare setDrawingCacheEnabled (true) per (spero) velocizzare l'animazione di questi due pannelli. Come esempio semplificato, qui è più o meno come faccio a scorrere in uno di questi pannelli. Lo chiamerò "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);
}
}
Ora nel DetailPanel provo ad usare la cache. Speravo che il rendering bitmap tramite la cache potrebbe migliorare le prestazioni:
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);
}
}
}
Il bitmap non è nullo ed è la giusta dimensione, ma è completamente nero.
Perché il bitmap è nero? Quel codice potrebbe essere oscenamente sbagliato; Ho provato un milione di cose diverse e non riesco a capirlo.
Hai provato a estendere SlidingDrawer? Ha già l'animazione scorrevole. –
L'animazione specifica non è esattamente ciò che sto cercando. È più che voglio una comprensione generale di come funziona la cache di disegno, quindi posso applicarla a tutti i tipi di interfacce utente. –
Forse questo è qualcosa nella giusta direzione: http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html – MrJre