2011-01-10 26 views

Trả lời

4

Bạn có thể tìm hiểu xem Activity của mình có đang chạy chế độ toàn màn hình qua getWindow().getFlags() hay không.

Tuy nhiên, nếu theo "một ứng dụng" bạn đang đề cập đến ứng dụng của người khác thì câu trả lời là không.

0

Activity.hasWindowFocus() cho bạn biết liệu hoạt động của riêng bạn có hiển thị với người dùng hay không. Tuy nhiên, như ghi chú CommonsWare, khó có thể biết được liệu hoạt động khác là có nằm trên cùng của ngăn xếp hay không. Bạn có thể thử truy vấn ActivityManager (ví dụ: ActivityManager.getProcessTasks()) nhưng phương pháp của nó không cung cấp câu trả lời chính xác cho câu hỏi của bạn.

0

bạn có thể sử dụng một số thứ như thế này;

findViewById(android.R.id.content).getHeight(); 
    getResources().getDisplayMetrics().heightPixels; 

và kiểm tra sự bình đẳng; hy vọng điều này sẽ giúp;

9

Tôi đoán Commonsware muốn nói getWindow(). GetAttributes() và không getWindow(). GetFlags(); vì getFlags không tồn tại như tôi biết. Ít nhất nó không có trong doc.

bạn cần đọc getWindow(). GetAttributes(). Flags, là một int.

 
WindowManager.LayoutParams lp = getWindow().getAttributes(); 
int i = lp.flags; 

FLAG_FULLSCREEN = 1024 theo tài liệu Android. để cờ của bạn là miếng thứ 11 của lp.flags

nếu vết cắn này = 1, toàn màn hình được kích hoạt.

9

Chỉ cần để hoàn thành trên Sigwann câu trả lời:

boolean fullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0; 
boolean forceNotFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0; 
boolean actionbarVisible = getActionBar().isShowing(); 
+3

Đáng giá cẩn thận trên dòng cuối cùng ở đó với getActionBar() .Show() - nếu bạn đã tắt thanh tác vụ trong chủ đề thay vì chỉ ẩn nó, thì getActionBar() có thể trở lại vô giá trị. – themightyjon

2

Tính đến api11 hiện nay là một cách để phát hiện rằng việc sử dụng một tài liệu hướng dẫn giao diện View.setOnSystemUiVisibilityChangeListener

Người nghe lưu ý những điều sau:

Định nghĩa giao diện cho một cuộc gọi lại được gọi khi thanh trạng thái thay đổi khả năng hiển thị. Báo cáo này báo cáo số toàn cầu thay đổi đối với trạng thái giao diện người dùng hệ thống, chứ không phải những gì ứng dụng đang yêu cầu.

Tôi không biết có cách nào để làm điều đó trước Honeycomb không.

5

Tiếp theo thông tin của Sigwann, đây mã của tôi ....

public boolean isFullScreen() { 
    int flg = getWindow().getAttributes().flags; 
    boolean flag = false;  
    if ((flg & WindowManager.LayoutParams.FLAG_FULLSCREEN) == WindowManager.LayoutParams.FLAG_FULLSCREEN) { 
     flag = true; 
    } 
    return flag; 
} 

đơn giản, nhưng các công trình!

+1

Số ma thuật này có nghĩa là gì? –

+0

Nó chỉ là một cách nhị phân để cung cấp cho một số với nhiều 0 – Alecs

+0

Vẫn là số ma thuật. Tốt hơn để sử dụng: WindowManager.LayoutParams.FLAG_FULLSCREEN –

0

Có một hack đẹp, sử dụng vị trí tuyệt đối của View trên màn hình. Chỉ cần kiểm tra vị trí của bất kỳ góc trên bên trái nào của bố cục của bạn (có thể ẩn), nếu nó ở vị trí 0,0.Như thế này:

/** 
* Check if fullscreen is activated by a position of a top left View 
* @param topLeftView View which position will be compared with 0,0 
* @return 
*/ 
public static boolean isFullscreen(View topLeftView) { 
    int location[] = new int[2]; 
    topLeftView.getLocationOnScreen(location); 
    return location[0] == 0 && location[1] == 0; 
} 
Các vấn đề liên quan