4

a を使用し、異なるsViewPagerをスクロールする雑誌アプリを作成しています。WebViewほとんどのページは縦向きですが、横向きに見えるページもあります。

これを処理するために、次の 2 つの方法を使用してActivityViewPagerます。

public void allowOrientationChanges() {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}

public void enforcePortrait() {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

これにより、縦向きにする必要があるすべてのページが縦向きのままになり ( を呼び出すgetActivity().enforcePortrait())、縦向き/横向きのビューを持つページが再起動プロセス全体を通過するようになります ( を呼び出しgetActivity().allowOrientationChanges()ます)。

雑誌のいくつかのページにビデオを追加したいところまで来ました。残念ながら、HTML5 ビデオ タグが正常に機能しないためVideoView、レイアウトに を追加しました。今追加する機能は次のとおりです。

  • 縦向き: ビデオを特定の場所に表示します。(やった! )
  • 横向き: ビデオを全画面表示にします (YouTube アプリのように)。

私はこれをやろうとしてきましたが、私が見つけた唯一の方法はVideoViewonConfigurationChanged()メソッドのサイズを変更し、構成が変更されたことActivityを通知することです。これに関する問題は、ビューの再作成を「許可しない」ようにfragment追加android:configChanges="orientation|keyboardHidden"することです。Activity

私が考えた2つの可能な解決策:

  1. コードから変更android:configChangesし、ページによって異なりますが、その呼び出しが存在するかどうかはわかりませんでした。
  2. メソッドの再作成を強制しonConfigurationChanged()ます。を強制的に再作成する方法がわかりませんfragment

何か案は?

4

3 に答える 3

2

ViewPager を使用してさまざまな WebView をスクロールする雑誌アプリを作成しています。

これは信頼できますか?

ほとんどのページは縦向きですが、横向きに見えるページもあります。

すべてのページを横向きで表示できるようにしてください。ユーザーがアプリを横向きで表示したい場合 (たとえば、アプリを使用するためだけにテレビを横向きにしたくない場合など)、許可してください。

何か案は?

アクティビティの中で、その時点で最新のものに基づいonResume()てそのサイズ/位置を修正するようにマガジン ページ フラグメントに通知します( )。VideoViewConfigurationgetResources().getConfiguration()

于 2011-08-30T16:54:15.220 に答える
2

マニフェストで同様の名前を使用してアクティビティを 2 回定義し、2 番目のインカネーションを enabled=false に設定することで、これを回避できる可能性があります。次に、 PackageManager.setComponentEnabledSetting(....)を呼び出して 2 つのアクティビティを動的に切り替えますが、これは単なるアイデアであり、機能するかどうかはわかりません。

于 2011-08-30T16:53:43.540 に答える
1

私はちょうどそれを修正しました。回答ありがとうございます。

私の解決策はActivityandroid:configChanges="orientation|keyboardHidden"フラグを持たせることでした。

それを行った後、必要に応じてまたは のサイズを変更する場所onConfigurationChanged()内のメソッドをオーバーライドします。FragmentWebViewVideoView

編集:

私はちょうどこれについてブログ投稿をしました。

于 2011-08-31T11:47:06.120 に答える