Trong quá trình phát triển ứng dụng, đôi khi chúng ta cần điều chỉnh giao diện người dùng để đáp ứng yêu cầu từ phía khách hàng. Một ví dụ điển hình là thay đổi cách hiển thị của một hộp thoại điều kiện lọc. Trong bài viết này, tôi sẽ hướng dẫn bạn cách sử dụng Activity kiểu Dialog để tạo hiệu ứng tương tự như PopupWindow.
Để thiết lập Activity kiểu Dialog, trước tiên bạn cần thêm thuộc tính theme vào file AndroidManifest.xml:
<activity
android:name=".product.MyselfPayProduct"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Dialog" />
Tuy nhiên, chỉ với cài đặt mặc định trên, hộp thoại có thể không hoàn toàn đáp ứng nhu cầu về kích thước và vị trí. Để kiểm soát kích thước của hộp thoại, bạn có thể áp dụng đoạn mã sau trong phương thức onCreate() của Activity:
// Cấu hình kích thước và vị trí của hộp thoại
Window window = getWindow();
window.getDecorView().setPadding(0, 0, 0, 0);
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.gravity = Gravity.BOTTOM; // Hiển thị hộp thoại ở phía dưới màn hình
window.setAttributes(layoutParams);
Mã trên sẽ giúp bạn mở rộng chiều rộng của hộp thoại ngang bằng với màn hình và đặt nó ở vị trí mong muốn (ví dụ: phía dưới).
Ngoài ra, nếu bạn muốn tạo hiệu ứng hiển thị giống như khi nhấn nút "+" ở góc trên cùng bên phải trong ứng dụng WeChat, bạn có thể sử dụng các hiệu ứng chuyển động. Đầu tiên, hãy tạo hai tệp XML cho hiệu ứng xuất hiện và biến mất trong thư mục res/anim:
Hiệu ứng xuất hiện (fade_in.xml):
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="300" />
Hiệu ứng biến mất (fade_out.xml):
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="300" />
Sau đó, bạn cần khai báo các hiệu ứng này trong file styles.xml:
<resources>
<!-- Style cho hộp thoại -->
<style name="CustomDialogStyle">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@style/DialogAnimations</item>
</style>
<!-- Định nghĩa hiệu ứng chuyển động -->
<style name="DialogAnimations">
<item name="android:windowEnterAnimation">@anim/fade_in</item>
<item name="android:windowExitAnimation">@anim/fade_out</item>
</style>
</resources>
Cuối cùng, cập nhật lại thuộc tính android:theme trong file AndroidManifest.xml để áp dụng style mới:
<activity
android:name=".product.MyselfPayProduct"
android:screenOrientation="portrait"
android:theme="@style/CustomDialogStyle" />
Bằng cách này, bạn đã có thể tùy chỉnh kích thước, vị trí và hiệu ứng chuyển động cho Activity kiểu Dialog theo ý muốn.