Odpowiedzi:
W manifeście ustaw to dla wszystkich swoich działań:
<activity android:name=".YourActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"/>
Pozwól mi wyjaśnić:
android:configChanges="orientation"
Androidem powiesz, że będziesz odpowiedzialny za zmiany orientacji.android:screenOrientation="portrait"
ustawiłeś domyślny tryb orientacji.android:screenOrientation="portrait"
PortraitActivity
i podczas połączenia onCreate setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
Wszystkie działania rozszerzające to nie będą się obracać
Activity
, tak jak jedno działanie sięga, ListActivity
a inne po prostu Activity
?
W pliku manifestu Androida umieść dla <activity>
tego atrybutandroid:screenOrientation="portrait"
Istnieją dwa sposoby
android:screenOrientation="portrait"
dla każdego działania w pliku manifestuthis.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
do każdego pliku Java.w manifeście:
<activity android:name=".activity.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>
lub: w MainActivity
@SuppressLint("SourceLockedOrientationActivity")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
app/src/main/AndroidManifest.xml; lineNumber: 20; columnNumber: 50; The prefix "tools" for attribute "tools:ignore" associated with an element type "activity" is not bound.
. Dodanie xmlns:tools="http://schemas.android.com/tools"
elementu głównego rozwiązuje problem
Stary post, który znam. Aby aplikacja działała zawsze w trybie pionowym, nawet gdy orientacja może być lub jest zamieniona itp. (Na przykład na tabletach) zaprojektowałem tę funkcję, która służy do ustawiania urządzenia we właściwej orientacji, bez konieczności poznawania orientacji pionowej i poziomej funkcje są zorganizowane na urządzeniu.
private void initActivityScreenOrientPortrait()
{
// Avoid screen rotations (use the manifests android:screenOrientation setting)
// Set this to nosensor or potrait
// Set window fullscreen
this.activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
DisplayMetrics metrics = new DisplayMetrics();
this.activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
// Test if it is VISUAL in portrait mode by simply checking it's size
boolean bIsVisualPortrait = ( metrics.heightPixels >= metrics.widthPixels );
if( !bIsVisualPortrait )
{
// Swap the orientation to match the VISUAL portrait mode
if( this.activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT )
{ this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }
else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ); }
}
else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); }
}
Działa jak marzenie!
UWAGA: Zmień this.activity
według swojej aktywności lub dodaj ją do głównej aktywności i usuń this.activity
;-)
używam
android:screenOrientation="nosensor"
Jest to pomocne, jeśli nie chcesz obsługiwać pionowego trybu portretowego.