[セットトップ]Android fragmentは1つのfragmentで横画面をサポートする


やはりこの携帯電話のプロジェクトで、私を嫌がらないでください.同僚が指導したコードを記録して、あなたたちに共有したいだけです.
以前はメインインタフェースや他のインタフェースにfragmentが採用されていましたが、今になってやっと発見されました.簡単なfragmentは実は少しも簡単ではありません.中には問題をよく解決する方法がたくさんあります.次のような要件があります.fragment Aの1つは横画面をサポートする必要があります.表示されているデータは表で、何列もあります.縦画面の表示は不完全です.このインタフェースだけが横画面にできることが必要です.解決策:
以前activityが横画面をサポートしていたのは、メインAndroidManifestだった.xmlでメインインタフェースが縦横スクリーンをサポートするかどうかを設定します.
 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="client.verbank.mtp.allone.LoginActivity"
         android:configChanges="keyboardHidden|orientation"
            android:label="@string/app_name"
            android:screenOrientation="portrait"   <!--           -->
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
注:上記の構成の説明を参照してください.http://www.cnblogs.com/lijunamneg/archive/2013/03/26/2982461.html
    
               
         ,                         activity。      manifest      android:configChanges       。
        activity           ,              activity,    activity 
onConfigurationChanged(Resources.Configuration)  。                    ( android:configChanges    ),
  activity        , onConfigurationChanged(Resources.Configuration)      。

  :android:configChanges=""      :keyboard|mcc|mnc|locale|touchscreen|keyboardHidden|navigation|orientation……
Configuration           ,        ,orientation,        .(   )
  :android:configChanges="orientation|keyboard|keyboardHidden"

 Configuration   ,ActivityManagerService    "    "   ,   ActivityThread       focus Activity.
      ,        ,    android:configChanges   Activity  ,        Activity       ,    
onConfigurationChanged  。

    Android API    android:onConfigurationChanged      Activity  onConfigurationChanged()  。
 AndroidManifest.xml                    、            ,     onCreate()  ,
      onConfigurationChanged()。         ,  Activity     ,       onCreate()  , onCreate()                  。                   onCreate()  ,            ,           ,                      。         。

次にmainactivityに構成情報の変更のリスニング方法を追加します.
//        activity,     
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
		//        
		try {
			// Checks the orientation of the screen
			if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
				toolbarLayout.setVisibility(View.GONE);
			} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
				toolbarLayout.setVisibility(View.VISIBLE);
			}
		} catch (Exception ex) {

		}
	}

携帯電話が縦横画面を許可するようになったら、すべてのfragmentインタフェースが横向きになり、明らかにプロジェクトのニーズを満たすことができません.
私たちの解決策は次のとおりです.
縦横をサポートするfragment Aでは、すでに隠しているかどうかをリスニングする方法で、隠している場合は縦横をサポートしていないと判断し、showが表示されている場合は縦横を使用できます.コードは以下の通りです.
	@Override
	public void onHiddenChanged(boolean hidd) {

		getActivity().setRequestedOrientation(//             
			hidd ? ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
						: ActivityInfo.SCREEN_ORIENTATION_SENSOR);
	}

Activity画面のプロパティは次のとおりです.
  ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,//横画面指定
  ActivityInfo.SCREEN_ORIENTATION_PORTRAIT//縦画面の指定
  ActivityInfo.SCREEN_ORIENTATION_USER,//ユーザーの向きにより
  ActivityInfo.SCREEN_ORIENTATION_NOSENSOR,//重力の影響を受けない
  ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,//クロススクリーン動的変換
  ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT,//縦画面動的変換
  ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR,//重力による向き変換
先辈の皆さんのまとめに感谢します!!!もっと縦横の知識、この先輩が話した超詳細は、参考にすることができます.http://www.cnblogs.com/franksunny/p/3714442.html