Tôi đã thử getOrientation()
để nhận giá trị định hướng nhưng giá trị này luôn trả về 0!hướng màn hình android
Trả lời
getOrientation()
không còn được dùng nữa. Thay vào đó, hãy thử getRotation()
.
Bất kỳ ý tưởng nào tại sao getOrientation không được chấp nhận? Theo như tôi có thể nói, getRotation thực hiện chính xác điều tương tự. –
Nếu bạn phải hỗ trợ API 7, bạn không thể sử dụng 'getRotation', đó là API 8 trở đi. – mxcl
Nếu bạn muốn biết nếu nội dung đang hiển thị ở chế độ phong cảnh hoặc chân dung (có thể hoàn toàn độc lập luân chuyển vật lý của điện thoại), bạn có thể sử dụng:
getResources().getConfiguration().orientation
định hướng công khai int
Vì: API Cấp 1
Định hướng chung của màn hình. Có thể là một trong ORIENTATION_LANDSCAPE, ORIENTATION_PORTRAIT hoặc ORIENTATION_SQUARE.
Giải pháp tốt khi bạn cần hỗ trợ các phiên bản hệ điều hành cũ hơn. Dường như đáng tin cậy hơn 'getOrientation()'. – azdev
Cho đến nay, đây là giải pháp duy nhất đã hoạt động tốt cho tôi! –
có vẻ như getOrientation() luôn trả về ORIENTATION_UNDEFINED nếu tôi không xoay màn hình kể từ khi tải hoạt động. bằng cách này tránh được vấn đề đó. – Keith
getOrientation() không được dùng nữa nhưng điều này không nhất thiết phải là gốc của sự cố của bạn. Đúng là bạn nên sử dụng getRotation() thay vì getOrientation() nhưng bạn chỉ có thể sử dụng nếu bạn đang nhắm mục tiêu Android 2.2 (API cấp 8) trở lên. Một số người và thậm chí cả nhân viên Google dường như quên điều đó.
Ví dụ: trên mong muốn HTC của tôi đang chạy Android 2.2. getOrientation() và getRotation() cả báo cáo cùng các giá trị:
- 0 (mặc định, chân dung),
- 1 (thiết bị 90 độ ngược chiều kim đồng),
- 3 (thiết bị 90 độ theo chiều kim đồng)
Báo cáo không báo cáo khi bạn đặt "trên đầu" (xoay 180, đó sẽ là giá trị 2). Kết quả này có thể là thiết bị cụ thể.
Trước hết, bạn nên làm rõ nếu bạn sử dụng trình mô phỏng hoặc thiết bị. Bạn có biết làm thế nào để xoay giả lập? Sau đó, tôi muốn giới thiệu để tạo ra một chương trình thử nghiệm nhỏ với một phương pháp onCreate() như thế này:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display mDisplay = mWindowManager.getDefaultDisplay();
Log.d("ORIENTATION_TEST", "getOrientation(): " + mDisplay.getOrientation());
}
Kiểm tra xem màn hình của điện thoại của bạn đã được khóa trong cài đặt thiết bịCài đặt> Hiển thị> Auto- Xoay màn hình. Nếu hộp kiểm đó không được chọn, Android sẽ không báo cáo thay đổi định hướng cho Hoạt động của bạn. Để rõ ràng: nó sẽ không khởi động lại hoạt động. Trong trường hợp của tôi, tôi chỉ nhận được , như bạn đã mô tả.
Bạn có thể kiểm tra điều này từ chương trình của bạn nếu bạn thêm những dòng này để onCreate()
int sysAutoRotate = 0;
try {
sysAutoRotate = Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION);
} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("ORIENTATION_TEST", "Auto-rotate Screen from Device Settings:" + sysAutoRotate);
Nó sẽ trở lại nếu Auto-Rotate tắt và nếu Auto-Rotate là trên. Một lần thử khác.Trong chương trình ban đầu của bạn, bạn có thể đã đặt trong tệp kê khai
android:screenOrientation="portrait"
Hiệu ứng tương tự, nhưng lần này chỉ cho hoạt động của bạn. Nếu bạn đã thực hiện chương trình thử nghiệm nhỏ này possibilty sẽ được loại bỏ (đó là lý do tại sao tôi khuyên bạn nên nó).
Lưu ý: Có toàn bộ chủ đề định hướng/xoay vòng thực sự là một chủ đề "thú vị". Hãy thử mọi thứ, sử dụng Log.d(), thử nghiệm, tìm hiểu.
Chỉ có 26 phiếu bầu? Điều này thực sự hữu ích! – Sonhja
Tôi gặp sự cố tương tự trên NexusOne SDK 2.3.
Điều này giải quyết được: Check orientation on Android phone.
/* First, get the Display from the WindowManager */
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
/* Now we can retrieve all display-related infos */
int width = display.getWidth();
int height = display.getHeight();
int orientation = display.getOrientation();
Tôi nghĩ bạn cần tạo hai bố cục khác nhau và tăng bố cục khác nhau theo hướng khác nhau. Tôi đang cho bạn một mã mẫu làm việc tốt cho tôi. "ngữ cảnh" bạn có thể chuyển từ hoạt động của mình trong trường hợp bộ điều hợp tùy chỉnh. Nếu bạn đang sử dụng bộ chuyển đổi tùy chỉnh sau đó bạn có thể thử mã này:
@Override
public View getView(final int position,
View convertView,
ViewGroup parent)
{
View rowView = convertView;
ViewHolder holder = null;
int i = context.getResources().getConfiguration().orientation;
if (rowView == null) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (i == Configuration.ORIENTATION_PORTRAIT) {
rowView = inflater.inflate(R.layout.protrait_layout, null, false);
} else {
rowView = inflater.inflate(R.layout.landscape_layout, null, false);
}
holder = new ViewHolder();
holder.button = (Button) rowView.findViewById(R.id.button1);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
return rowView;
}
khác khôn ngoan bạn có thể trực tiếp đặt hai bố trí khác nhau trong mã của bạn
int i = context.getResources().getConfiguration().orientation;
if (i == Configuration.ORIENTATION_PORTRAIT) {
ArrayAdapter<String> adt = new ArrayAdapter<String>(getApplicationContext(), R.layout.protrait_layout, name);
} else {
ArrayAdapter<String> adt = new ArrayAdapter<String>(getApplicationContext(), R.layout.landscape_layout, name);
}
Để tránh sử dụng các phương pháp Deprecated sử dụng Configuration Android đã tìm thấy lớp học here. Nó hoạt động kể từ API lvl 1 và vẫn hoạt động trên các thiết bị Android mới nhất. (Không được chấp nhận).
Như và ví dụ xem xét các đoạn mã sau:
Configuration config = getResources().getConfiguration();
if (config.orientation == Configuration.ORIENTATION_PORTRAIT)
{
setContentView(R.layout.portraitStart);
}
else
{
setContentView(R.layout.landscapeStart);
}
Best of hy vọng luck- câu trả lời này giúp bất cứ ai chạy vào nó.
Tại sao bạn chuyển đổi theo cách thủ công qua mã? Cấu hình bố cục có nghĩa là cho điều đó./res/layout và/res/layout-land. – afollestad
Bạn nên sử dụng:
getResources().getConfiguration().orientation
Nó có thể là một trong những ORIENTATION_LANDSCAPE
, ORIENTATION_PORTRAIT
.
http://developer.android.com/reference/android/content/res/Configuration.html#orientation
Làm thế nào để bạn có được định hướng chi tiết hơn như cảnh quan trái/phải? – Mark13426
- 1. Khóa hướng màn hình (Android)
- 2. hướng màn hình Android để cảm biến
- 3. Hướng màn hình ios
- 4. Android - Xử lý cuộc gọi trên màn hình Thay đổi hướng màn hình
- 5. android nhận kích thước màn hình của hướng màn hình khác
- 6. Android xác định hướng màn hình khi chạy
- 7. Android - Chỉ sửa hướng màn hình cho 1 trang (phonegap)
- 8. Cần trợ giúp trong hướng màn hình android
- 9. xử lý hướng màn hình android cho spinner
- 10. hướng màn hình Android khác nhau giữa các thiết bị
- 11. Hướng màn hình bắt mắt của Phonegap (Android)
- 12. Thay đổi VideoView & Toàn màn hình & Định hướng - Android
- 13. Tắt màn hình Android
- 14. Android - Xoay màn hình xoay
- 15. Android - Tắt hỗ trợ màn hình x màn hình lớn
- 16. đầy đủ ứng dụng màn hình android
- 17. Android Java: Tắt màn hình
- 18. Android emulator - Màn hình xoay
- 19. Tỷ lệ màn hình Android
- 20. màn hình giật gân android
- 21. Chụp màn hình trong android
- 22. Cách điều hướng từ một màn hình này sang màn hình khác
- 23. Jquery Mobile Android - Sửa hình nền toàn màn hình?
- 24. Thay đổi hướng màn hình trong Android mà không cần tải lại hoạt động
- 25. Android: Định hướng màn hình/Xoay để xem trước máy ảnh
- 26. chế độ toàn màn hình Android (ICS), lần chạm đầu tiên hiển thị thanh điều hướng
- 27. Hướng màn hình ngang có thể bị giới hạn trong android như thế nào?
- 28. Android ICS Launcher 4.0.x không thể giữ nguyên hướng màn hình
- 29. Android: Giữ MediaPlayer chạy trong khi cập nhật hướng màn hình Hoạt động
- 30. Thông báo tắt màn hình Android trên/
Hãy thử xoay thiết bị trước. – noelicus
Rolled trở lại bên thứ 3 chỉnh sửa tiêu đề như câu hỏi (và thậm chí nhiều hơn để nó câu trả lời) quan tâm định hướng như là một vấn đề chung hơn là một phương pháp đặc biệt. –