• 安卓 BottomSheetDialog


     仿抖音评论区,可滑动关闭

    BottomSheetDialog的使用: 

    首先要先创建一个类,然后继承:BottomSheetDialogFragment 重写 onCreateDialog 方法

    1. public class CommentBottomDialog extends BottomSheetDialogFragment {
    2. @NonNull
    3. @NotNull
    4. @Override
    5. public Dialog onCreateDialog(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
    6. if (getActivity() == null) return super.onCreateDialog(savedInstanceState);
    7. // 第二个参数是设置 dialog 的背景样式
    8. BottomSheetDialog dialog = new BottomSheetDialog(getActivity(), R.style.BottomSheetStyle);
    9. // 这个是设置 dialog 弹出动画
    10. Window window = dialog.getWindow();
    11. if (window != null) {
    12. window.setWindowAnimations(R.style.BottomSheetStyle);
    13. }
    14. // 设置 dialog 布局
    15. initView(dialog);
    16. return dialog;
    17. }
    18. private void initView(BottomSheetDialog dialog) {
    19. View root = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_comment_layout, null);
    20. dialog.setContentView(root);
    21. //设置高度
    22. ViewGroup.LayoutParams params = root.getLayoutParams();
    23. params.height = (int) (0.75 *
    24. getResources().getDisplayMetrics().heightPixels);
    25. root.setLayoutParams(params);
    26. // 初始化 dialog 布局里的控件
    27. ImageView iv_close = root.findViewById(R.id.iv_close);
    28. // 点击关闭 dialog
    29. iv_close.setOnClickListener(new View.OnClickListener() {
    30. @Override
    31. public void onClick(View view) {
    32. dialog.dismiss();
    33. }
    34. });
    35. // TODO 下面做一些其他操作自由扩展
    36. // ...
    37. }
    38. }

    BottomSheetStyle

    1. <style name="BottomSheetStyle" parent="Theme.AppCompat.Dialog">
    2. <item name="android:windowBackground">@android:color/transparentitem>
    3. <item name="android:windowFrame">@nullitem>
    4. <item name="android:backgroundDimEnabled">trueitem>
    5. <item name="android:windowIsFloating">trueitem>
    6. <item name="android:windowEnterAnimation">@anim/popup_initem>
    7. <item name="android:windowExitAnimation">@anim/popup_outitem>
    8. style>

    在res文件夹下新建文件夹:anim

    popup_in
    1. <set xmlns:android="http://schemas.android.com/apk/res/android">
    2. <translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="400"/>
    3. <alpha android:fromAlpha="0" android:toAlpha="1.0" android:duration="400"/>
    4. set>
    popup_out
    1. <set xmlns:android="http://schemas.android.com/apk/res/android">
    2. <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="500"/>
    3. <alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="500"/>
    4. set>


     

    dialog展示:

    1. CommentBottomDialog bottomDialog = new CommentBottomDialog();
    2. bottomDialog.show(getBaseActivity().getSupportFragmentManager(), "halo");

  • 相关阅读:
    Python安装第三方库的常用方法:使用pip
    [报告] Microsoft :Application of deep learning methods in speech enhancement
    记一次 .NET 某数控机床控制程序 卡死分析
    美味的黄油如果不冷藏,会变质吗?
    令人抓马的Airtest报错:int object is not iterable
    互融云供应链代采金融系统:优化企业运作、有效控制成本
    功能测试人员如何做到花一个月的时间进阶自动化软件测试工程师
    Vue3 模糊搜索筛选
    分析2022年国内国际学校ib的分数
    【TS】类和接口
  • 原文地址:https://blog.csdn.net/a506656675/article/details/126360897