1. 程式人生 > >Android從相簿中選擇圖片並作為Activity的背景(主題)

Android從相簿中選擇圖片並作為Activity的背景(主題)

實現邏輯:

  1. 首先獲取本地相簿圖片的絕對路徑URL,儲存;
  2. 通過圖片的絕對路徑轉成bitmap;
  3. 設背景,結束。

許可權:

 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);
        getAlbum.setType(IMAGE_TYPE);
        startActivityForResult(getAlbum, IMAGE_CODE);

重寫onActivityResult

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK) { // 此處的 RESULT_OK 是系統自定義得一個常量
            Log.e("TAG->onresult", "ActivityResult resultCode error");
            return;
        }
        ContentResolver resolver = getContentResolver();
if (requestCode == IMAGE_CODE) { try { Uri originalUri = data.getData(); // 獲得圖片的uri MediaStore.Images.Media.getBitmap(resolver, originalUri); String[] proj = { MediaStore.Images.Media.DATA }; @SuppressWarnings("deprecation"
) Cursor cursor = managedQuery(originalUri, proj, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); String path = cursor.getString(column_index); SharedPreferences preferences = getSharedPreferences("PATH", Context.MODE_PRIVATE); Editor editor = preferences.edit(); editor.putString("path", path.trim()); editor.commit(); Toast.makeText(getApplicationContext(), "修改成功,重啟應用方可生效!", Toast.LENGTH_SHORT).show(); } catch (IOException e) { Log.e("TAG-->Error", e.toString()); } } super.onActivityResult(requestCode, resultCode, data); }

設背景程式碼


    private void setBackground() {
        new Thread(new Runnable() {

            public void run() {
                SharedPreferences preferences = getSharedPreferences("PATH",
                        Context.MODE_PRIVATE);
                String path = preferences.getString("path", "");
                File file = new File(path);
                if (file.exists()) {
                    Bitmap bitmap = BitmapFactory.decodeFile(path);
                    Resources resources = getResources();
                    BitmapDrawable drawable = new BitmapDrawable(resources,
                            bitmap);
                    handler.sendMessage(handler.obtainMessage(7, drawable));

                } else {
                    Resources resources = getResources();
                    Drawable btnDrawable = resources
                            .getDrawable(R.drawable.background_1);
                    handler.sendMessage(handler.obtainMessage(7, btnDrawable));

                }
            }
        }).start();

    }
handler 7:
    linear_background.setBackgroundDrawable((Drawable) msg.obj);