3

フラグメントで SurfaceView を使用してビデオを表示しています。ビデオの再生中に画面の向きを変更すると、サイズが変更されません。たとえば、ビデオが横サイズ (全画面表示) で再生されている場合、画面を回転しても縦サイズにはなりません。横長の場合はそのままです。ビデオを横向きで開始すると、縦向きに変わりません。マニフェストで次を使用しています。

    <activity
        android:name=".BassActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        >

「onCreate」にこれがあります

 @Override
 public void onCreate(Bundle savedInstanceState) {
   if (VERBOSE) Log.v(TAG, "+++ onCreate +++");
     super.onCreate(savedInstanceState);        
     getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
     setRetainInstance(true);

たとえば、再生中に画面を回転させたときに、縦向きから横向きにビデオのサイズを変更したいと思います。

いつトリガーされるかを確認するためにトーストメッセージも追加しましたonSurfaceChangedが、画面を回転させてもトリガーされません。再生開始後にビデオのサイズを変更するにはどうすればよいですか?

4

1 に答える 1

2

この設定変更を使用

if android:configchanges = "向き"

public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
            // for example the width of a layout  
            int width = 300;
            int height = LayoutParams.WRAP_CONTENT;
            WebView childLayout = (WebView) findViewById(R.id.webview);
            childLayout.setLayoutParams(new LayoutParams(width, height));
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }
于 2013-09-13T04:43:40.430 に答える