2011-12-27 19 views
5

Khi tạo ứng dụng cho Android 3.x, về cơ bản bạn có thể kiểm tra xem thiết bị có ở chế độ ngang để xem nó có thể vừa với nhiều đoạn cạnh nhau hay không. Nhưng điều này chỉ là vì bạn về cơ bản được đảm bảo rằng thiết bị là một máy tính bảng.Android Xác định xem bố trí nhiều đoạn nên được sử dụng

Với sự ra đời của thư viện tương thích và android 4.0, tôi không thể nghĩ ra những gì tôi sẽ xem xét như một cách 'tốt' để xác định xem tôi có thể đi với các mảnh bên cạnh hay không. trên mỗi 'màn hình'.

Trong ứng dụng ví dụ NewsReader, Google có một tệp giá trị đặc biệt cho mọi độ phân giải chung, mỗi giá trị Boolean cho dù độ phân giải có hỗ trợ bố cục 2 đoạn hay không, nhưng tôi nghĩ cách này không được hình thành. Cách duy nhất tôi có thể nghĩ đến là kiểm tra kích thước của màn hình (để đoán xem đó có phải là máy tính bảng hay ít nhất đủ lớn để không làm hỏng bố cục), và sau đó kiểm tra hướng.

Vì vậy, nếu có ai đó có ý tưởng về cách kiểm tra điều này một cách dễ dàng và hiệu quả, vui lòng cho tôi biết!

Trả lời

6

Bạn thực sự có thể xem các loại kích thước màn hình (nhỏ, trung bình, rộng, vv) bằng cách sử dụng như sau:

getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK 

Điều đó sẽ trả về một int mà bạn có thể kiểm tra đối với bất kỳ những điều sau đây:

Configuration.SCREENLAYOUT_SIZE_SMALL 
Configuration.SCREENLAYOUT_SIZE_NORMAL 
Configuration.SCREENLAYOUT_SIZE_LARGE 
Configuration.SCREENLAYOUT_SIZE_UNDEFINED 

Sau đó, bạn có thể kiểm tra định hướng, sử dụng

getResources().getConfiguration().orientation 

nào sẽ phù hợp với bất kỳ các khả năng sau đây

Configuration.ORIENTATION_PORTRAIT 
Configuration.ORIENTATION_LANDSCAPE 
Configuration.ORIENTATION_SQUARE 
Configuration.ORIENTATION_UNDEFINED 

Với điều này về cơ bản, bạn có thể mô phỏng nhiều chế độ xem bằng cách thêm các đoạn như không gian cho phép dựa trên kích thước và hướng màn hình.

+0

Ngọt ngào! Điều này là đẹp hơn nhiều so với tôi đã được lập kế hoạch để làm điều đó ... Tôi cảm thấy tôi nên có nhớ những loại lĩnh vực tồn tại :) –

+0

Haha, tôi biết làm thế nào nó đi. Ngoài ra, quên đề cập rằng những người đó chỉ từ 8 mà tôi đã nhắm mục tiêu, SCREENLAYOUT_SIZE_XLARGE đã được thêm vào 9 để bạn có thể tiết lộ với nhắm mục tiêu. –

3

Tôi tạo 2 bố cục, một với một vùng chứa (ViewGroup) cho một đoạn và bố cục thứ hai có 2 vùng chứa cạnh nhau. Tôi sử dụng cấu trúc thư mục của Android cho các tài nguyên để chỉ định rằng các kịch bản mà tôi muốn bố cục đa mảnh (2 vùng chứa). Sau đó, trong mã, kiểm tra sự tồn tại của container thứ hai để xác định xem bạn có đa panel hay không.

isMultipanel = false; 
ViewGroup container2 = findViewById(R.id.container_2); 
if (container2 != null) { 
    isMultipanel = true; 
} 

Cố gắng không nghĩ nó như máy tính bảng hoặc điện thoại, nhưng đủ rộng hoặc không đủ rộng cho 2 bảng.

Nếu tôi muốn nhiều bảng trên các thiết bị kích thước bình thường (< = 5 ") và lớn (5" - 7 ") chỉ khi chúng ở trong cảnh, nhưng luôn trên xlarge (> 7"), tôi sẽ đặt đa phẳng file layout trong:

  • bố trí đất
  • bố trí lớn đất
  • layout-xlarge

Sau đó, bạn không cần phải làm kiểm tra kích thước trong mã từ Android đã xử lý việc này cho bạn.

+0

Tôi đã thấy tùy chọn này, nhưng tôi không làm điều này theo cách thông thường (tốt hơn hoặc tệ hơn). Tôi bắt đầu với một bố trí tuyến tính trống và thêm nhiều mảnh như tôi cần (tối đa hai).Và vì sẽ có một vài lớp tùy chọn mà tôi muốn có thể đi qua, tôi đã làm như vậy khi bạn nhấn tùy chọn trên một đoạn (ở bên phải trong chế độ xem nhiều đoạn) mảnh trái rơi xuống (vào ngăn xếp sau), đoạn bên phải scoots bên trái, và mảnh mới được thêm vào bên phải. Điều này là quan trọng bởi vì tôi không thể tải các mảnh từ đầu. Mặc dù có lẽ tôi có thể cung cấp cho phụ huynh một id ... –

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