2012-06-28 4 views
9

Привет, я кодирую, чтобы установить Обои для рабочего стола. Он работает нормально. Но мой пиксель изображения полностью поврежден, а затем мои обои не соответствуют реальному размеру главного экрана. Я пытаюсь развить разные размеры изображений. К сожалению, это не работает для меня. Как это решить.Почему мои обои для домашнего экрана повреждены?

Мой код здесь

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
Drawable drawable = getResources().getDrawable(R.drawable.newimage); 
Bitmap wallpaper = ((BitmapDrawable) drawable).getBitmap();   
try 
{ 
    wallpaperManager.setBitmap(wallpaper); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

скриншоте Исходное изображение
enter image description here

скриншоте Android Emulator Home Screen
enter image description here

Почему мой оригинальный образ поврежден здесь.
Как показать My Original Image на основе Emulator Size.

+2

Что вы подразумеваете под «Мой пиксель изображения полностью поврежден»? Какой код вы написали и что вы пробовали? – bouteillebleu

+0

Почему бы не добавить скриншот, тогда мы лучше поймем, в чем проблема. – mariomario

+0

@mariomario Теперь я добавил свой скриншот. – Sekar

ответ

7

Вы можете попробовать это:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
Drawable drawable = getResources().getDrawable(R.drawable.newimage); 
Bitmap wallpaper_source = ((BitmapDrawable) drawable).getBitmap();   
try { 
    int w = wallpaperManager.getDesiredMinimumWidth(); 
    int h = wallpaperManager.getDesiredMinimumHeight(); 
    int x = (w-wallpaper_source.getWidth())/2; 
    int y = (h-wallpaper_source.getHeight())/2; 
    Bitmap wallpaper = Bitmap.createBitmap(w, h, Config.ARGB_8888); 
    Canvas c = new Canvas(wallpaper); 
    c.drawBitmap(wallpaper_source, x,y, null); 
    wallpaperManager.setBitmap(wallpaper); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
+0

Этот код работает супер. Я ожидаю результат, например, если размер изображения равен 72 * 72 или 1200 * 1200, а размер эмулятора - 480 * 480. Поэтому мне нужно изменить размер изображения как «480 * 480», не повреждая пиксель, а затем установить на «Обои». Благодарю. – Sekar

+0

Если это ответ, который вы принимаете, дайте этому парню его щедрость! – bkbeachlabs

0
WallpaperManager wallpaperManager = WallpaperManager.getInstance(activity); 
    BitmapFactory.Options myOptions = new BitmapFactory.Options(); 
    myOptions.inDither = true; 
    myOptions.inScaled = false; 
    myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    myOptions.inDither = false; 
    myOptions.inPurgeable = true; 
    Bitmap preparedBitmap = BitmapFactory.decodeResource(activity 
      .getApplication().getResources(), R.drawable.newimage, myOptions); 
    try 
    { 
     wallpaperManager.setBitmap(preparedBitmap); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

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