2011-04-18 25 views
1

我正在使用畫布和位圖來繪製圖形,如圓形,矩形文本等,並希望我的圖形例程根據像素的真實屏幕分辨率使用實際像素,就像在PC圖形應用程序中一樣。顯然Android操作系統的目的是使用密度來嘗試並給用戶一個獨立於實際設備屏幕尺寸和分辨率的良好體驗。然而,當我給出的命令設置像素x,y,那麼它會很高興實際上有像素x,y設置,並沒有系統覆蓋我的座標 - 是否有可能覆蓋系統設置像素x,y?例如,如果屏幕設置爲320x480(G1或Hero),它可以正常工作 - 但在屏幕800x600的平板電腦(IMX515)上,圖形總是水平拉伸。Android:如何覆蓋密度並只使用像素?

我已經嘗試設置不同的密度的位圖和畫布,但沒有任何工作 - 在平板電腦上,他們總是伸展,以填補屏幕的寬度。 我也試過在艙單

<supports-screens android:anyDensity=」true」 /> 

下面是一些代碼段基於一SurfaceView: -

(1)在該位圖創建和設置(屏幕寬度,screenHeight來自度量): -

backBitmap=Bitmap.createBitMap(screenWidth,screenHeight,Bitmap.config.ARGB_8888); 

//backbitmap.setDensity(160) 

backCanvas=new Canvas(backBitmap) 

//backCanvas.setDensity(160); 

(2)在該圖中例程: -

paint.setStyle(Paint.Style.FILL); 
paint.setColor(Color.RED); 
backCanvas.drawCircle(50,50,30,paint); 

(3)在畫布的onDraw方法: -

protected void onDraw(Canvas canvas){ 
    if (drawingFlag==true){ 

    // canvas.setDensity(160) 

    canvas.drawBitmap(backBitmap,0,0,null); 
    } 

}

。 。 *解決方案* ** * ** 它多麼驚人的馬虎我 - 我一直與媒體播放器,離開了SurfaceView創建時下面的代碼: -

holder=mySurfaceView.getHolder(); 
holder.setFixedSize(320,480); 

這迫使繪圖進入320x480,然後在屏幕上縮放。 更改爲如下固定問題

holder.setFixedSize(800,600) 
+0

該問題是由我的代碼中的錯誤 - 我已經編輯上面顯示的解決方案。 – MacieFranks 2011-04-19 05:47:16

+0

你能提供一些關於你如何完成這個的更多信息嗎? – 2014-10-29 10:18:18

回答

1

。 。 *解決方案**它多麼驚人的馬虎我 - 我一直與媒體播放器,離開了SurfaceView創建時下面的代碼: -

holder=mySurfaceView.getHolder(); 
holder.setFixedSize(320,480); 

這是迫使繪製成320x480的再縮放穿過屏幕。改變如下固定的問題

holder.setFixedSize(800,600)