0

ここで私がやろうとしていることがあります。 私は自分のギャラリーから、アプリケーションのすべてのアクティビティの背景として設定するように画像を選択したかったのです。ギャラリーからすべての活動の背景に背景を設定します

私は何をしたのですか 1.壁紙のユーザーを選択したいすべてのアクティビティに共有優先とその他の2つの属性があります。ここでは、ユーザがImageViewの上でクリックしたときに、それがギャラリー画像セレクタを起動する設定活性の

private static final String PREF_NAME = "nextage_quiz"; 
    private static final int PRIVATE_MODE = 0; 
    SharedPreferences getPrefs; 

2.アクションテイク場所です。 ImageViewのコードは、Gallery Image Selectorを起動するメソッドです。

1.Inside ImageViewのClickListener

private static int Load_Image_From_Gallery = 1; 
    Intent i = new Intent(
        Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

      startActivityForResult(i, Load_Image_From_Gallery); 

2. onActivityResultコード

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == Load_Image_From_Gallery && resultCode == RESULT_OK && null != data) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     ImageViewBackground5.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 

    } 
} 

私はImageViewの背景として、ギャラリーから選択した画像を設定するために管理する見ることができるように。しかし私は、ユーザが他のすべてのアクティビティのバックグラウンドと同じイメージを選択したかった。私はあなたの背景としてそれを使用するために私のアプリでイメージのいくつかの選択肢があります。ここで私はそれをやった。

  1. SettingsActivityで

    (のonCreate)

    getPrefs = this.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
    

ユーザが選択した画像のいずれかをクリックしたときに、その画像は、すべての活動のための壁紙として選択されます。

2.Inside壁紙を変更するすべての活動に配置されている特定のImageViewの

getPrefs.edit().putInt("id", R.drawable.wallpaper2).apply(); 

3.コード。

ここでも、すべてのアクティビティの背景として選択されたイメージユーザーを使用することができます。私はBitMapからDrawableに変換しようとしましたが、まだ失敗します。 ヘルプが役立ちます。 p.sほとんどのコードは複数のウェブサイトからのものです。前もって感謝します。

答えて

0

あなたがonActivityResult()SharedPreferencesimagePathを選択し保存しpreferencesR.drawable.wallpaper2を保存いけないの手順

  1. を行う必要があります。

    ... 
    int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
    String picturePath = cursor.getString(columnIndex); 
    
    // Here is addition to your code 
    getPrefs.edit().putString("path", picturePath).apply(); 
    
    cursor.close(); 
    ImageViewBackground5.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
    
  2. 新しい活動を開き、ここから画像を取得し、背景としてそれを設定するには、このパスを使用します。

    public class MainActivity extends AppCompatActivity {

    private Context context; 
        private ImageView img; 
        private SharedPreferences getPrefs; 
        private static final String PREF_NAME = "nextage_quiz"; 
        private static final int PRIVATE_MODE = 0; 
    
    
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.activity_main); 
         context = this; 
    
         getPrefs = this.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
         img = (ImageView) findViewById(R.id.background); 
    
         if (!getPrefs.getString("path", "").equalsIgnoreCase("")) { 
          img.setImageBitmap(BitmapFactory.decodeFile(getPrefs.getString("path", ""))); 
         } 
         //your other tasks below there 
        } 
    } 
    
+0

言葉の下を参照してください。 @Sohail Zahid氏に感謝します。 – narispillai

関連する問題