(андроид) установить обои рабочего стола с правильными размерами - PullRequest
0 голосов
/ 19 ноября 2011

Я сейчас создаю приложение и хочу сменить обои.Так вот мой код.Когда пользователь устанавливает обои, я сохраняю путь к Shared Preferences.

Display display = getWindowManager().getDefaultDisplay();

SharedPreferences prefs = getBaseContext().getSharedPreferences(PREFS_NAME,0);
if (prefs.contains(d)) {
    Bitmap bitmapOrg = BitmapFactory.decodeFile(prefs.getString(d, ""));

    int newWidth = display.getWidth();
    int newHeight = display.getHeight();

    Bitmap resizedBitmap =Bitmap.createScaledBitmap(bitmapOrg, newWidth, newHeight, true);
    myWallpaperManager.setBitmap(resizedBitmap);
}

и с этим кодом я получаю что-то вроде this , в то время как я хочу показать картинки вроде this

есть идеи как это сделать?

1 Ответ

1 голос
/ 23 ноября 2011

Хорошо, я узнал, как это сделать.Сначала я создаю новое растровое изображение

newBmp = Bitmap.createBitmap(display.getWidth(), display.getHeight(), Bitmap.Config.ARGB_8888);

, затем размер исходного растрового изображения изменяется:

Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmapOrg, scaleWidth, scaleHeight, false);

, затем я вызываю оверлей, чтобы нарисовать оба изображения вместе.Первое изображение имеет размеры дисплея, а второе - изображение.

vate Bitmap overlay(Bitmap bmp1, Bitmap bmp2, int left, int imgsize) {
   Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
   Canvas canvas = new Canvas(bmOverlay);
   canvas.drawBitmap(bmp1, new Matrix(), null);
   canvas.drawBitmap(bmp2, left-(imgsize/2), 15, null);
   return bmOverlay;
}

и, наконец,

myWallpaperManager.setBitmap(newB);
...