2012-11-15 34 views
17

Về cơ bảnAndroid, cách hoạt động hiện tại mờ/kính/sương mù

Trong một hoạt động, tôi có một ListView. Khi tôi chọn một mục, hoạt động trong suốt sẽ mở ra dưới dạng một hộp nhỏ. Khi hộp này xuất hiện, bạn vẫn có thể xem màn hình hoạt động trước đây,

Những gì tôi đang cố gắng tìm ra là làm thế nào để làm mờ màn hình trước đó như hình liên kết here (Bỏ qua giao diện người dùng, chỉ cần nhìn vào bãi cỏ mờ khu vực).

Làm cách nào có thể?

Cảm ơn bạn đã được tư vấn.

Trả lời

33

Đối với API < 14, bạn có thể sử dụng cờ WindowManager.LayoutParams.FLAG_BLUR_BEHIND, nhưng nó đã bị phản đối và built-in mờ không còn được hỗ trợ trên các API cao

Tuy nhiên, bạn có thể làm điều này với một cái nhìn bình thường hoặc lớp phủ. Những gì bạn muốn làm là:

  • Tạo một Bitmap từ bố cục tổng thể của hoạt động của bạn (see here for example)
  • Blur rằng bitmap với bất cứ phương pháp nào bạn muốn (a few examples here)
  • Add (hoặc Bỏ ẩn) một View tại của bạn bố cục bao gồm mọi thứ. Đặt bkg thành mờ Bitmap
  • Mở hộp thoại/hoạt động trong suốt
  • Khi đóng, xóa View hoặc setVisibility(GONE) nếu bạn sẽ sử dụng lại.
+0

Cảm ơn bạn, tôi sẽ cố gắng ngay bây giờ! – rennoDeniro

+0

Xin chào, Các ví dụ mờ mất một vài giây để làm mờ, vì vậy việc này sẽ làm chậm hoạt động mới, Làm cách nào tôi có thể giải quyết vấn đề này? Vì tôi muốn nó mờ và mở càng nhanh càng tốt. – rennoDeniro

+0

Bạn đã thử phiên bản NDK của câu trả lời được hiển thị chưa? Tác giả đã nhận được báo cáo tăng tốc 40 lần. Có thể là một chút nhiều chỉ cho một mờ nếu bạn tinh khiết Java cho tất cả mọi thứ khác, nhưng nó có giá trị một shot. Một ý tưởng khác có thể là thay đổi các vòng pixel bằng cách tăng thêm 2 vòng. Nó sẽ không phải là một điểm ảnh mờ hoàn hảo, nhưng nếu bạn chỉ làm mỗi điểm ảnh khác cho cả hai x/y, nó sẽ chỉ mất 1/4 thời gian. Tôi không chắc nó trông như thế nào, nhưng nó chỉ mất vài phút để thay đổi vòng lặp để tìm hiểu. – Geobits

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