web-dev-qa-db-fra.com

je veux faire mon application uniquement en paysage en android

Je souhaite que mon application fonctionne uniquement en mode paysage, mais je ne peux pas la faire fonctionner. J'ai donné screenOrientation = "landscape" même si la première page sera en mode paysage et les autres activités seront en mode portrait.

FICHIER 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>

CLASSE Java

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

Gardez cette partie du manifeste telle qu'elle est déjà. Par exemple, considérez l'activité IntroHome.

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

Et pour l'activité XML, assurez-vous que vous disposez de la disposition d'activité IntroHome XML niquement dans le dossier layout-land. De cette façon, l'activité/les activités que vous avez ne montreront que la version paysage du XML que vous avez défini.

77
Siddharth Lele

Vous pouvez utiliser le code suivant selon l'exigence:

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

vous devez mettre ce code avant setContentView(R.layout.layout_name.xml).

3
Sudipta Som

Vous pouvez également essayer de définir l'orientation à partir de votre code

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Consultez ce lien pour plus d'informations

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

3
DeRagan

Essayez d'ajouter:

Android:configChanges="orientation|keyboardHidden"

Faites-moi savoir si cela aide !! Juste une supposition !!

1
Prateek Jain