ビュー ページャー内で動作するように、Mike Ortiz の TouchImageViewとカスタム TouchViewPagerを使用して、いくつかのアプリケーション バージョンでピンチ ツー ズームがうまく機能するようになりました。これはかなりうまく機能していました - TouchViewPager がオーバーライドする唯一のメソッドはonInterceptTouchEventです:
public boolean onInterceptTouchEvent(MotionEvent ev) {
TouchImageView view = getTouchView();
if( null != view ){
if( !view.isAtLimit() && view.getCurrentScale() > 1){
return false;
} else {
Log.v(TAG, "View limit = " + view.isAtLimit());
Log.v(TAG, "View scale = " + view.getCurrentScale());
}
}
return super.onInterceptTouchEvent(ev);
}
最近、FrameLayoutを拡張し、インターネットからのビットマップのダウンロードを管理する新しいビューを作成しました。ビットマップのダウンロードが進行中の間、このレイアウトは ProgressBar を表示し、準備ができたら TouchImageView を追加します。視覚的には、これは機能しているように見えます-ProgressBar が表示され、次に TouchImageView が読み込まれます-しかし、タッチはすべてめちゃくちゃになり、通常は一貫して機能しません。
onTouchEvent をプログレス イメージ ビューからタッチ イメージ ビューに委譲しようとしましたが、うまくいきませんでした。また、進行状況の画像ビューで onInterceptTouchEvent をオーバーライドして、常に false を返そうとしましたが、それもうまくいきませんでした。
この問題のデバッグをどこで続行するかについて、誰かがアイデアを手伝ってくれますか? 私はこれに約1週間取り組んできましたが、ほとんど成功していません。
これは私が見ている動作です:
アクティビティが読み込まれ、ViewPager -> FrameLayout -> TouchImageView 内に画像が表示されます。
ViewPager はスワイプして画像を変更するために機能しますが、ピンチ ズームは最初または 2 番目の画像では機能しません。最終的に、ピンチズームが機能する位置に到達します。何が違うのか分かりません。
スワイプする前にズームをピンチしようとすると、ViewPager のスワイプは機能せず、ViewPager をページに移動するのに数回のスワイプが必要になります。
「作業位置」に着くと、スワイプしてページに移動するだけでなく、ズームした画像のピンチズームやパンも正常に機能します。この後、すべてのポジションが機能します。