2010-12-15 6 views
2

我正在瀏覽Android上的支持多屏幕文檔,需要一些說明。Android:如何以編程方式顯示不同屏幕分辨率/大小的圖像

這是我的理解是,設計三個獨特的接口(ldpi,mdpi和hdpi)將是支持所有潛在的android屏幕的最佳方式。

但我相信當你在設計時做這件事的時候,這會保持真實。

但如果你在運行時編程創建一個視圖,並且想要設置背景圖像,那麼上述是否成立?

我試圖使用以下繪製在畫布上的位圖,

canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.image_1),0,0,NULL); 在我的自定義視圖中擴展了SurfaceView,然後在我的主要活動中使用這個視圖。

現在我使用image_1.png,它是使用gimp的480 * 800像素。

如果我在上面的代碼中使用這個圖像,那麼它顯示不正確,圖像顯得較大,即圖像對於屏幕來說顯得太大,因此無法顯示完整內容。

你能請指教什麼是最好的方法去做到這一點?

感謝, --ad

+0

感謝您的回覆。那麼這意味着我需要按照以下dpi創建圖像,-ldpi是〜120dpi,-mdpi是〜160dpi,-hdpi是〜240dpi。並且不必擔心圖片大小?我的意思是考慮到上述dpi,我可以創建任何尺寸的圖像,並且在設備中顯示時,android會照顧到這一點? - – adad 2010-12-15 20:14:50

回答

0

見。 將圖像放入3個不同大小和分辨率(即hdpi,ldpi和mdpi)的文件夾中。你可以叫這個圖片的方式:

R.drawable.image_name 

別擔心機器人會照顧和大屏幕上它會打開華電國際,其中在小屏幕它將從LDPI打開圖像。

定義時,高度和寬度使用dp作爲單位而不是像素。

+0

感謝您的回覆。那麼這意味着我需要按照以下dpi創建圖像,-ldpi是〜120dpi,-mdpi是〜160dpi,-hdpi是〜240dpi。並且不必擔心圖片大小?我的意思是考慮到上述dpi,我可以創建任何尺寸的圖像,並且在設備中顯示時,android會照顧到這一點? – adad 2010-12-15 20:11:09

+0

是的。創建-ldpi是〜120dpi,-mdpi是〜160dpi,-hdpi是〜240dpi大小的圖像將根據分辨率顯示它們。你不需要擔心它。 – 2010-12-16 07:56:37

0

嗯,我不是太熟悉drawBitmap方法,但我看到這個文檔中:

「如果位圖和帆布具有不同的密度,此功能將自動縮放位護理以與畫布相同的密度繪製。「

在位圖上有一個getDensity和setDensity方法,所以你可以調用getDensity來看看它是什麼,然後在drawBitmap之前試驗setDensity,看看是否有幫助。

注意:Canvas也有一個getDensity方法,因此您可以將其打印到日誌中並查看將Bitmap密度設置爲相同的值是否可防止縮放問題。

還有:drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)方法,它在文檔中聲明:「該函數忽略與位圖相關的密度,這是因爲源和目標矩形座標空間處於其各自的密度,所以必須已經具有適用的比例因子「。

+0

感謝您的回覆。那麼這意味着我需要按照以下dpi創建圖像,-ldpi是〜120dpi,-mdpi是〜160dpi,-hdpi是〜240dpi。並且不必擔心圖片大小?我的意思是考慮到上述dpi,我可以創建任何尺寸的圖像,並且在設備中顯示時,android會照顧到這一點? - – adad 2010-12-15 20:12:50

相關問題