я хочу сделать свое приложение только в пейзаже в Android - PullRequest
48 голосов
/ 30 декабря 2010

Я хочу, чтобы мое приложение работало только в ландшафтном режиме, но не могу заставить его работать.Я дал 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);
        }
    };
}

Ответы [ 5 ]

76 голосов
/ 30 декабря 2010

Сохраните эту часть манифеста как есть.Например, рассмотрим действие IntroHome.

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

А для действия XML убедитесь, что у вас есть макет действия IntroHome XML только в layout-land папка.Таким образом, ваши действия / действия будут показывать только альбомную версию XML, которую вы определили.

3 голосов
/ 30 декабря 2010

Вы можете использовать следующий код согласно требованию:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); и setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Вы должны поставить этот код перед setContentView(R.layout.layout_name.xml).

3 голосов
/ 30 декабря 2010

Вы также можете попробовать установить ориентацию из своего кода

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Проверьте эту ссылку для получения дополнительной информации

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

1 голос
/ 30 декабря 2010

Попробуйте добавить:

android:configChanges="orientation|keyboardHidden"

Дайте мне знать, если это поможет !! Просто предположение !!

0 голосов
/ 25 февраля 2014

Это похоже на старый пост, но мне кажется, что если вы установите режим в альбомном режиме в альбомный режим, а затем переключите режим в альбомный код в альбомный режим, возможно, вы переключаете режим дважды, вызывая устройстводля рендеринга в портретном режиме вместо.Попробуйте закомментировать код в вашем Java-файле и посмотрите, что произойдет.Если это не работает, все, что вам нужно сделать, это изменить его обратно.Легкий гороховый тест.

...