2012-04-08 42 views
0

我有一個應用使用共享偏好設置從一些預先確定的圖像背景,但我想讓用戶能夠從他們的畫廊選擇一個圖像。我怎樣才能做到這一點?下面從畫廊中設置應用背景

代碼:

int bak; 
int em; 
int lo; 
int lay; 
SharedPreferences data; 
public static String filename = "bg"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    lo = R.layout.main; 
    data = getSharedPreferences(filename, 0); 
    lay = data.getInt("lout", lo);   
    setContentView(lay); 

    em = R.drawable.bakgrund; 
    data = getSharedPreferences(filename, 0); 
    bak = data.getInt("bakgrund", em); 

} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    RelativeLayout bg = (RelativeLayout) findViewById(R.id.might); 
    bg.setBackgroundResource(bak); 

回答

2

在onCreate方法添加這些行挑選從您的畫廊圖片:

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent, "Select Picture"),0); 

及以下的onCreate添加這個方法:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case 0: 
      data.getDataString() 
      if (resultCode == RESULT_OK) { 
       try { 
        Bitmap bitmap = MediaStore.Images.Media.getBitmap(_activity.getContentResolver(), data.getDataString()); 
        RelativeLayout bg = (RelativeLayout) findViewById(R.id.might); 
        Drawable drawable = new BitmapDrawable(getResources(), bitmap); 
        bg.setBackgroundDrawable(drawable); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       break; 
      } 
    } 
} 

而且,在清單文件中添加此權限:

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

我需要任何權限才能使用圖庫嗎? (我會在早上嘗試代碼。) – 2012-04-08 18:02:20