Подтвердить что ты не робот

Графические размеры для hdpi/ldpi/mdpi

У меня есть изображение кнопки с размерами 300 * 90. Как должны быть размеры для hdpi/mdpi/ldpi? Спасибо

4b9b3361

Ответ 1

Google предлагает использование

3 : 4 : 6 : 8 : 12 : 16 коэффициенты масштабирования для

ldpi : mdpi : hdpi : xhdpi : xxhdpi : xxxhdpi соответственно. Пример:

  • 36x36 для низкой плотности
  • 48x48 для средней плотности
  • 72x72 для высокой плотности
  • 96x96 для сверхвысокой плотности
  • 144x144 для сверхвысокой плотности
  • 192x192 для дополнительной сверхвысокой плотности (только значок запуска)

В вашем примере, если указанные размеры кнопок для hdpi, правильные размеры должны быть:

  • 150x45 ldpi
  • 200x60 mdpi
  • 300x90 hdpi
  • 400x120 xhdpi
  • 600x180 xxhdpi

Ответ 2

Это зависит от того, на каком экране размера экрана вы разработали эту графику. Если вы хотите, чтобы он отображался как 300x90 на холсте 320x480 (HVGA), то ваши размеры пикселей правильны для устройств MDPI, и вам понадобятся следующие изображения:

  • LDPI: 225x68px
  • MDPI: 300x90px
  • HDPI: 450x135px

LDPI - это 75% масштабирования MDPI, а HDPI - 150% от масштабирования MDPI. Например, если вы разработали эти графические размеры на холсте 480x800 (WVGA), то ваши размеры уже правильны для HDPI, и вам нужно масштабировать другие два оттуда:

  • LDPI: 150x45px
  • MDPI: 200x60px
  • HDPI: 300x90px

Надеюсь, что это поможет!

Ответ 3

Полная формула для создания всех изображений папки с ресурсами

Сначала вам нужно решить, для какого DPI вы создаете "Изображения", как только вы решили и создали изображения, используйте следующий код в соответствии с Линии Google Guide

public class DPICalculator {

    private final float LDPI = 120;
    private final float MDPI = 160;
    private final float HDPI = 240;
    private final float XHDPI = 320;

    private final float BASE_DPI = MDPI;

    public static void main(String[] args) {
        DPICalculator cal = new DPICalculator();

        cal.calculateDPI_baseUnitPixel(300, 90, cal.HDPI);
    }

    private float densityWidth;
    private float densityHeight;

    public void calculateDPI_baseUnitPixel(float width, float height, float currentDensity) {

        densityWidth = getDensityPX(width, currentDensity);
        densityHeight = getDensityPX(height, currentDensity);

        this.calculateAllDP();
    }

    private float getDensityPX(float value, float currentDensity) {
        return (value / (currentDensity / BASE_DPI));
    }

    public void calculateDPI_baseUnitDPI(float width, float height, float currentDensity) {

        densityWidth = getDensityDPI(width, currentDensity);
        densityHeight = getDensityDPI(height, currentDensity);

        this.calculateAllDP();
    }

    private float getDensityDPI(float value, float currentDensity) {
        return (value * (currentDensity / BASE_DPI));
    }

    private void calculateAllDP() {
        // get all settings.
        float low_pw = densityWidth * (LDPI / BASE_DPI);
        float low_ph = densityHeight * (LDPI / BASE_DPI);

        float med_pw = densityWidth * (MDPI / BASE_DPI);
        float med_ph = densityHeight * (MDPI / BASE_DPI);

        float high_pw = densityWidth * (HDPI / BASE_DPI);
        float high_ph = densityHeight * (HDPI / BASE_DPI);

        float xhigh_pw = densityWidth * (XHDPI / BASE_DPI);
        float xhigh_ph = densityHeight * (XHDPI / BASE_DPI);

        System.out.println("LDPI " + low_pw + " x " + low_ph);
        System.out.println("MDPI " + med_pw + " x " + med_ph);
        System.out.println("HDPI " + high_pw + " x " + high_ph);
        System.out.println("XHDPI " + xhigh_pw + " x " + xhigh_ph);

    }
}

Результат

LDPI 150.0 x 45.0
MDPI 200.0 x 60.0
HDPI 300.0 x 90.0
XHDPI 400.0 x 120.0

Ответ 4

Для этого вы можете попробовать инструмент, который был создан для масштабирования изображений (одиночных или пакетных) разных типов (png, jpg, gif, svg, psd, 9-patch..). Использует алгоритмы масштабирования качества hiqh и поддерживает некоторые инструменты сжатия без потерь, такие как pngcrush. Существует графический интерфейс и командная строка ui.

https://github.com/patrickfav/density-converter

screenshot