web-dev-qa-db-ja.com

androidのランドスケープでのみアプリケーションを作成したい

アプリをランドスケープモードでのみ動作させたいが、動作させられない。私はscreenOrientation = "landscape"最初のページは横向きモードになり、他のアクティビティは縦向きになります。

XMLファイル

<application Android:icon="@drawable/icon" Android:label="@string/app_name">
    <activity Android:name=".Main"
              Android:label="@string/app_name"
              Android:screenOrientation="landscape" Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>     

    </activity>

    <activity Android:name=".IntroHome"
              Android:label="@string/app_name"
              Android:screenOrientation="landscape">
    </activity>

    <activity Android:name=".ObjectivesPage"
              Android:label="@string/app_name"
              Android:screenOrientation="landscape" >
    </activity>

    <activity Android:name=".MenuPage"
              Android:label="@string/app_name"
              Android:screenOrientation="landscape" >
    </activity>
</application>

Java CLASS

public class ObjectivesPage extends Activity{

    ImageButton  imgButton;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.objectivespage);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        imgButton = (ImageButton)findViewById(R.id.buttonCloseNGo);
        imgButton.setOnClickListener(onClickCloseNGo);
    }

    private OnClickListener onClickCloseNGo = new OnClickListener(){

        public void onClick(View v) {
            Intent intent = new Intent(ObjectivesPage.this,MenuPage.class);
            startActivity(intent);
        }
    };
}
48
shripal

マニフェストのこの部分をそのままにしておきます。たとえば、IntroHomeアクティビティを考えます。

<activity Android:name=".IntroHome"
           Android:label="@string/app_name"
           Android:screenOrientation="landscape"  
           >
</activity>

アクティビティXMLの場合、IntroHomeアクティビティレイアウトXMLをonlylayout-landフォルダにあることを確認してください。このように、アクティビティは、定義したXMLのランドスケープバージョンのみを表示します。

77
Siddharth Lele

要件ごとに次のコードを使用できます。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);およびsetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

これらのコードはsetContentView(R.layout.layout_name.xml)の前に配置する必要があります。

3
Sudipta Som

コードから方向を設定することもできます

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

詳細については、このリンクを確認してください

http://www.devx.com/wireless/Article/40792/0/page/5

3
DeRagan

追加してみてください:

Android:configChanges="orientation|keyboardHidden"

それが役立つかどうか教えてください!!ただの推測!!

1
Prateek Jain