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?
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?
Câu trả lời:
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:
retainInstance
các mả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:
nosensor
cho đị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ọ).sensorPortrait
có thể tốt hơn so portrait
vớ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.Tôi đã không nhận thức được việc AndroidManifest.xml
chuyể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
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 setContentView
phươ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ả ...
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.
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.
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>
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);
}
....
});
}
}
Sử dụng điều này trong onCreate () của Hoạt động
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Bạn nên thay đổi android:screenOrientation="sensorPortrait"
trong AndroidManifest.xml
Chỉ cần thêm thuộc tính này trong thẻ hoạt động của bạn.
android:screenOrientation="portrait"
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......
}
Thêm android:screenOrientation="portrait"
vào hoạt động bạn muốn tắt chế độ ngang.
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
android:screenOrientation="nosensor">
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);
}
}
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>
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.
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);
}
<android . . . >
. . .
<manifest . . . >
. . .
<application>
<activity android:name=".MyActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
</activity>
</application>
</manifest>
</android>
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!
Trong <apphome>/platform/android
thư 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.
<?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.
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 setContentView
phương thức này trước khi phương thức cho hoạt động của bạn onCreate()
.
Thêm android:screenOrientation="portrait"
vào tệp AndroidManifest.xml .
Ví dụ :
<activity android:name=".MapScreen"
android:screenOrientation="portrait"></activity>
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">
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 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ổ .
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 onCreate
phươ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);
}