javaを勉強し始めて1ヶ月未満の超初心者です。
ボタンを押してandroid端末に保存されているGallery画像を表示させたいのですがsetImageURIの使い方がよくわかりません。
助けてください。
@Override
public void onClick(View v) {
((ImageView) findViewById(R.id.imageView1)).setImageURI(imageUri);
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
自分も成功したコードなので内容自体は問題ないと思います。
//メンバ変数として配置(クラスの真下です) private static final int PERMISSIONS_REQUEST_CODE = 100; private static final int CHOOSER_REQUEST_CODE = 100; private Uri mPictureUri; //onActivityResultはオーバーライドしてください @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CHOOSER_REQUEST_CODE) { if (resultCode != RESULT_OK) { if (mPictureUri != null) { getContentResolver().delete(mPictureUri, null, null); mPictureUri = null; } return; } // 画像を取得 Uri uri = (data == null || data.getData() == null) ? mPictureUri : data.getData(); // URIからBitmapを取得する Bitmap image; try { ContentResolver contentResolver = getContentResolver(); InputStream inputStream = contentResolver.openInputStream(uri); image = BitmapFactory.decodeStream(inputStream); inputStream.close(); } catch (Exception e) { return; } // 取得したBimapの長辺を500ピクセルにリサイズする int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); float scale = Math.min((float) 500 / imageWidth, (float) 500 /imageHeight); Matrix matrix = new Matrix(); matrix.postScale(scale, scale); Bitmap resizedImage = Bitmap.createBitmap(image, 0, 0, imageWidth,imageHeight, matrix, true); // BitmapをImageViewに設定する mImageView.setImageBitmap(resizedImage); mPictureUri = null; } } //同じくオーバーライド @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case PERMISSIONS_REQUEST_CODE: { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // ユーザーが許可したとき showChooser(); } return; } } } // private void showChooser() { // ギャラリーから選択するIntent Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT); galleryIntent.setType("image/*"); galleryIntent.addCategory(Intent.CATEGORY_OPENABLE); // ギャラリー選択のIntentを与えてcreateChooserメソッドを呼ぶ Intent chooserIntent = Intent.createChooser(galleryIntent, "画像を取得"); startActivityForResult(chooserIntent, CHOOSER_REQUEST_CODE);
投稿2017/11/05 13:37
総合スコア9
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
((ImageView) findViewById(R.id.imageView1)).setImageURI(imageUri);
setImageURIで使えるURIは "a local Uri only"とReferenceにあります
リンク内容
ギャラリーなのでlocalなのか、あるいはアプリ内をローカルと呼ぶのか
という疑問になりますが
PicassoかsetImageBitmapを代わりに使うのがいいと思います。
リンク内容
Picasso.with(context) .load(url) .placeholder(R.drawable.placeholder) .resize(imgWidth, imgHeight) .centerCrop() .into(image);
imageView.setImageBitmap(bitmap);
あるいは
Bitmap bmp = getBitmapFromUri(uri); imageView.setImageBitmap(bmp);
投稿2017/10/30 03:41
総合スコア3733
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。