2011-11-18 35 views
14

Tôi đã làm việc trên một dự án Android, dự định tương thích với cả điện thoại và máy tính bảng Android. Trên máy tính bảng, ứng dụng hoạt động tốt và có vẻ tốt. Tuy nhiên, trên điện thoại, chúng tôi đã chạy vào các vấn đề cả lập trình và bố cục khôn ngoan (làm việc với màn hình 10,1 inch dễ hơn rất nhiều so với màn hình 4 inch). Để giải quyết một số vấn đề này, chúng tôi đã quyết định hủy kích hoạt hướng màn hình nhưng chỉ dành cho phiên bản điện thoại, ít nhất là tạm thời.Làm cách nào để khóa hướng màn hình cho điện thoại chứ không phải cho máy tính bảng? (Android)

Câu hỏi rất đơn giản, làm cách nào để tắt hướng màn hình cho điện thoại Android, trong khi vẫn giữ cho màn hình hoạt động cho máy tính bảng Android? Tôi biết tôi có thể làm điều này trong tệp kê khai, tuy nhiên, điều này cũng sẽ khóa hướng cho máy tính bảng mà tôi tin.

Trả lời

11

Bạn cũng có thể làm điều đó từ ứng dụng.

Lock screen orientation (Android)
http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

Và thuộc tính có thể được tìm thấy ở đây:

http://developer.android.com/reference/android/R.attr.html#screenOrientation


Để phát hiện, nếu thiết bị Android là Tablet hoặc điện thoại, bạn nên sử dụng giải pháp này (khác nhau SO Q & A), https://stackoverflow.com/a/9308284/492624

+1

Tại sao câu trả lời này thiết lập như là hợp lệ? Nó không giải thích làm thế nào để thiết lập hành vi khác nhau trên điện thoại và máy tính bảng. –

2

Nó có vẻ như, không phải là không thể nếu bạn xử lý này trong thời gian chạy, bằng cách nhận được kích thước màn hình và sau đó thực hiện RunTimeConfigurationChanges, sau đó nó có thể sẽ giúp bạn.

Hãy thử điều này Handling Runtime Changes.

Và cho tôi biết nếu bạn thành công trên đó ..

Cảm ơn.

+0

Tôi đồng ý với bạn nhưng nó có thể được thực hiện. Để thực hiện việc này: 1. Nhận độ phân giải màn hình của thiết bị. 2. Ghi đè lên phương pháp cấu hìnhChuyển đổi trong hoạt động. –

1

Một phương pháp là tạo các hoạt động riêng biệt cho phiên bản điện thoại và phiên bản máy tính bảng. Và sau đó sửa định hướng của chúng trong tệp kê khai android. Phương pháp khác là để kiểm tra các thiết bị đang được sử dụng hiện và sửa chữa các định hướng trong hoạt động riêng của mình bằng cách sử dụng mã,

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

Tạo hoạt động riêng biệt là cách tốt hơn là nó dễ dàng để duy trì các tab và điện thoại phiên bản.

10

Trước hết, hãy cố gắng ngăn chặn việc này. Tôi đã chọn todo nó vì nó là một sửa chữa dễ dàng cho một vấn đề phức tạp. Nhưng thực sự, cố gắng ngăn chặn việc phải làm điều này.

Nếu bạn thực sự muốn làm điều đó, hãy sử dụng mã sau đây.

Trong hoạt động của bạn tạo ra một phương pháp:

private boolean isTablet() { 
     return (this.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
    } 

Và sau đó trong onCreate của bạn thực hiện như sau:

if (!isTablet()) { 
     // stop screen rotation on phones because <explain> 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    }