【Android】ImageViewで拡大縮小・ピンチ操作できる良ライブラリを使ってみた

Androidアプリ開発をしているとき。

ImageViewでこういうことが必要になりました。

  • 表示画像を拡大縮小に対応させたい
  • ピンチ操作などで画像を移動したい
  • でも普通のImageViewにはそんな機能ない…

いろいろ探してたら便利なのがありました。

それは TouchImageView というライブラリ

実際に動くことも確認したし便利なので、
Android TouchImageViewの実装方法を紹介します。

僕が試したのは次のような手順です。

1.プロジェクトレベルのbuild.gradleを設定編集

このライブラリはgithubで公開されてます。

ライセンスはMIT Licenceなので安心

導入方法も手順を踏んでいけばとても簡単です。

 

まずプロジェクトレベルのbuild.gradleを開きます。

▼ Project:...の方のbuild.gradleを開く

▼ そこのrepositoriesを以下のように編集

追加したら Async now を押して同期

リポジトリとしてJitPackを使ってるみたいです。

2.モジュールレベルのbuild.gradleにライブラリ追加

次にモジュールレベルのbuild.gradleを開きます。

▼ Modile:... の方のbuild.gradleを開く

▼ dependenciesブロック以下にライブラリ追加

最新バージョンは 3.2.1 の模様

もし最新verでエラーなどが出る場合、バージョンを下げて試してみてください。僕の環境の場合、3.2.1ではエラーが出たので、1,4,1に変更すると正常に動きました。

そこは各自の環境次第です。

3.レイアウトXMLにTouchImageViewを設置する

このライブラリでは次のウィジェットが利用できます。

com.ortiz.touchview.TouchImageView

名前が TouchImageView というくらいなので ImageView を拡張したクラスですね。だから ImageView が持っているメソッドは全て利用可能です。

そしてレイアウト上に設置したい場合…

▼ TouchImageViewのレイアウト上の配置例

この配置については特筆すべきことなし。

ここでは全体を覆う感じで配置してみました。

4.DrawableなどをTouhcImageViewで表示するコード

そしたら画像を表示してみたいと思います。

▼ 実際にこのようなコードを書いてみた(kotlin)

ここは普通にImageViewを使うのと変わりません。

ただ今回はドット絵的なものを表示したかったので drawable?.isFilterBitmap = false としてフィルターを無効化してます。それによって小さな画像がピクセル化(=pixelated)で表示可能です。

本筋と関係ないけど上記コードではそうしてます。

5.TouchImageViewでの拡大縮小・ピンチ操作の動画

気になるのは実際にどういう動作をするかですよね?

見た目だけは普通のImageViewな感じです。

▼ TouchImageViewの見た目

▼ 動作をgif動画として撮影してみた

こちらのnoteで動作させた動画を公開してます。

見てわかるようにエミュレーターです。

もちろん動作確認はAndroid実機でも行いました。TouchImageViewに表示した画像をピンチ操作で拡大・縮小・移動できることは確認済みです。

以上、TouchImageViewについてでした。

便利だし使い勝手が良さそうです。