Tôi có thể tạo giao diện người dùng hoặc tiện ích trong Android sẽ nằm trên đầu tất cả các ứng dụng không? Có những ứng dụng có tiện ích con như thế này. Một ví dụ có biểu tượng máy ảnh ở trên cùng của tất cả các ứng dụng, khi được nhấp, sẽ chụp màn hình.Cách tạo giao diện người dùng hoặc tiện ích con nằm ở đầu tất cả ứng dụng trong Android?
Trả lời
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);
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.
Cảm ơn. Nó hoạt động với android.permission.SYSTEM_ALERT_WINDOW – Abi
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
@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