2

現在のプロジェクトでは、ユーザーが大きなSVG画像をスクロールしてズームインできるようにする必要があります。しかし、私が遭遇した主な問題は、AndroidWebViewクラスがズームインとズームアウトに課す制限です。これらの制限を自分の好みに合わせて削除または変更する方法はありますか?標準のズームコントロールは、これらの境界の解放をサポートしていないようです。

私の質問が不明確な場合、または私の質問について詳しく説明する必要がある場合は、遠慮なく質問してください。

グリッツ、ウォッタ

4

1 に答える 1

3

リフレクションを使用する以外の解決策を思いついた人は誰もいないようです - 現時点では代替手段を知りません - ズームインアクションの上限を回避する方法を示す簡単なコードスニペットを書きました.

ZoomManager以下のコードは ICS でのみ動作し、場合によっては Honeycomb でのみ動作することに注意してください。ただし、現在、内部の動作が同じクラスに依存しているかどうかを調べるためのタブレットが横たわっていません。Gingerbread、Froyo、Eclair はすべて、多かれ少なかれWebViewクラスに直接ズーム機能を実装しているようです。以下の例では、これらのオペレーティング システムを考慮に入れるコードを簡単に追加できます。

// just set an Activity's content view to a single WebView for this test
WebView mWebview = new WebView(this);
setContentView(mWebview);

// retrieve the ZoomManager from the WebView
Class<?> webViewClass = mWebview.getClass();
Field mZoomManagerField = webViewClass.getDeclaredField("mZoomManager");
mZoomManagerField.setAccessible(true);
Object mZoomManagerInstance = mZoomManagerField.get(mWebview);

// modify the "default max zoom scale" value, which controls the upper limit
// and set it to something very large; e.g. Float.MAX_VALUE
Class<?> zoomManagerClass = Class.forName("android.webkit.ZoomManager");
Field mDefaultMaxZoomScaleField = zoomManagerClass.getDeclaredField("mDefaultMaxZoomScale");
mDefaultMaxZoomScaleField.setAccessible(true);
mDefaultMaxZoomScaleField.set(mZoomManagerInstance, Float.MAX_VALUE);
于 2012-05-08T10:26:07.947 に答える