1

私は webview を持っており、表示されたページの向きをプログラムで変更できるようにしたいと考えています。マニフェストファイルでこれを設定することにより、ユーザーが電話の向きを変更したときにアクティビティが再度作成されるのを防ぎます。

android:screenOrientation="nosensor"
android:configChanges="orientation|screenSize|keyboardHidden"

ただし、タブの 1 つで、ユーザーが変更したときに Web ページの向きをプログラムで変更したいと考えています。だから私は電話の向きの変化を聞き、それに応じてページビューの向きを変えたいと思っています。現在、携帯電話の向きを横向きに変更しても、ウェブページは縦向きのまま表示されます。

誰か助けてくれませんか?

4

2 に答える 2

1

WebViewのみを回転させ、他には何も回転させない場合は、次のようなカスタムWebViewを作成します。

public class VerticalWebView extends WebView {
    final boolean topDown = true;

    public VerticalWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void draw(Canvas canvas) {
        if (topDown) {
            canvas.translate(getHeight(), 0);
            canvas.rotate(90);
        } else {
            canvas.translate(0, getWidth());
            canvas.rotate(-90);
        }
        canvas.clipRect(0, 0, getWidth(), getHeight(), android.graphics.Region.Op.REPLACE);
        super.draw(canvas);
    }
}

topDown(逆に回転させたい場合はfalseに変更してください)

次に、XMLで次のように使用します。

<com.my.package.VerticalWebView
    android:id="@+id/myview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</com.my.package.VerticalWebView>

これは画面に表示されているビューを回転させるだけであり、タッチ座標を対応するポイントの新しい位置に再マップしないため、リンクなどは機能しないことに注意してください。

于 2013-01-20T20:58:11.103 に答える
0

横向き/縦向きに変更したいときにお試しください。 http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int )

于 2013-01-20T20:46:58.130 に答える