[セットトップ]Android fragmentは1つのfragmentで横画面をサポートする
やはりこの携帯電話のプロジェクトで、私を嫌がらないでください.同僚が指導したコードを記録して、あなたたちに共有したいだけです.
以前はメインインタフェースや他のインタフェースにfragmentが採用されていましたが、今になってやっと発見されました.簡単なfragmentは実は少しも簡単ではありません.中には問題をよく解決する方法がたくさんあります.次のような要件があります.fragment Aの1つは横画面をサポートする必要があります.表示されているデータは表で、何列もあります.縦画面の表示は不完全です.このインタフェースだけが横画面にできることが必要です.解決策:
以前activityが横画面をサポートしていたのは、メインAndroidManifestだった.xmlでメインインタフェースが縦横スクリーンをサポートするかどうかを設定します.
次にmainactivityに構成情報の変更のリスニング方法を追加します.
携帯電話が縦横画面を許可するようになったら、すべてのfragmentインタフェースが横向きになり、明らかにプロジェクトのニーズを満たすことができません.
私たちの解決策は次のとおりです.
縦横をサポートするfragment Aでは、すでに隠しているかどうかをリスニングする方法で、隠している場合は縦横をサポートしていないと判断し、showが表示されている場合は縦横を使用できます.コードは以下の通りです.
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
以前はメインインタフェースや他のインタフェースに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