Как масштабировать изображение обоев в зависимости от типа устройства - PullRequest
0 голосов
/ 30 марта 2012

Я занимаюсь разработкой приложения, в котором изображение обоев устройства должно меняться через определенные промежутки времени. Я сохранил изображения в папке для рисования. Я использую WallpaperManager, чтобы установить эти изображения в качестве обоев.

Чтобы приложение работало на разных устройствах, я сохранил несколько копий изображений разного размера в разных папках, таких как drawable-small, drawable-xlarge, в каталоге res. Тем не менее, они не масштабируются должным образом на каждом устройстве.

Мой вопрос заключается в том, как мне обеспечить, чтобы изображения обоев хорошо подходили к каждому устройству. Должен ли я сделать это программно? Любой пример кода будет иметь огромную помощь. Спасибо.

Это код, который я использовал

Drawable drawable;
WallpaperManager wpm;

@Override
    public void onCreate() {
        super.onCreate();
        wpm=WallpaperManager.getInstance(WallAlarm.this);
        drawable = getResources().getDrawable(R.drawable.two);
    }

     Bitmap wallpaper=((BitmapDrawable)drawable).getBitmap();
     ImageView iv=new ImageView(this);
     iv.setImageDrawable(drawable);
     iv.setScaleType(ScaleType.FIT_XY);

     try {
            wpm.setBitmap(wallpaper);
     } catch (IOException e) {
            e.printStackTrace();
     }

}

}

Ответы [ 2 ]

0 голосов
/ 04 марта 2016

Попробуйте использовать что-то вроде DisplayMetrics и масштабируйте / обрезайте изображение в соответствии с отображением:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

metrics.heightPixels;
metrics.widthPixels;

или используйте или getSize () :

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
0 голосов
/ 30 марта 2012

Вы можете использовать

Display display = Activity.getWindowManager().GetDefaultDisplay();
display.getHeight();
display.getWidth();

, чтобы выбрать изображение в соответствии с соотношением экрана.

Или использовать «optionType option»

...