2012-07-10 60 views
5

我正在开发一个应用程序,从图库中选择一个图像,然后将该图像设置为壁纸。但这里的问题是,只有图像的一部分被设置为壁纸而不是整个图像,但我想要将整个图像设置为壁纸。你能告诉我如何做到这一点吗?如何适合整个图像在屏幕上作为壁纸

这里是我的代码...

public class Scaleimage extends Activity { 
    /** Called when the activity is first created. */ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String FileName; 
     File file = new File("/sdcard/pictures"); 
     File[] imageFiles = file.listFiles(); 
     if(imageFiles.length > 0) { 
      FileName = imageFiles[0].getName(); 
     final WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext()); 
     Bitmap myBitmap = BitmapFactory.decodeFile("/sdcard/pictures" + "/" + FileName); 

     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
     int height = displayMetrics.heightPixels; 
     int width = displayMetrics.widthPixels << 1; 
     myBitmap = Bitmap.createScaledBitmap(myBitmap,width, height, true); 
     try { 
      wallpaperManager.setBitmap(myBitmap); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+0

你正在创建自己的壁纸应用程序,还是你使用股票壁纸? – XGouchet 2012-07-10 07:26:53

回答

7

设置壁纸大小的图像大小:

WallpaperManager wm = (WallpaperManager) getSystemService(WALLPAPER_SERVICE); 
wm.setBitmap(bitmap); 
wm.suggestDesiredDimensions(w, h); 

,并记得添加权限:

<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/> 
<uses-permission android:name="android.permission.SET_WALLPAPER"/> 
+0

谢谢。它为我工作。 – moDev 2013-05-18 07:27:33

+2

请注意来自'suggestDesiredDimensions()'方法文档的消息:**“注意开发人员,他们似乎没有阅读过这个内容,这是为了让主屏幕知道他们想要什么尺寸的壁纸,没有人应该是调用这个!当然不是其他非壁纸的应用程序,这些应用程序应该检索建议的大小,以便它们可以构建与之匹配的壁纸。“** – 2014-09-26 12:09:06

0

试试吧,我有测试它是工作希望它可以帮助你:

final WallpaperManager wallpaperManager = (WallpaperManager)getSystemService(
       Context.WALLPAPER_SERVICE);  

Bitmap myBitmap = Bitmap.createScaledBitmap(Const.cropped_bitmap, wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight(), true); 
wallpaperManager.suggestDesiredDimensions(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight()); 

try { 

    wallpaperManager.setBitmap(myBitmap); 
    Toast.makeText(CropImageActivity.this, CropImageActivity.this.getString(R.string.wallpaper_has_been_set), 0).show(); 
} catch (IOException e) { 
    e.printStackTrace(); 
    Toast.makeText(CropImageActivity.this, "Wallpaper not set", 0).show(); 
}