我有一個UI,其中根佈局是一個RelativeLayout。它有許多視圖,如字段,按鈕等。Android的setDrawingCacheEnabled()如何工作?
還有兩個其他面板最初是不可見的。當用戶點擊一個按鈕時,其中一個面板從左側滑入,另一個從底部滑入。問題是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);
}
}
}
位圖非空並且是正確的大小,但它是全黑的。
爲什麼我的位圖是黑色的?該代碼可能是淫穢的錯誤;我已經嘗試了一百萬種不同的東西,只是無法弄清楚。
您是否試圖擴展SlidingDrawer?它已經有了滑動動畫。 –
具體的動畫並不是我所追求的。我更想了解繪圖緩存如何工作,以便我可以將其應用於各種UI。 –
也許這是正確的方向:http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html – MrJre