2014-12-07 197 views
1

我花似乎並不複雜的問題小時,但儘管關於這一主題的所有現有消息,我還沒有找到解決的辦法......屏幕尺寸壁紙適合圖像

我使用viewpager和適配器我有一個按鈕和一個imageview。我想通過使用myWallpaperManager.setBitmap(image)單擊按鈕時,將imageview中的圖片設置爲牆紙。在此之前,我調整圖片大小以適應屏幕大小。壁紙被改變,但圖片保持縮放和裁剪。我想設置整個圖片的壁紙。 我對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 2014-12-07 22:58:31

+0

http://stackoverflow.com/questions/22759358/wallpaper-not-properly-fit-on-device-screen – 2014-12-08 04:51:19

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" />