2012-07-16 14 views

Trả lời

18

Nếu bạn muốn chỉ hiển thị nội dung nào đó, bạn có thể hiển thị nó trên đầu mọi thứ ngay cả màn hình khóa.

Nếu bạn muốn một cái gì đó có thể nhấp, bạn có thể hiển thị nó trên đầu bất cứ điều gì ngoại trừ màn hình khóa.

Dưới đây là một ví dụ, sửa đổi yêu cầu của bạn:

Tạo một dịch vụ và làm như sau:

//These three are our main components. 
WindowManager wm; 
LinearLayout ll; 
WindowManager.LayoutParams ll_lp; 

//Just a sample layout parameters. 
ll_lp = new WindowManager.LayoutParams(); 
ll_lp.format = PixelFormat.TRANSLUCENT; 
ll_lp.height = WindowManager.LayoutParams.FILL_PARENT; 
ll_lp.width = WindowManager.LayoutParams.FILL_PARENT; 
ll_lp.gravity = Gravity.CLIP_HORIZONTAL | Gravity.TOP; 

//This one is necessary. 
ll_lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; 

//Play around with these two. 
ll_lp.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; 
ll_lp.flags = ll_lp.flags | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 

//This is our main layout. 
ll = new LinearLayout(this); 
ll.setBackgroundColor(android.graphics.Color.argb(0, 0, 0, 0)); 
ll.setHapticFeedbackEnabled(true); 

//And finally we add what we created to the screen. 
wm.addView(ll, ll_lp); 
+0

Cảm ơn. Nó hoạt động với android.permission.SYSTEM_ALERT_WINDOW – Abi

+0

Hatcyl, bạn có thể vui lòng cung cấp cho tôi toàn bộ mã nếu bạn không phiền để tôi có thể hiểu toàn bộ luồng. – Max

+0

@hatcyl, bạn đã thử ứng dụng notifierpro chưa? Nó cũng hiển thị trên màn hình khóa. Và nó có thể nhấp. Điều đó có thể là gì? – Enigma

3

Sau đây là thêm nhiều lựa chọn cho cách xem sẽ được hiển thị.

Điều này sẽ biến nó thành lớp phủ ở trên cùng của mọi thứ (bao gồm cả màn hình khóa), nhưng không thể nhấp được. WindowManager.LayoutParams. TYPE_SYSTEM_OVERLAY

Điều này sẽ làm cho nó nhấp, nhưng nó sẽ không có trên màn hình khóa WindowManager.LayoutParams.TYPE_SYSTEM_ALERT

Điều này sẽ làm cho nó ở trên tất cả mọi thứ (bao gồm cả màn hình khóa) VÀ nhấp được. WindowManager.LayoutParams.TYPE_SYSTEM_ERROR

Một điều cần lưu ý khi sử dụng "TYPE_SYSTEM_ERROR". Nếu bạn kết nối với một sự kiện nhấp, mọi thứ mà nó gọi sẽ xảy ra phía sau màn hình khóa.