Tworzę aplikację na Androida, której orientacji nie chcę zmieniać na tryb poziomy, gdy użytkownik obraca urządzenie. Chcę też, aby zablokowana orientacja była pionowa na telefonach i pozioma na tabletach. Czy można to osiągnąć, a jeśli tak, to w jaki sposób? Dzięki.
android
user-interface
Ankit Rawat
źródło
źródło
Odpowiedzi:
Musisz tylko zdefiniować właściwość poniżej w elemencie działania w swoim
AndroidManifest.xml
pliku. Ograniczy twoją orientację do portretu.Przykład:
<activity android:name="com.example.demo_spinner.MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" > </activity>
jeśli chcesz, aby dotyczyło to całej aplikacji, zdefiniuj właściwość poniżej wewnątrz tagu aplikacji w następujący sposób:
<application> android:screenOrientation="sensorPortrait" </application>
Dodatkowo, zgodnie z komentarzem Eduarda Luca poniżej, możesz również użyć,
screenOrientation="sensorPortrait"
jeśli chcesz włączyć obrót o 180 stopni.źródło
sensorPortrait
jeśli chcesz, aby użytkownik mógł obracać ekran o 180 stopni :)Musisz dodać
android:screenOrientation="portrait"
dyrektywę do swojegoAndroidManifest.xml
. Należy to zrobić w swoim<activity>
tagu.Ponadto przewodnik dla programistów aplikacji na Androida stwierdza, że:
źródło
Widzę, że zaakceptowałeś odpowiedź, która nie rozwiązuje całkowicie twojego problemu:
android:screenOrientation="portrait"
Spowoduje to wymuszenie pionowego wyświetlania aplikacji na telefonach i tabletach.
Możesz wymusić ustawienie aplikacji w „preferowanej” orientacji urządzenia za pomocą
android:screenOrientation="nosensor"
Spowoduje to wymuszenie pionowego wyświetlania aplikacji na większości telefonów i poziomego na tabletach. Istnieje wiele telefonów z klawiaturą, które zostały zaprojektowane do pracy w trybie poziomym. Zmuszenie aplikacji do portretu może spowodować, że będzie ona prawie bezużyteczna na takich urządzeniach. Android jest ostatnio migrowany również na inne typy urządzeń. Najlepiej po prostu pozwolić urządzeniu wybrać preferowaną orientację.
źródło
Może to być ... musisz programowo zidentyfikować tablet lub telefon ... Najpierw sprawdź, czy urządzenie to telefon lub tablet
Sprawdź, czy urządzenie to smartfon czy tablet?
Tablet lub telefon - Android
Następnie......
if(isTablet) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }else { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }
źródło
<activity android:name=".yourActivity" android:screenOrientation="portrait" ... />
dodaj do głównego działania i dodaj
android:configChanges="keyboardHidden"
aby program nie zmieniał trybu po wywołaniu klawiatury.
źródło
Ustaw orientację ekranu na pionową w pliku manifestu pod znacznikiem aktywności.
źródło
android:screenOrientation="locked"
w
<application>
przypadku wszystkich aplikacji w<activity>
ramach bieżącej aktywnościźródło
Ustaw orientację ekranu na pionową w pliku manifestu pod znacznikiem aktywności.
Oto przykład
Musisz wejść w każde działanie
Dodaj następujące wiersze do działania
do portretu
android:screenOrientation="portrait" tools:ignore="LockedOrientationActivity"
do krajobrazu
android:screenOrientation="landscape" tools:ignore="LockedOrientationActivity"
Tutaj przykład MainActivity
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="org.thcb.app"> <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" tools:ignore="LockedOrientationActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity2" android:screenOrientation="landscape" tools:ignore="LockedOrientationActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
źródło
Poprostu dodaj:
android:screenOrientation="portrait"
w „ AndroidManifest.xml ”:
<activity android:screenOrientation="portrait" android:name=".MainActivity" android:label="@string/app_name"> </activity>
źródło