2010-04-18 22 views
13

Tôi đã cố định hướng sử dụng:Hướng ứng dụng (phong cảnh hoặc dọc) bị khóa như thế nào?

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Mặc dù màn hình vẫn theo hướng dọc, hoạt động này vẫn còn tái. Bất kỳ ý tưởng làm thế nào để giải quyết điều này?

Cách định hướng của ứng dụng bị khóa sao cho hoạt động không được tạo lại khi thay đổi hướng?

Trả lời

40

Trước tiên, không sử dụng setRequestedOrientation() nếu bạn có thể tránh. Sử dụng thuộc tính android:screenOrientation trong phần tử <activity> tệp kê khai của bạn thay thế.

Thứ hai, bạn cũng cần android:configChanges="keyboardHidden|orientation" trong phần tử kê khai <activity> để tránh phá hủy/tạo lại chu kỳ.

4

Một ví dụ cụ thể hơn về phần hoạt động của AndroidManifest.xml cho hướng dọc:

<activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:configChanges="keyboardHidden|orientation|screenSize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

đâu android:screenOrientation bộ định hướng ban đầu và android:configChanges khoảng trống các sự kiện kích hoạt các phương pháp vòng đời tương ứng trên màn hình thay đổi.

3

Hãy thử điều này:

1. Thiết lập định hướng màn hình mong muốn trong AndroidManifest.xml của bạn

android:screenOrientation="portrait|landscape" 

Nó sẽ giống như thế này:

<application 
    android:allowBackup="true" 
    android:icon="~icon path~" 
    android:label="~name~" 
    android:supportsRtl="true" 
    android:screenOrientation="portrait" 
    android:theme="@style/AppTheme"> 
    </application> 

2.- Thêm phần này vào your onCreate void (hoặc bất cứ nơi nào bạn muốn) trong Tệp Hoạt động java của bạn (Ví dụ: "MainActivity.java"):

super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); 

Nó sẽ giống như thế này:

protected void onCreate(Bundle savedInstanceState) { 
    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);} 

Bây giờ màn hình sẽ không di chuyển ngay cả khi màn hình xoay đang bật trong các thiết bị.

Các vấn đề liên quan