2010-09-16 33 views

Trả lời

585

Trong tệp kê khai, thiết lập 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:

  • Với android:configChanges="orientation" bạn nói với Android mà bạn sẽ chịu trách nhiệm về việc thay đổi định hướng.
  • android:screenOrientation="portrait" bạn đặt chế độ hướng mặc định.
+37

sẽ không thể tuyệt vời Nếu chúng ta có thể thiết lập định hướng "toàn cầu" cho TẤT CẢ các hoạt động trong Ứng dụng? Có vẻ như chúng tôi không có tùy chọn nào khác ngoài việc sao chép/dán thuộc tính "chân dung" trên mọi hoạt động ... –

+41

Đủ để đặt 'android: screenOrientation =" portrait "' – Till

+7

@EduardoCoelho bạn thực sự có thể tạo lớp cơ sở 'PortraitActivity' và trong onCreate call 'setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)' Tất cả các hoạt động mở rộng này sẽ không xoay – Twinone

39

Trong Android Manifest File, đặt thuộc tính cho bạn <activity> rằng android:screenOrientation="portrait"

-4

tôi sử dụng

android:screenOrientation="nosensor" 

Đó là hữu ích nếu bạn không muốn hỗ trợ lên phía xuống chế độ chân dung.

+0

nếu điều này làm những gì tôi nghĩ nó, nó không thực sự buộc màn hình để chân dung, mà bạn có thể muốn làm. –

+0

tại sao bạn không xóa nhận xét này!nó không có ý nghĩa –

20

Có hai cách,

  1. Thêm android:screenOrientation="portrait" cho từng hoạt động trong Manifest file
  2. Thêm this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); trong mỗi file java.
+9

Tùy chọn thứ hai có tác dụng phụ khủng khiếp là nó sẽ khởi động lại hoạt động của bạn khi bắt đầu trong Chân dung. – Joakim

3

Bài đăng 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ể hoặc hoán đổi vv (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 chân dung và phong cảnh các tính năng được sắp xếp 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 sự quyến rũ!

THÔNG BÁO: Thay đổi this.activity bởi hoạt động của bạn hoặc thêm nó vào hoạt động chính và loại bỏ this.activity ;-)

-6

Trong tệp kê khai, thiết lập 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"/> 
+11

Bạn nên xóa câu trả lời này vì bạn đã đăng một câu trả lời khác với cùng một thông tin. – Mangesh

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