3

ビュー ページャー内で動作するように、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週間取り組んできましたが、ほとんど成功していません。

これは私が見ている動作です:

  1. アクティビティが読み込まれ、ViewPager -> FrameLayout -> TouchImageView 内に画像が表示されます。

  2. ViewPager はスワイプして画像を変更するために機能しますが、ピンチ ズームは最初または 2 番目の画像では機能しません。最終的に、ピンチズームが機能する位置に到達します。何が違うのか分かりません。

  3. スワイプする前にズームをピンチしようとすると、ViewPager のスワイプは機能せず、ViewPager をページに移動するのに数回のスワイプが必要になります。

  4. 「作業位置」に着くと、スワイプしてページに移動するだけでなく、ズームした画像のピンチズームやパンも正常に機能します。この後、すべてのポジションが機能します。

4

1 に答える 1

2

奇妙なことに、TouchImageView クラス内にリセット メソッドを実装することで、これを機能させることができました。

public void resetZoom() {
    Matrix imageMatrix = getImageMatrix();
    RectF drawableRect = new RectF(0, 0, bmWidth, bmHeight);
    RectF viewRect = new RectF(0, 0, getWidth(), getHeight());

    imageMatrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);

    matrix = imageMatrix;
    setImageMatrix(matrix);

    fitAndCenterView();

    invalidate();
}

このメソッドが呼び出されると、画像のズームがリセットされます。これを呼び出すと、フレームレイアウト内に画像を設定すると、すべてが設定されます。奇妙なことに、画像が FrameLayout 内にない場合、これは必要ありません。

もちろん、コードのクリーンアップなど、私たちにできることは何でもありがたいです。

于 2012-09-04T16:37:36.513 に答える