今天做demo,設置桌面每天自動更新背景,但是桌面的背景都是被系統裁剪過的圖片,上網百度了一下,有個過時的方法,改進后果然有用了!
Bitmap bmp=BitmapFactory.decodeResource (getResources(), bg[DailyBg]); try { // super.setWallpaper(bmp); WallpaperManager instance = WallpaperManager.getInstance(ChangeBgImage.this); // int desiredMinimumWidth = getWindowManager().getDefaultDisplay().getHeight(); //方法已經過時 // int desiredMinimumHeight = getWindowManager().getDefaultDisplay().getHeight();//方法已經過時 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int desiredMinimumWidth = dm.widthPixels; int desiredMinimumHeight = dm.heightPixels; Log.v("ss",""+desiredMinimumWidth); Log.v("ss",""+desiredMinimumHeight); instance.suggestDesiredDimensions(desiredMinimumWidth, desiredMinimumHeight); instance.setBitmap(bmp); Toast.makeText(ChangeBgImage.this,"壁紙設置成功",Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); } }
就是在獲取屏幕大小的地方老方法已經被注釋了,用了新的方法獲取了屏幕的大小。
對了還要在清單文件里將權限加上,這點很重要,我找了半天才發現,suggestDesiredDimensions方法需要加權限
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
好了 ,菜鳥大功告成。