Android - mode disable na šířku?

hlasů
781

Jak mohu zakázat režimu na šířku pro některé názory v mé aplikace pro Android?

Položena 24/02/2009 v 16:29
zdroj uživatelem
V jiných jazycích...                            


32 odpovědí

hlasů
1k

Přidat android:screenOrientation="portrait"k aktivitě v AndroidManifest.xml. Například:

<activity android:name=".SomeActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" />

EDIT: Vzhledem k tomu, stala super-populární odpověď, cítím se velmi provinile, protože nutí portrét je zřídka správné řešení problémů, to je často aplikována.
Hlavní výhrady s nuceným portrét:

  • To vás nezbavuje toho, aby musel myslet na životní cyklus akcí aktivity či správně ukládání / obnovení stavu. Existuje spousta věcí, kromě rotace aplikace, která může vyvolat destrukci činnost / rekreaci, včetně nevyhnutelných věcí, jako je multitasking. Neexistují žádné zkratky; naučit se používat svazky a retainInstancefragmenty.
  • Mějte na paměti, že na rozdíl od poměrně rovnoměrné zkušeností iPhone, existuje mnoho zařízení, kde portrétu není jednoznačně populární orientace. Kdy jsou uživatelé na zařízeních s hardwarové klávesnice nebo herní podložky a la Droid 1-4, Xperia Play nebo Nvidia štítu, nutí portrét může vaše aplikace obří použitelnost hádka (zejména na štít). Pokud aplikace nemá velmi specifický případ použití, která by vedla k úplně negativní zkušenosti pro podporu jiných směrů, asi byste měli nutit krajinu. Mluvím o věcech jako „to je ovládací aplikace vzdáleného pro telefon s IR Blaster pouze na jedné straně zařízení“, nebo „to je pokladna app pro jeden konkrétní model tabletu vždy používá v pevné hardware dok.“

Takže většina aplikací by měl jen nechat telefon senzory, software a fyzická konfigurace, aby jejich vlastní rozhodnutí o tom, jak si uživatel přeje komunikovat s vaší aplikací. Několik případů stále můžete chtít přemýšlet o tom, i když, pokud nejste spokojeni s výchozí chování sensororientace ve svém use case:

  • Pokud je váš hlavní starostí je náhodná orientace se změní v polovině aktivity, které si myslíte, že senzory a software Přístroj bude neumí poradit s dobře (například ve hře náklonu-based) zvážit podporu krajinu a portrét, ale za použití nosensorpro orientaci. To přinutí terén většině tablet a portrét na většině telefonů, ale pořád bych nedoporučoval to u většiny „normálních“ aplikací (někteří uživatelé stejně jako psát v krajině softkeyboard na svých telefonech, a mnoho uživatelů tabletů přečíst na výšku - a měli byste nechat).
  • Pokud jste ještě potřebovat vynutit portrét z nějakého důvodu, sensorPortraitmůže být lepší než portraitpro Android 2.3 nebo vyšší; to umožňuje vzhůru nohama na výšku, což je docela obyčejný v užívání tablet.
Odpovězeno 24/02/2009 v 18:04
zdroj uživatelem

hlasů
95

Nebyl jsem si vědom AndroidManifest.xmlpřepínače souboru, dokud přečtení tohoto příspěvku, takže ve svých aplikacích jsem to používá místo:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation
Odpovězeno 18/10/2010 v 15:53
zdroj uživatelem

hlasů
31

Přidejte toto android:screenOrientation="portrait"do vašeho souboru manifestu, kde deklarovat svou aktivitu takhle

<activity android:name=".yourActivity"
    ....
    android:screenOrientation="portrait" />

Chcete-li provést pomocí kódu Java zkusit

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Než zavoláte setContentViewmetodu pro danou činnost v onCreate().

Doufat, že to pomůže a snadno pochopitelné pro všechny ...

Odpovězeno 27/09/2012 v 10:47
zdroj uživatelem

hlasů
19

Mnoho odpovědí zde navrhují použít "portrait"v souboru AndroidManifest.xml. To se může zdát jako dobré řešení - ale jak je uvedeno v dokumentaci, kterou vyčleněním zařízení, která mohou mít pouze krajinu. Ty jsou také nutí určitá zařízení (které pracují nejlépe v krajině), jít do portrétu, nedostávají správnou orientaci.

Můj návrh je použít "nosensor"místo. Toto opustí zařízení, aby využila svého výchozího preferovanou orientaci, nebude blokovat jakýkoliv nákup / stažení na Google Play, a zajistí senzor není zkazit váš (NDK, v mém případě) hru.

Odpovězeno 21/08/2013 v 15:41
zdroj uživatelem

hlasů
9

Pokud chcete, uživatelských nastavení,

pak bych doporučil setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Můžete změnit nastavení z menu nastavení.

Žádám to, protože moje časovače musí odpovídat tomu, co je na obrazovce, a otáčení obrazovky zničí současnou aktivitu.

Odpovězeno 10/02/2012 v 05:46
zdroj uživatelem

hlasů
8

Stačí přidat Stejně jako tento řádek v manifestu

android: screenOrientation = "na výšku"

<manifest
    package="com.example.speedtestmeter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name="ComparisionActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

        <activity
            android:name="GaugeView"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

        <activity
            android:name="Resultactivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

    </application>

</manifest>   
Odpovězeno 05/02/2015 v 09:30
zdroj uživatelem

hlasů
5

Pokud si nechcete projít hádka přidání orientaci v každé zjevně vstupu činnosti lepší vytvořit BaseActivity třídu (dědí ‚aktivita‘ nebo ‚AppCompatActivity‘), který zdědí každé aktivitě vaší aplikace namísto ‚Činnost "nebo‚AppCompatActivity‘a přidejte následující kus kódu v BaseActivity:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    // rest of your code......
}
Odpovězeno 22/04/2017 v 17:51
zdroj uživatelem

hlasů
5

Použijte v onCreate () aktivity

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Odpovězeno 06/05/2015 v 09:59
zdroj uživatelem

hlasů
5

byste měli změnit android:screenOrientation="sensorPortait"v AndroidManifest.xml

Odpovězeno 03/01/2014 v 07:04
zdroj uživatelem

hlasů
5

Stačí přidat tento atribut ve své činnosti značce.

 android:screenOrientation="portrait"
Odpovězeno 01/10/2013 v 08:00
zdroj uživatelem

hlasů
4

Chcete-li zakázat Landscape mode for your android app(nebo jedinou aktivitou), vše, co potřebujete udělat, je přidat,

android:screenOrientation="portrait"ke značce aktivity v AndroidManifest.xmlsouboru.

Jako:

<activity android:name="YourActivityName" 
    android:icon="@drawable/ic_launcher" 
    android:label="Your App Name" 
    android:screenOrientation="portrait">

Jinými slovy, programový přístup.

Chcete-li to provést programově, tj. pomocí Java kód. To lze provést přidáním následující kód ve třídě Java činnosti, které nechcete, aby se zobrazí v režimu na šířku.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Doufám, že to pomůže .Pro více informací můžete navštívit zde zadat popis link zde

Odpovězeno 16/03/2015 v 05:25
zdroj uživatelem

hlasů
4

Přidat android:screenOrientation="portrait"k aktivitě, kterou chcete do režimu na šířku zakázat.

Odpovězeno 26/01/2014 v 10:30
zdroj uživatelem

hlasů
4

Přidejte následující úryvek ve svém manifestu souboru.

<activity android:name=".yourActivity"
          ....
          android:screenOrientation="portrait"/>

Tato podpora pouze v režimu na výšku

Odpovězeno 16/08/2013 v 11:11
zdroj uživatelem

hlasů
3

Měli byste dát tento kód do manifestech souboru .......

    <activity android:name=".SunderFlowersActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
        >
    </activity>
Odpovězeno 12/05/2017 v 06:49
zdroj uživatelem

hlasů
3

Jednoduše přidejte androida: screenOrientation = „portrét“ ke značce aktivity v manifestu aplikace.

Např:

    <activity android:name=".ui.activities.MainActivity"
       android:screenOrientation="portrait"></activity>
Odpovězeno 28/02/2017 v 09:26
zdroj uživatelem

hlasů
3

Jak změnit orientaci v některém z pohledu

Namísto uzamčení orientace celé činnosti, můžete použít tuto třídu dynamicky zamknout orientaci některou z vašeho pohledu pragmaticky: -

Udělej si svůj názor na šířku

OrientationUtils.lockOrientationLandscape(mActivity);

Udělej si svůj názor portrét

OrientationUtils.lockOrientationPortrait(mActivity);

odemknout Orientace

OrientationUtils.unlockOrientation(mActivity);

Orientace Util třídy

import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Build;
import android.view.Surface;
import android.view.WindowManager;

/*  * This class is used to lock orientation of android app in nay android devices 
 */

public class OrientationUtils {
    private OrientationUtils() {
    }

    /** Locks the device window in landscape mode. */
    public static void lockOrientationLandscape(Activity activity) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    }

    /** Locks the device window in portrait mode. */
    public static void lockOrientationPortrait(Activity activity) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

    /** Locks the device window in actual screen mode. */
    public static void lockOrientation(Activity activity) {
        final int orientation = activity.getResources().getConfiguration().orientation;
        final int rotation = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
                .getRotation();

        // Copied from Android docs, since we don't have these values in Froyo
        // 2.2
        int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;
        int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;

        // Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO
        if (!(Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO)) {
            SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
        }

        if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
            if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            }
        } else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
            if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
            } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
                activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
            }
        }
    }

    /** Unlocks the device window in user defined screen mode. */
    public static void unlockOrientation(Activity activity) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
    }

}
Odpovězeno 28/04/2016 v 06:24
zdroj uživatelem

hlasů
3

Pokud používáte Xamarin C # některé z těchto řešení nebude fungovat. Zde je řešení, které jsem našel na práci.

[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]

Nad třídě funguje dobře, podobně jako jiná řešení, ani globálně použitelná a musí být umístěna v každé hlavičce aktivity.

Odpovězeno 20/03/2016 v 14:52
zdroj uživatelem

hlasů
3

přidat třídu uvnitř OnCreate metoda ()

 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Odpovězeno 02/01/2016 v 04:54
zdroj uživatelem

hlasů
3

Je nutné nastavit orientaci každé činnosti.

<activity
                android:name="com.example.SplashScreen2"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
            <activity
                android:name="com.example.Registration"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
            <activity
                android:name="com.example.Verification"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
            <activity
                android:name="com.example.WelcomeAlmostDone"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
            <activity
                android:name="com.example.PasswordRegistration"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
Odpovězeno 04/02/2015 v 07:23
zdroj uživatelem

hlasů
3

použití

android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" 
Odpovězeno 14/05/2012 v 17:42
zdroj uživatelem

hlasů
2

Můžete vynutit určitou činnost, aby se vždy zůstat v režimu na výšku tím, že píše to v Manifest.xml

 <activity android:name=".MainActivity"
        android:screenOrientation="portrait"></activity>

Můžete také vynutit svou činnost zůstat v postrait režimu napsáním následující řádek onCreate vaší činnosti je () metoda

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}
Odpovězeno 16/01/2017 v 06:25
zdroj uživatelem

hlasů
2
<android . . . >
    . . .
    <manifest . . . >
        . . .
        <application>
            <activity android:name=".MyActivity" 
                android:screenOrientation="portrait" 
                android:configChanges="keyboardHidden|orientation">
            </activity>
        </application>
    </manifest>
</android>
Odpovězeno 04/09/2012 v 07:30
zdroj uživatelem

hlasů
1

Přidejte pod pochválit svého projektu,

NPM instalovat

NPM reaguji-nativní-orientaci-skříňku

pak použít zjevně třídu rád, React_Native (složce Project) / android / app / src / main / AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

<application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:allowBackup="false"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="landscape"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>

Děkuji!

Odpovězeno 27/12/2018 v 09:14
zdroj uživatelem

hlasů
1

přidat androida: screenOrientation = „portrét“ v AndroidManifest.xml souboru.example <activity android:name=".MapScreen" android:screenOrientation="portrait"></activity>

Odpovězeno 01/02/2012 v 08:42
zdroj uživatelem

hlasů
1

V <apphome>/platform/androidadresáři vytvořeném AndroidManifest.xml(zkopírováním z vytvořeného jednoho). Pak přidáme android:screenOrientation=portrait“ pro všechny prvky činnosti.

Odpovězeno 19/09/2011 v 11:46
zdroj uživatelem

hlasů
0

A to buď ve třídě manifestu.

<activity android:name=".yourActivity"
    ....
    android:screenOrientation="portrait" />

nebo programově

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Poznámka: měli byste zavolat dřív setContentViewmetodu pro danou činnost v onCreate().

Odpovězeno 13/05/2018 v 17:23
zdroj uživatelem

hlasů
0

To lze provést po celou dobu aplikace, aniž by museli dělat všechny své aktivity rozšířit společný základní třídu.

Trik je v tom prvním, aby se ujistil zahrnují podtřídy aplikace ve vašem projektu. Ve svém onCreate () volána, když vaše aplikace poprvé spustí, můžete zaregistrovat objekt ActivityLifecycleCallbacks (úroveň API 14+) dostávat upozornění na činnost životního cyklu akcí.

To vám dává možnost spustit vlastní kód, kdykoli je spuštěna jakákoli činnost ve vaší aplikaci (nebo zastavena, nebo obnovena, nebo cokoliv). V tomto okamžiku můžete volat setRequestedOrientation () na nově vytvořené aktivity.

A nezapomeňte přidat app: name = „myApp“ v souboru manifestu.

class MyApp extends Application {

@Override
public void onCreate() {
    super.onCreate();  

    // register to be informed of activities starting up
    registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

        @Override
        public void onActivityCreated(Activity activity, 
                                      Bundle savedInstanceState) {

            // new activity created; force its orientation to portrait
            activity.setRequestedOrientation(
                ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        }

        ....

    });

}

}

Odpovězeno 05/04/2018 v 09:28
zdroj uživatelem

hlasů
0

Fungovalo to pro mě, zkuste přidat tento kód do souboru AndroidManifest

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme">
        ....
        ....
        </application>
Odpovězeno 06/02/2018 v 09:53
zdroj uživatelem

hlasů
0
 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="in.co.nurture.bajajfinserv">
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>


    <application

        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" android:screenOrientation="portrait">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

můžeme omezit činnost v výšku nebo na šířku režimu pomocí atributu nebo Android: screenOrientation.

pokud budeme mít více než jednu aktivitu ve svém programu, pak máte svobodu omezit některý z činnosti v některého módu a nikdy vliv na jiné, které nechcete.

Odpovězeno 26/07/2017 v 12:03
zdroj uživatelem

hlasů
0

V Kotlin Totéž lze programově dosáhnout za použití níže

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
Odpovězeno 11/06/2017 v 15:07
zdroj uživatelem

hlasů
0

pokud vaše činnost ve vztahu k první orientaci zařízení stavu, získat aktuální orientaci zařízení v onCreatemetodě a pak ji opravit navždy:

        int deviceRotation = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();

        if(deviceRotation == Surface.ROTATION_0) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        else if(deviceRotation == Surface.ROTATION_180)
        {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
        }
        else if(deviceRotation == Surface.ROTATION_90)
        {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
        else if(deviceRotation == Surface.ROTATION_270)
        {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
        }
Odpovězeno 22/09/2016 v 15:14
zdroj uživatelem

hlasů
0

V naději, že na pomoc někoho jiného, ​​následující atribut na aktivitu AndroidManifest.xml je vše, co potřebujete:

android: configChanges = "orientace"

Takže plná aktivita uzel:

<activity android:name="Activity1" 
    android:icon="@drawable/icon" 
    android:label="App Name" 
    android:configChanges="orientation">
Odpovězeno 17/07/2013 v 23:53
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more