У меня есть интерфейс, где корневая компоновка - RelativeLayout. Он имеет несколько видов, таких как поля, кнопки и т.д.
Есть также две другие панели, которые изначально невидимы. Когда пользователь нажимает кнопку, одна из этих панелей скользит слева, а другая - снизу. Проблема в том, что частота кадров является жалкой на Nexus S.
Я хочу использовать setDrawingCacheEnabled (true), чтобы (надеюсь) ускорить анимацию этих двух панелей. В качестве упрощенного примера здесь примерно показано, как я скольжу в одной из этих панелей. Я назову его "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);
}
}
Теперь в DetailPanel я пытаюсь использовать кеш. Я надеялся, что рендеринг растровых изображений через кеш повысит производительность:
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);
}
}
}
Растровое изображение не имеет нулевого значения и имеет нужный размер, но полностью черный.
Почему мой растровый рисунок черный? Этот код может быть неприлично ошибочным; Я пробовал миллионы разных вещей и просто не могу понять.