2014-12-07 5 views
1

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

Я используя viewpager и в адаптере, у меня есть кнопка и изображение. Я хочу установить изображение из изображения в качестве фонового изображения при нажатии кнопки с помощью myWallpaperManager.setBitmap (изображение). До этого я изменяю размер изображения в соответствии с размером экрана. Обои меняются, но изображение остается масштабированным и обрезанным. Я хотел бы установить обои со всей картиной. У меня одинаковые значения для ширины и высоты getDefaultDisplay(), а также ширина и высота myWallpaperManager.getDesiredMinimumHeight/Width().

Я пробовал много разных способов, которые не сработали. Я не знаю, что еще делать! Большое спасибо за ваш ответ.

Вот код:

Button ButWallpaper = (Button) viewLayout.findViewById(R.id.ButWallpaper); 

     ButWallpaper.setOnClickListener(new Button.OnClickListener(){ 
      @Override 
      public void onClick(View arg0) { 
       Bitmap image; 
       Bitmap imagelarge = ((BitmapDrawable)imageView2.getDrawable()).getBitmap(); 

       int Measuredwidth = 0; 
       int Measuredheight = 0; 
       Point size = new Point(); 
       WindowManager w = _activity.getWindowManager(); 

      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
       w.getDefaultDisplay().getSize(size); 
       Measuredwidth = size.x; 
       Measuredheight = size.y; 
      }else{ 
       Display d = w.getDefaultDisplay(); 
       Measuredwidth = d.getWidth(); 
       Measuredheight = d.getHeight(); 
      } 

      Log.i("TAG", String.valueOf(Measuredwidth)); 
      Log.i("TAG", String.valueOf(Measuredheight)); 

      image = Bitmap.createScaledBitmap(imagelarge, Measuredwidth, Measuredheight,true); 


       // TODO Auto-generated method stub 
      WallpaperManager myWallpaperManager 
      = WallpaperManager.getInstance(_activity.getApplicationContext()); 
      try { 
       myWallpaperManager.setBitmap(image); 
       myWallpaperManager.suggestDesiredDimensions(Measuredwidth, Measuredheight); 

       Log.i("TAG", String.valueOf(myWallpaperManager.getDesiredMinimumHeight())); 
       Log.i("TAG", String.valueOf(myWallpaperManager.getDesiredMinimumWidth())); 

       Toast.makeText(_activity.getApplicationContext(), "Wallpaper changed", toast.LENGTH_LONG).show(); 

      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     }}); 

ответ

0

Смотрите, если это помогает:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
int height = metrics.heightPixels; 
int width = metrics.widthPixels; 
Bitmap bitmap = Bitmap.createScaledBitmap(yourimagebitmap, width, height, true); 
WallpaperManager.getInstance(MyActivity.this).setBitmap(bitmap); 

Источник: Android setting wallpaper gone wrong

+0

Привет, спасибо за ваш ответ. К сожалению, ничего не изменилось, у меня все еще есть обрезанная картинка ... Есть ли вероятность, что это связано с последними обновлениями Android? – tienow

+0

http://stackoverflow.com/questions/22759358/wallpaper-not-properly-fit-on-device-screen –

1

Вы можете попробовать мой код:

try{ 
      DisplayMetrics metrics = new DisplayMetrics(); 
      WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); 
      windowManager.getDefaultDisplay().getMetrics(metrics); 
      int height = metrics.heightPixels; 
      int width = metrics.widthPixels; 
      Bitmap tempbitMap = BitmapFactory.decodeFile(path); 
      Bitmap bitmap = Bitmap.createScaledBitmap(tempbitMap,width,height, true); 
      WallpaperManager wallpaperManager = WallpaperManager.getInstance(mContext); 
      wallpaperManager.setWallpaperOffsetSteps(1, 1); 
      wallpaperManager.suggestDesiredDimensions(width, height); 
      try { 
       wallpaperManager.setBitmap(bitmap); 
       Toast.makeText(mContext, "Set wallpaper success", Toast.LENGTH_SHORT).show(); 
       } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     }catch(Exception e){ 
     Log.e("DATA", "Cannot set image as wallpaper", e); 
     } 

это нормально ! И вы добавите разрешение:

<uses-permission android:name="android.permission.SET_WALLPAPER" /> 
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" /> 
Смежные вопросы