Câu trả lời:
Trong bảng kê khai, đặt mục này cho tất cả các hoạt động của bạn:
<activity android:name=".YourActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"/>
Hãy để tôi giải thích:
android:configChanges="orientation"
bạn nói với Android rằng bạn sẽ chịu trách nhiệm về những thay đổi của định hướng.android:screenOrientation="portrait"
bạn đặt chế độ định hướng mặc định.android:screenOrientation="portrait"
PortraitActivity
và trong cuộc gọi onCreate setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
Tất cả các hoạt động mở rộng này sẽ không xoay vòng
Activity
, giống như một hoạt động mở rộng từ ListActivity
trong khi các hoạt động khác mở rộng đơn giản từ Activity
?
Trong Android Manifest File, đặt thuộc tính cho bạn <activity>
rằngandroid:screenOrientation="portrait"
Có hai cách,
android:screenOrientation="portrait"
cho mỗi Hoạt động trong Tệp kê khaithis.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
vào mỗi tệp java.trong bảng kê khai:
<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>
hoặc: trong 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.
. Thêm xmlns:tools="http://schemas.android.com/tools"
vào phần tử gốc giải quyết vấn đề
Bài cũ tôi biết. Để chạy ứng dụng của bạn luôn ở chế độ dọc ngay cả khi định hướng có thể bị hoán đổi, v.v. (ví dụ trên máy tính bảng) Tôi đã thiết kế chức năng này được sử dụng để đặt thiết bị theo đúng hướng mà không cần biết cách dọc và ngang các tính năng được tổ chức trên thiết bị.
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); }
}
Hoạt động như một lá bùa!
THÔNG BÁO: Thay đổi this.activity
theo hoạt động của bạn hoặc thêm nó vào hoạt động chính và xóa this.activity
;-)
tôi sử dụng
android:screenOrientation="nosensor"
Sẽ rất hữu ích nếu bạn không muốn hỗ trợ chế độ dọc xuống.