Установить обои в Android - PullRequest
0 голосов
/ 18 октября 2011

У меня есть изображение 640 * 480 на SD-карте, и я хочу установить его в качестве обоев домашнего экрана. Как я могу сделать это с небольшой потерей качества? С моим кодом обои имеют не очень хорошую ясность. Это мой код:

private void setWallpaper(String filePath) throws IOException{
    if(filePath!=null){
    // set options for decoding
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inScaled = false;
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    options.inDither = false;   
    options.inJustDecodeBounds = true;
    //get bitmap from filepath
    Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
    //get sizes of bitmap
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    //get sizes of screen and scale level
    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int newWidth = display.getWidth()*2;
    int newHeight = display.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    //set matrix of the scaling
    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);
    //get new bitmap for wallpaper
    Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
            width, height, matrix, true);
    //set bitmap as wallpaper
    WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
    wallpaperManager.clear();
    wallpaperManager.setBitmap(resizedBitmap);
    }
    }

1 Ответ

0 голосов
/ 18 октября 2011

Каждый раз, когда вы увеличиваете масштаб, вы будете страдать от потери качества.Какой размер экрана вы пытаетесь показать это изображение?Имейте в виду, что размеры обоев Android - это высота экрана, в 2 раза превышающая ширину экрана (например, экран 800x480 требует изображения 800x960).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...