2015-11-01 150 views
1

我創建了CanvasView對象,擴展了View類,並且在應用程序的清單中覆蓋了configChanged,正如您所看到的,Canvas不會再次正確重繪。在Android上保持畫布比例和縮放比例

  • 肖像:

Portarit

  • 景觀

Landscape

它看起來就像轉動不影響Canvas對象。

我試過無效並重新繪製,但它似乎沒有任何區別。

@Override 
protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
    super.onSizeChanged(w, h, oldw, oldh); 

    if(canvasBitmap == null){ 
     canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
    }else{ 
     Bitmap temporary = Bitmap.createScaledBitmap(canvasBitmap, w, h, true); 
     canvasBitmap = temporary; 
    } 
    mCanvas = new Canvas(canvasBitmap); 
    draw(mCanvas); 
    invalidate(); 
} 

我該如何保持畫布比例和縮放比例來顯示它適合旋轉後的新大小?

+0

其實很好的問題,我正在追蹤 – michael

回答

0

我有同樣的問題,但使用以下固定它:

override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { 
    super.onSizeChanged(w, h, oldw, oldh) 
    if(bitMap == null) { 
     bitMap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888) 
     canvas = Canvas(bitMap) 
    } else { 
     bitMap = Bitmap.createScaledBitmap(bitMap, w, h, true) 
     canvas = Canvas(bitMap) 
     canvas.drawBitmap(bitMap, 0f, 0f, bitMapPaint) 
    } 
}