2013-11-22 44 views
1

我的問題是關於繪畫性能。比方說,我有一個Bitmap圖片寬度= 2400px和高度= 800px。我的Canvas只有800px寬,800px高。包含CanvasViewHorizontalScrollView的孩子,因此用戶可以滾動以查看整個圖像。在Android中將畫外屏繪製爲畫布效果

我加載了Bitmap一次,並在onDraw方法中每畫一遍。在這種情況下,「屏幕外」繪圖是否會導致性能下降?如果是這樣,如何讓它更流暢?

謝謝。

回答

0

當然,位圖大小是一個問題。在典型的Android實現中,尺寸超過4000px的紋理無法呈現。在某些Android設備中,此限制爲2000px。

由於您的目標是允許用戶滾動查看整個圖像,如果我是你,我不會使用Horizo​​ntalScrollView。相反,您應該實現View的子類並重寫onDraw(Canvas canvas)方法。然後,您可以檢測觸摸並修改矩陣。這樣的矩陣將用於調用Canvas.drawBitmap(位圖,矩陣,繪圖)

特別針對超大圖像問題,在接收到Bitmap對象時,可以將其分爲6塊。 (2400×800→800×800×6)。然後,您應該控制視口位置並推斷圖像的可見部分。在最好的情況下,您只需繪製1個800x800位圖。在最壞的情況下,您需要繪製4個800x800位圖。