Làm cách nào để Tắt chế độ ngang trong Android?


933

Làm cách nào tôi có thể tắt chế độ ngang cho một số chế độ xem trong ứng dụng Android của mình?


3
Có phải bạn đang cố gắng vô hiệu hóa tính năng tự động xoay. Hãy thử thiết lập hướng ưa thích của bạn trong chế độ xem chân dung của bạn? http://code.google.com.vn/android/reference/android/R.stylizable.html#AndroidManifestActivity_screenOrientation
adam

Câu trả lời:


1633

Thêm android:screenOrientation="portrait"vào hoạt động trong AndroidManifest.xml. Ví dụ:

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

EDIT: Vì đây đã trở thành một câu trả lời siêu phổ biến, tôi cảm thấy rất có lỗi vì việc ép chân dung hiếm khi là giải pháp đúng đắn cho các vấn đề mà nó thường được áp dụng.
Những cảnh báo chính với chân dung bắt buộc:

  • Điều này không giúp bạn tránh khỏi việc phải suy nghĩ về các sự kiện trong vòng đời hoạt động hoặc trạng thái lưu / khôi phục đúng cách. Có rất nhiều thứ ngoài việc xoay vòng ứng dụng có thể kích hoạt sự phá hủy / giải trí hoạt động, bao gồm cả những thứ không thể tránh khỏi như đa nhiệm. Không có vết cắt ngắn; học cách sử dụng các gói vàretainInstance các mảnh.
  • Hãy nhớ rằng không giống như trải nghiệm iPhone khá đồng đều, có một số thiết bị mà chân dung không phải là định hướng phổ biến rõ ràng. Khi người dùng ở trên các thiết bị có bàn phím phần cứng hoặc bảng trò chơi là Nvidia Shield, trên Chromebook , trên các thiết bị có thể gập lại hoặc trên Samsung DeX , việc ép chân dung có thể khiến trải nghiệm ứng dụng của bạn bị hạn chế hoặc gặp rắc rối về khả năng sử dụng. Nếu ứng dụng của bạn không có đối số UX mạnh sẽ dẫn đến trải nghiệm tiêu cực để hỗ trợ các định hướng khác, có lẽ bạn không nên ép buộc cảnh quan. Tôi đang nói về những thứ như "đây là một ứng dụng máy tính tiền cho một kiểu máy tính bảng cụ thể luôn được sử dụng trong một dock phần cứng cố định."

Vì vậy, hầu hết các ứng dụng chỉ nên để cảm biến điện thoại, phần mềm và cấu hình vật lý tự đưa ra quyết định về cách người dùng muốn tương tác với ứng dụng của bạn. Tuy nhiên, một vài trường hợp bạn vẫn có thể muốn nghĩ về nếu bạn không hài lòng với hành vi sensorđịnh hướng mặc định trong trường hợp sử dụng của mình:

  • Nếu mối quan tâm chính của bạn là định hướng ngẫu nhiên thay đổi giữa hoạt động mà bạn nghĩ rằng cảm biến và phần mềm của thiết bị sẽ không phù hợp (ví dụ: trong trò chơi dựa trên độ nghiêng), hãy xem xét hỗ trợ phong cảnh và chân dung, nhưng sử dụng nosensorcho định hướng. Điều này buộc cảnh quan trên hầu hết máy tính bảng và chân dung trên hầu hết các điện thoại, nhưng tôi vẫn không khuyến nghị điều này cho hầu hết các ứng dụng "bình thường" (một số người dùng chỉ muốn gõ phím chức năng ngang trên điện thoại của họ và nhiều người dùng máy tính bảng đọc theo chiều dọc - và bạn nên để cho họ).
  • Nếu bạn vẫn cần buộc chân dung vì một số lý do, sensorPortraitcó thể tốt hơn so portraitvới Android 2.3+; điều này cho phép chụp chân dung lộn ngược, khá phổ biến trong sử dụng máy tính bảng.

54
Có thể làm điều đó cho toàn bộ ứng dụng. Hãy xem stackoverflow.com/a/9784269/1300707
Liam George Betsworth

1
Tôi nhận thấy rằng có một bức chân dung khác: cảm biếnPortait. Sự khác biệt giữa cảm biếnPortait và chân dung
Jacky

1
Nếu bạn đọc tài liệu của Google : "Định hướng chân dung, nhưng có thể là chân dung bình thường hoặc ngược lại dựa trên cảm biến của thiết bị. Đã thêm vào API cấp 9." Vì vậy - đó là - "chân dung, mặt phải lên hoặc lộn ngược, chỉ dành cho Android 2.3+."
Yoni Samlan

2
Như tôi đã lưu ý trong câu trả lời của mình dưới đây - để giải quyết một số vấn đề, "nosensor" có thể là một lựa chọn tốt hơn.
Mike Weir

1
Tôi phải nói rằng tôi không đồng ý. Không phải tất cả các trải nghiệm đều tương thích với chế độ phong cảnh trên điện thoại, vì vậy bạn nên để UX quyết định chứ không phải cảm biến. Đây không phải là trường hợp trên máy tính bảng mặc dù.
Renzo Tissoni

110

Tôi đã không nhận thức được việc AndroidManifest.xmlchuyển đổi tập tin cho đến khi đọc bài đăng này, vì vậy trong các ứng dụng của mình, tôi đã sử dụng công cụ này thay thế:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation

9
điều này có thể làm cho hoạt động của bạn nhảy lên lần tải đầu tiên nếu thiết bị không theo hướng được chỉ định.
Dori

Tôi đã sử dụng phương pháp này, tôi đã gọi nó trong OnCreate sau đó tôi sẽ đọc dữ liệu từ một số tệp tài sản. Nếu tôi khởi động ứng dụng với thiết bị theo hướng ngang thì nó sẽ xoay nhưng điều này sẽ dẫn đến việc đọc nhầm các tài sản khởi tạo đó, vì một số lý do kỳ lạ (có lẽ nên đợi xoay vòng để hoàn thành một số cách). Sử dụng thay thế xml không gây ra vấn đề này.
Radu Simionescu

1
Đó có thể là một vấn đề với trình tự khởi động cho các chương trình Android. Bạn có thể thử di chuyển setRequestedOrientation () sang onResume () ???
Giàu

45

Thêm phần này android:screenOrientation="portrait"vào tệp kê khai của bạn nơi bạn khai báo hoạt động của mình như thế này

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

Nếu bạn muốn làm bằng cách sử dụng mã java hãy thử

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

trước khi bạn gọi setContentViewphương thức cho hoạt động của bạn trong onCreate().

Hy vọng sự giúp đỡ này và dễ hiểu cho tất cả ...


29

Rất nhiều câu trả lời ở đây đang đề xuất sử dụng "portrait"trong tệp AndroidManifest.xml của bạn. Điều này có vẻ như là một giải pháp tốt - nhưng như đã lưu ý trong tài liệu, bạn đang chọn ra các thiết bị chỉ có thể có phong cảnh. Bạn cũng đang buộc một số thiết bị nhất định (hoạt động tốt nhất trong phong cảnh) phải đi vào chân dung, không có được định hướng phù hợp.

Đề nghị của tôi là sử dụng "nosensor"thay thế. Điều này sẽ khiến thiết bị sử dụng hướng ưu tiên mặc định của thiết bị, sẽ không chặn bất kỳ giao dịch mua / tải xuống nào trên Google Play và sẽ đảm bảo cảm biến không làm rối trò chơi (NDK, trong trường hợp của tôi) của bạn.


Vì nhiều người đã bỏ phiếu này, tôi muốn chỉ ra rằng tôi đã đi với các câu trả lời khác gợi ý "chân dung" khi một số thiết bị tối nghĩa thực tế phản ứng không thể đoán trước khi muốn thực hiện xoay màn hình trong ứng dụng, đã trở thành một yêu cầu sau này đối với tôi. Tôi cũng nghi ngờ bất kỳ ứng dụng nào có "chân dung" sẽ bị chặn bởi bất kỳ thiết lập Google Play nào.
Mike Weir

Trên thực tế, Google Play sẽ lọc các ứng dụng chỉ có chân dung trên các thiết bị chỉ nằm ngang, xem ghi chú trên trang này: developer.android.com/guide/topics/manifest/ tựa ("giá trị bạn khai báo cho phép lọc theo các dịch vụ như Google Chơi ")
miracle2k

14

Nếu bạn muốn cài đặt người dùng,

sau đó tôi muốn giới thiệu setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Bạn có thể thay đổi cài đặt từ menu cài đặt.

Tôi yêu cầu điều này bởi vì bộ tính giờ của tôi phải tương ứng với những gì trên màn hình và xoay màn hình sẽ phá hủy hoạt động hiện tại.


14

Chỉ cần thêm Like dòng này trong Bản kê khai của bạn

android: screenOrientation = "chân dung"

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

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


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

    </application>

</manifest>   

9

Bạn có thể làm điều này cho toàn bộ ứng dụng của mình mà không phải thực hiện tất cả các hoạt động của mình mở rộng một lớp cơ sở chung.

Bí quyết đầu tiên là đảm bảo bạn bao gồm một lớp con Ứng dụng trong dự án của bạn. Trong onCreate (), được gọi khi ứng dụng của bạn khởi động lần đầu tiên, bạn đăng ký một đối tượng ActivityLifecyclCallbacks (API cấp 14+) để nhận thông báo về các sự kiện vòng đời hoạt động.

Điều này mang đến cho bạn cơ hội để thực thi mã của riêng bạn bất cứ khi nào bất kỳ hoạt động nào trong ứng dụng của bạn được bắt đầu (hoặc dừng lại hoặc tiếp tục hoặc bất cứ điều gì). Tại thời điểm này, bạn có thể gọi setRequestedOrientation () trên hoạt động mới được tạo.

Và đừng quên thêm ứng dụng: name = ". MyApp" vào tệp kê khai của bạn.

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);
            }
            ....
        });
    }
}

7

Sử dụng điều này trong onCreate () của Hoạt động

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

7

Bạn nên thay đổi android:screenOrientation="sensorPortrait"trong AndroidManifest.xml


6

Chỉ cần thêm thuộc tính này trong thẻ hoạt động của bạn.

 android:screenOrientation="portrait"

6

Nếu bạn không muốn gặp rắc rối khi thêm định hướng vào từng mục hoạt động của bảng kê khai hoạt động tốt hơn, hãy tạo lớp BaseActivity (kế thừa 'Hoạt động' hoặc 'AppCompatActivity') sẽ được kế thừa bởi mọi hoạt động của ứng dụng thay vì 'Hoạt động 'hoặc' AppCompatActivity 'và chỉ cần thêm đoạn mã sau vào BaseActivity của bạn:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    // rest of your code......
}

5

Thêm android:screenOrientation="portrait"vào hoạt động bạn muốn tắt chế độ ngang.


5

Nếu bạn muốn tắt Landscape mode for your android app(hoặc một hoạt động), tất cả những gì bạn cần làm là thêm,

android:screenOrientation="portrait" vào thẻ hoạt động trong AndroidManifest.xml tập tin.

Giống:

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

Một cách khác, phương pháp lập trình.

Nếu bạn muốn làm điều này theo chương trình tức là. sử dụng mã Java. Bạn có thể làm như vậy bằng cách thêm mã dưới đây vào lớp Java của hoạt động mà bạn không muốn được hiển thị ở chế độ ngang.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Tôi hy vọng nó sẽ giúp bạn. Thêm chi tiết bạn có thể truy cập vào đây nhập mô tả liên kết tại đây


2
Vì rất nhiều câu trả lời đưa ra lời khuyên mâu thuẫn với lời khuyên tốt của @Phoenix và @Yoni, tôi nghĩ một điểm mấu chốt là nhắc lại những gì họ đề xuất:android:screenOrientation="nosensor">
DSlomer64

1
@ DSlomer64 Có. Nếu bạn muốn đối phó với các thiết bị máy tính bảng thì bạn nên sử dụng giá trị nosensor thay cho chân dung
IntelliJ Amiya

5

Cách thay đổi hướng trong một số chế độ xem

Thay vì khóa hướng của toàn bộ hoạt động, bạn có thể sử dụng lớp này để tự động khóa hướng từ bất kỳ chế độ xem nào của bạn một cách thực tế: -

Tạo cảnh quan của bạn

OrientationUtils.lockOrientationLandscape(mActivity);

Làm cho quan điểm của bạn Chân dung

OrientationUtils.lockOrientationPortrait(mActivity);

Định hướng mở khóa

OrientationUtils.unlockOrientation(mActivity);

Lớp học định hướng

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);
    }

}

4

sử dụng

android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" 

4

Bạn phải đặt định hướng của từng hoạt động.

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

4

thêm lớp bên trong phương thức oncreate ()

 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

4

Nếu bạn đang sử dụng Xamarin C #, một số giải pháp này sẽ không hoạt động. Đây là giải pháp tôi tìm thấy để làm việc.

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

Trên lớp hoạt động tốt, tương tự như các giải pháp khác, cũng không thể áp dụng trên toàn cầu và cần được đặt trong mỗi tiêu đề hoạt động.


4

Bạn có thể buộc hoạt động cụ thể của mình luôn duy trì ở chế độ dọc bằng cách viết nội dung này trong tệp kê khai của bạn

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

Bạn cũng có thể buộc hoạt động của mình duy trì ở chế độ sau khi viết bằng cách viết dòng sau trong phương thức onCreate () của hoạt động của bạn

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

}

3
<android . . . >
    . . .
    <manifest . . . >
        . . .
        <application>
            <activity android:name=".MyActivity" 
                android:screenOrientation="portrait" 
                android:configChanges="keyboardHidden|orientation">
            </activity>
        </application>
    </manifest>
</android>

3

Thêm bên dưới khen ngợi về dự án của bạn,

cài đặt npm

npm i Reac -igen-direction-locker

sau đó, bạn sử dụng lớp kê khai như, React_Native (Thư mục dự án của bạn) / 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>

Cảm ơn bạn!


2

Trong <apphome>/platform/androidthư mục được tạo AndroidManifest.xml(sao chép nó từ thư mục được tạo). Sau đó thêm android:screenOrientation=" portrait" vào TẤT CẢ các yếu tố hoạt động.


2
 <?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>

chúng ta có thể hạn chế Hoạt động ở chế độ dọc hoặc ngang bằng cách sử dụng thuộc tính hoặc android: screenOrientation.

nếu chúng tôi có nhiều hơn một hoạt động trong chương trình của tôi thì bạn có quyền tự do hạn chế bất kỳ một hoạt động nào trong bất kỳ chế độ nào và nó không bao giờ ảnh hưởng đến các hoạt động khác mà bạn không muốn.


2

Hoặc trong lớp kê khai.

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

hoặc lập trình

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Lưu ý: bạn nên gọi setContentViewphương thức này trước khi phương thức cho hoạt động của bạn onCreate().


2

Thêm android:screenOrientation="portrait"vào tệp AndroidManifest.xml .

Ví dụ :

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

1

Với hy vọng giúp được người khác, thuộc tính sau đây về HOẠT ĐỘNG trong AndroidManifest.xml là tất cả những gì bạn cần:

android: configChanges = "định hướng"

Vì vậy, nút hoạt động đầy đủ:

<activity android:name="Activity1" 
    android:icon="@drawable/icon" 
    android:label="App Name" 
    android:configChanges="orientation">

Còn rất nhiều câu trả lời, bạn nên cung cấp thêm thông tin, tại sao người ta nên sử dụng câu trả lời của bạn. Đặc biệt là các tài liệu nói rằng không sử dụng Tùy chọn này: "Lưu ý: Nên tránh sử dụng thuộc tính này và chỉ sử dụng như là phương sách cuối cùng. Vui lòng đọc Xử lý Thay đổi Thời gian chạy để biết thêm thông tin về cách xử lý khởi động lại đúng cách do thay đổi cấu hình." developer.android.com/guide/topics/manifest/
Mạnh

1

Trong kotlin tương tự có thể đạt được theo chương trình bằng cách sử dụng dưới đây

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

1

Nó hoạt động với tôi, Hãy thử thêm mã này vào tệp 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>

Tôi sẽ là một giải pháp tuyệt vời, vì bạn không phải thiết lập cho mỗi hoạt động. Thật không may, không hoạt động trong ứng dụng của tôi.
Myroslav Kolodii

1

Đặt nó vào bảng kê khai của bạn.

<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="sensorPortrait" />

Hướng sẽ là chân dung, nhưng nếu điện thoại của người dùng bị lộn ngược, nó cũng hiển thị đúng cách. (Vì vậy, màn hình của bạn sẽ xoay 180 độ).


Hệ thống bỏ qua thuộc tính này nếu hoạt động đang chạy ở chế độ đa cửa sổ .


0

nếu hoạt động của bạn liên quan đến trạng thái định hướng thiết bị đầu tiên, hãy lấy hướng thiết bị hiện tại trong onCreatephương thức và sau đó sửa nó mãi mãi:

        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);
        }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.