【Android】画像タップで拡大表示。さらにピンチインアウト可能にする。

これは何

Android 開発で ImageView をタップしたら画像を拡大表示し、それをピンチインアウトでズームできるようにする方法です。

利用ライブラリ

https://github.com/davemorrissey/subsampling-scale-image-view

ライブラリインストール方法は上にあるので割愛します

修正内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 拡大対象のImageViewにタップ時のリスナーをセット
mImageView.setOnClickListener(v -> {
SubsamplingScaleImageView imageViewEnlarged = new SubsamplingScaleImageView(getContext());
Bitmap bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap();
imageViewEnlarged.setImage(ImageSource.bitmap(bitmap));
// 画面の横幅を取得
Display display = ((Activity) getContext()).getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
float width = size.x;
float factor = width / bitmap.getWidth();
Dialog dialog = new Dialog(getContext());
// 画像をセットして表示する
dialog.setContentView(imageViewEnlarged);
dialog.getWindow().setLayout((int)(bitmap.getWidth()*factor), (int)(bitmap.getHeight()*factor));
dialog.show();
});

てか Android 開発、情報少なすぎません?泣
ただ画像をタップして拡大表示してピンチインアウトするだけのことがなんでこんなに情報がないのか?
なかなかライブラリに辿り着けなくて、結構ハマっちゃいました、、
ツライけどお互い頑張りましょう、、w

参考

[Android]ImageView の scaleType を秒で決める
[Android]メモリリークを起こさずに大きな画像を表示させるライブラリ「Subsampling Scale Image View」

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×