[英]Use 9 Patch images instead of mdpi/ldpi/hdpi/xhdpi images
[英]scale images for ldpi mdpi hdpi and xhdpi
我有5個按鈕,background_button圖像尺寸為267x63。 我已經以ldpi mdpi hdpi xhdpi復制了所有分辨率為267x63的background_button。 當我嘗試運行我的應用程序時,按鈕在2,7“ QWGA中較大,但在平板電腦模式下較小。
在ldpi,mdpi,hdpi和xhdpi中,我的background_button最好的解決方法是什么?
xml按鈕:
<Button
android:id="@+id/button5"
android:layout_width="230dp"
android:layout_height="60dp"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:background="@drawable/a"
android:textColor="#FFFFFF"
android:textStyle="bold" />
如果我縮放background_button並設置為:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
我的按鈕很嚴格...您能幫我嗎?
實際上,您不應將“相同”圖像放置到所有文件夾-ldpi,-mdpi和-hdpi。
假設您要支持xxhdpi設備。 您為xxhdpi創建圖像(例如1Mb)並將其放置到所有文件夾中。 在ldpi設備上會得到什么? 圖像將被縮放。 屏幕上的圖像質量將非常糟糕。 還有另一件事:如果您希望同時在屏幕上顯示100張圖像,每張圖像的大小為2-5Mb,並且為xxhdpi設備創建所有這些圖像,則可以在ldpi設備上獲取OutOfMemoryError。
因此,最佳實踐是不要將相同的圖像放入所有文件夾。 如果您有一些與分辨率無關的圖像,則可以將它們放入可繪制的文件夾(不帶后綴)。 但是,您不應將相同的圖像放入ldpi和xxhdpi文件夾。
因此,調整大小的答案是可怕的。
看這篇文章
在“替代性可繪制項目”段落中。 在這張圖片上
您會看到,對於xhdpi設備,圖像應比mdpi大2倍。 等等。
希望能幫助到你
您可以使用以下代碼根據屏幕分辨率進行顯示-
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).
getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
代碼以調整圖像大小---
private Bitmap resizeImage( final Bitmap image) {
Bitmap resizedImage = null;
if(image != null)
{
int maxHeight = 80; //actual image height coming from internet
int maxWidth = 150; //actual image width coming from internet
int imageHeight = image.getHeight();
if ( imageHeight > maxHeight )
imageHeight = maxHeight;
int imageWidth = (imageHeight*image.getWidth()) // image.getHeight();
if ( imageWidth > maxWidth ) {
imageWidth = maxWidth;
imageHeight = (imageWidth*image.getHeight()) // image.getWidth();
}
resizedImage = Bitmap.createScaledBitmap(
image, imageWidth, imageHeight, true);
}
return resizedImage;
}
我的應用程序也支持多種屏幕尺寸,並且krossovochkin提供的鏈接是最適合使用的應用程序。 但是,在我的應用程序中,我使用了以下寬度大小,這些大小似乎很好用,並且分辨率非常適合我的需求:
ldpi-75px(120dpi分辨率)
mdpi-100px(160dpi分辨率)
hdpi-150px(240dpi分辨率)
xhdpi-200px(320dpi分辨率)
但是,所有這些都取決於您將要在按鈕NB上顯示的內容:確保您將按鈕縮放為向下而不是向上!
或者查看此設備的顯示
你做錯了。 您不能僅將健全的圖像放置在所有文件夾中-您需要為每個存儲桶正確縮放它。 作為解決方案,您應該在腦海中以一個目標密度(即xhdpi
)設計所有圖形,然后將其縮小以符合存儲桶要求。 由於比例因子是已知的,因此您可以通過多種方式執行此操作(也可以使用以下工具: 9patch resizer , FRED , Drawable Resizer或其他工具)。
請參閱開發人員網站上的此“ 支持多屏”文章。
嘗試使用這個...
<Button
android:id="@+id/button5"
android:layout_width="230dip"
android:layout_height="60dip"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:background="@drawable/a"
android:textColor="#FFFFFF"
android:textStyle="bold" />
您應該創建大小不同的圖像,並將其放入相應的文件夾drawable-mdpi
, drawable-hdpi
等。您不應修改xml代碼中的值。 查看developer.android的文章。 您需要從一個比例開始,例如xxxhdpi
,然后從該位置按比例縮小圖像的密度mdpi,hdpi,xhdpi,xxhdpi。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.