2014年9月22日月曜日

[Android] 画像の拡大縮小サンプルをGitHubへコミットしました

少し前になりますが、GitHubへAndroidのサンプルコードをコミットしました。

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行くらいで非常にシンプルなので、さらなるカスタマイズも容易だと思います。
もしよければ使ってみてください。