Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android設置壁紙的幾種方案

Android設置壁紙的幾種方案

編輯:關於Android編程

Android設置壁紙有許多方法,主要思路有兩種:

1:通過WallpaperManager設置

2:通過系統程序設置

下文將分開說明:


<1>通過WallpaperManager設置

該方法可以直接將圖片置為壁紙,對於所有平台的Android系統都使用,但無法裁剪/調整圖片。

try {
    WallpaperManager wpm = (WallpaperManager) getActivity().getSystemService(
                Context.WALLPAPER_SERVICE);

    if (wallpaper != null) {
       wpm.setBitmap(bitmap);
       Log.i("xzy", "wallpaper not null");
    }
} catch (IOException e) {
    Log.e(TAG, "Failed to set wallpaper: " + e);
}

AndroidManifest.xml中需要申明權限:


<2>通過系統程序設置

通過系統應用設置的優點是可以裁剪圖片,設置後的壁紙效果最好,操作體驗和平台保持一致。並且該方法不許要申明權限


可行的方法有兩種

1:調用系統裁剪Activity,通過裁剪Activity設置壁紙:

            Intent intent = new Intent("com.android.camera.CropImage");
            int width = getActivity().getWallpaperDesiredMinimumWidth();
            int height = getActivity().getWallpaperDesiredMinimumHeight();
            intent.putExtra("outputX",         width);
            intent.putExtra("outputY",         height);
            intent.putExtra("aspectX",         width);
            intent.putExtra("aspectY",         height);
            intent.putExtra("scale",           true);
            intent.putExtra("noFaceDetection", true);
            intent.putExtra("setWallpaper",    true);
            intent.putExtra("data", ((BitmapDrawable) wallpaper).getBitmap());
            startActivity(intent);
該方法有一個弊端,com.android.camera.CropImage是一個可選Action,而非標准Action,因此並分所有Android設備都支持該API,許多設備會出現ActivityNotFoundException.


2.調用系統的Intent.ACTION_ATTACH_DATA,該Intent會喚起所有的設置壁紙程序以及設置聯系人頭像程序,用戶可以通過ChooseActivity進行選擇:

該Intent是一個標准Intent,因此所有設置都會支持。

                Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                intent.putExtra("mimeType", "image/*");
                Uri uri = Uri.parse(MediaStore.Images.Media
                        .insertImage(getActivity().getContentResolver(),
                                ((BitmapDrawable) wallpaper).getBitmap(), null, null));
                intent.setData(uri);
                startActivityForResult(intent, SET_WALLPAPER);


以上這些方法推薦只用最後一種,原因很簡單:體驗好,適配成本低。


作者:xzy2046,轉載需注明。博客主頁:http://blog.csdn.net/xzy2046



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved