2013-08-16 31 views

Trả lời

133

Có thể thực hiện được!

ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

ActivityInfo

http://developer.android.com/reference/android/content/pm/ActivityInfo.html

Tham khảo các.210 liên kết:

Button buttonSetPortrait = (Button)findViewById(R.id.setPortrait); 
Button buttonSetLandscape = (Button)findViewById(R.id.setLandscape); 

buttonSetPortrait.setOnClickListener(new Button.OnClickListener(){ 

    @Override 
    public void onClick(View arg0) { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } 

}); 

buttonSetLandscape.setOnClickListener(new Button.OnClickListener(){ 

    @Override 
    public void onClick(View arg0) { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 

}); 

http://android-er.blogspot.in/2011/08/set-screen-orientation-programmatically.html

+0

Cảm ơn. Nhưng chức năng này có cần chạy trên thiết bị gốc không? Có vẻ như không hoạt động trên điện thoại di động của tôi nhưng trên máy tính bảng của tôi. – Sam

+0

Không, không phải như vậy .. Thực ra tôi đã kiểm tra mã trong liên kết đó trước khi đăng .. Nó đang hoạt động trên thiết bị của tôi .. – Hariharan

+0

okay, yea, bạn nói đúng. tôi vừa thử nghiệm một thiết bị khác và nó hoạt động tốt. tốt, Samsung Galaxy Nexus của tôi không hoạt động. Không biết tại sao. – Sam

24

Vâng, bạn có thể thiết lập các hướng màn hình programatically bất cứ lúc nào bạn muốn sử dụng:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

cho cảnh quan và chế độ chân dung tương ứng. Phương thức setRequestedOrientation() có sẵn cho lớp Activity, vì vậy nó có thể được sử dụng bên trong Activity của bạn.

Và đây là cách bạn có thể có được định hướng màn hình hiện và đặt nó adequatly tùy thuộc vào tình trạng hiện tại của nó:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
final int orientation = display.getOrientation(); 
// OR: orientation = getRequestedOrientation(); // inside an Activity 

// set the screen orientation on button click 
Button btn = (Button) findViewById(R.id.yourbutton); 
btn.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       switch(orientation) { 
        case Configuration.ORIENTATION_PORTRAIT: 
         setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
         break; 
        case Configuration.ORIENTATION_LANDSCAPE: 
         setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
         break;     
       } 
      } 
    }); 

Taken từ đây: http://techblogon.com/android-screen-orientation-change-rotation-example/

EDIT

Ngoài ra, bạn có thể lấy hướng màn hình bằng cách sử dụng Configuration:

Activity.getResources().getConfiguration().orientation 
+2

Tôi khuyên bạn nên sử dụng 'getRequestedOrientation()' để xem hướng màn hình hiện tại: http://stackoverflow.com/a/21909327/1037294 –

+0

Câu trả lời đầy đủ. – pdegand59

14

Sử dụng này để thiết lập các định hướng của màn hình:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

hoặc

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

và đừng quên để thêm video này biểu hiện của bạn:

android:configChanges = "orientation" 
+2

Bạn cần cả hai "" hướng | screenSize "', Hãy xem tại đây: https://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange – Benny

+0

api 27, nó là lỗi, không sử dụng tệp kê khai Tùy chọn – Mike

12

Bất cứ nơi nào có thể , vui lòng không sử dụng SCREEN_ORIENTATION_LANDSCAPE hoặc SCREEN_ORIENTATION_PORTRAIT. Thay vào đó, hãy sử dụng:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 

Chúng cho phép người dùng định hướng thiết bị theo hướng ngang hoặc hướng dọc. Nếu bạn đã từng phải chơi một trò chơi với một cáp sạc đang được điều khiển trong dạ dày của bạn, thì bạn biết chính xác lý do tại sao có cả hai định hướng có sẵn là quan trọng đối với người dùng.

Lưu ý: Đối với điện thoại, ít nhất một số mà tôi đã kiểm tra, nó chỉ cho phép chế độ dọc "bên phải", tuy nhiên, SENSOR_PORTRAIT hoạt động bình thường trên máy tính bảng.

Lưu ý: tính năng này đã được giới thiệu trong API Level 9, vì vậy nếu bạn phải hỗ trợ 8 hoặc thấp hơn (không có khả năng vào thời điểm này), sau đó thay vì sử dụng:

setRequestedOrientation(Build.VERSION.SDK_INT < 9 ? 
         ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE : 
         ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ? 
         ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : 
         ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 
Các vấn đề liên quan