2015-04-26 119 views
-2

我做了一個包含按鈕的應用程序。該按鈕將我們帶到手機的畫廊,用戶可以選擇任何圖像,該圖像將顯示在按鈕下方的應用程序中。現在我想要一個將該圖像設置爲壁紙的按鈕,我需要保存按鈕的代碼。 這是代碼。從SD卡獲取圖像並將其設置爲壁紙

public class MainActivity extends ActionBarActivity implements View.OnClickListener { 

private static int LOAD_IMAGE_RESULT = 1; 

Button b1,b2; 
ImageView IV; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    b1 = (Button)findViewById(R.id.button); 
    IV = (ImageView)findViewById(R.id.imageView); 
    b2 = (Button)findViewById(R.id.save); 
    b1.setOnClickListener(this); 
    b2.setOnClickListener(this); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == LOAD_IMAGE_RESULT && resultCode == RESULT_OK && data != null){ 
     Uri pick = data.getData(); 
     String[] images = {MediaStore.Images.Media.DATA}; 

     Cursor cursor = getContentResolver().query(pick,images,null,null,null); 
     cursor.moveToFirst(); 

     String imagePath = cursor.getString(cursor.getColumnIndex(images[0])); 
     IV.setImageBitmap(BitmapFactory.decodeFile(imagePath)); 
     cursor.close(); 
    } 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.button: 
     Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(intent, LOAD_IMAGE_RESULT); 
    break; 
     case R.id.save: 
      break; 

    } 
    } 

}

+0

那麼,什麼是你的問題? – issathink

+0

如何將圖像設置爲壁紙? – Usman

+0

做了許多語法修復。改進句子的一般含義。 –

回答

1

我不知道如果我理解你的問題糾正我,如果我錯了。您想將所選圖像設置爲壁紙。

WallpaperManager wManager = WallpaperManager.getInstance(getApplicationContext()); 

try { 
    wManager.setBitmap(BitmapFactory.decodeFile(imagePath)); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

最後你需要這個權限:

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

感謝它的工作!但是壁紙不在屏幕上。我的意思是標準的Android壁紙是640 * 480,所以我如何在這個分辨率設置圖像? – Usman

+0

你應該肆意裁剪/調整圖像大小。問另一個問題並解釋你的「新」問題。 – issathink

+0

是的!我有可繪製的文件夾中的幀,所以我想在設置爲壁紙之前在這些幀中設置這些圖像,請你解釋一下如何做到這一點? – Usman