Saturday, December 29, 2018

Tạo activity có màn hình trong suốt



Ta muốn một activity chạy trên màn hình chính mà có nền trong suốt, có thể ấn được vào các icon của ứng dụng phía sau để chạy.
Copy đoạn sau vào trong thẻ values, file styles.xml.
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<itemname="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowCloseOnTouchOutside">false</item>
<item name="android:backgroundDimEnabled">false</item>
 </style>
Thêm vào khai báo class.
android:theme="@style/Theme.Transparent"

Bây giờ trong class, copy vào dưới
setContentView();
WindowManager.LayoutParams wlp = getWindow().getAttributes();
         wlp.dimAmount = 0;
         wlp.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

|WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;

getWindow().setAttributes(wlp);

Activity bây giờ sẽ nổi ở giữa màn hình, muốn căn chỉnh nó lên trên đầu chẳng hạn, ta thêm đoạn sau vào trên setContentView();
WindowManager.LayoutParams wmlp = getWindow().getAttributes();
         wmlp.width = LayoutParams.WRAP_CONTENT;
         wmlp.gravity = Gravity.TOP | Gravity.CENTER;
Trên một số điện thoại như của Samsung, màn hình phía sau vẫn bị khoá, không chạm để mở ứng dụng khác được. Nên ta có thể dùng service để làm, nó luôn nổi và không ảnh hưởng tới màn hình phía sau.

No comments:

Post a Comment