簡體   English   中英

縮放ldpi,mdpi,hdpi和xhdpi的圖像

[英]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 resizerFREDDrawable 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-mdpidrawable-hdpi等。您不應修改xml代碼中的值。 查看developer.android的文章。 您需要從一個比例開始,例如xxxhdpi ,然后從該位置按比例縮小圖像的密度mdpi,hdpi,xhdpi,xxhdpi。

暫無
暫無

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

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