簡體   English   中英

Android:如何以編程方式顯示不同屏幕分辨率/大小的圖像

[英]Android: How to display IMAGE for Different screen resolutions/size programmatically

我正在閱讀有關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

看到。 將圖像分別放在3個文件夾中,每個文件夾具有不同的大小和分辨率,即hdpi,ldpi和mdpi。 您可以通過以下方式調用圖片:

R.drawable.image_name

不用擔心android會保重,在大屏幕上它將打開hdpi,而在小屏幕上,它將打開ldpi中的圖像。

定義時,高度和寬度以dp為單位而不是像素。

嗯,我不太熟悉該drawBitmap方法,但是我在文檔中確實看到了這一點:

“如果位圖和畫布具有不同的密度,則此功能將自動縮放位圖,以與畫布相同的密度進行繪制。”

Bitmap上有一個getDensity和setDensity方法,因此您可以調用getDensity看看它是什么,然后在drawBitmap之前嘗試一下setDensity來看看是否有幫助。

注意:Canvas還具有getDensity方法,因此您可以將其打印到日志中,並查看將位圖密度設置為相同的值是否可以防止縮放問題。

還有一個drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)方法,該方法在文檔中指出:“此函數忽略與位圖關聯的密度。這是因為源和目標矩形坐標空間位於它們各自的密度,因此必須已經應用了適當的縮放因子。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM