ScaleAnimationImageView
https://github.com/starrow/ScaleAnimationImageView
ImageViewを拡張していて、ピンチによる画像の拡大・縮小や
ダブルタップでオリジナルサイズ/画面フィットサイズの
アニメーションでの切り替えを実装しています。
特徴はピンチによる拡大率が指定した範囲を超えると
拡大・縮小の反応が鈍くなり、指を離すと範囲内まで
アニメーションして戻るという点です。
この動き自体はよく見かけるのですが、実装のサンプルとなると
意外と見つからなかったので、GitHubに上げることにしました。
実装方法としては、ざっくりこんな感じです。
- ImageViewに対してsetScaleType(ScaleType.MATRIX)
- GestureDetector, ScaleGestureDetectorを用いて
スクロール・ダブルタップ・ピンチのイベントを取得し、
matrixを計算してセット - アニメーション時はonDrawの中で目標値と経過時間をもとに
matrixを計算してセット
ソース全体は下記のリンクから見られます。
https://github.com/starrow/ScaleAnimationImageView/blob/master/src/net/starrow/scaleanimation/ScaleAnimationImageView.java
350行くらいで非常にシンプルなので、さらなるカスタマイズも容易だと思います。
もしよければ使ってみてください。