当前位置:   article > 正文

Android底部动画弹窗Dialog_android 底部弹窗

android 底部弹窗

一、有时候会遇到底部向上的弹窗如图:

每次写一次太过于麻烦,所以就写一个简单的方法封装起来就可以了

上代码:

1、Java端 

先看使用方法

  1. //photo
  2. WindowDialogView.WindowDialogView(requireActivity(), new WindowDialogView.windowDialogListener() {
  3. @Override
  4. public void onPicture() {
  5. }
  6. @Override
  7. public void onPhotoAlbum() {
  8. }
  9. @Override
  10. public void onDismiss() {
  11. }
  12. });
WindowDialogView类
  1. public class WindowDialogView {
  2. public static void WindowDialogView(Activity activity, windowDialogListener listener) {
  3. //1、使用Dialog、设置style
  4. final Dialog dialog = new Dialog(activity, R.style.DialogTheme);
  5. //2、设置布局
  6. View view = View.inflate(activity, R.layout.window_dialog_layout, null);
  7. dialog.setContentView(view);
  8. Window window = dialog.getWindow();
  9. //设置弹出位置
  10. window.setGravity(Gravity.CENTER_VERTICAL);
  11. //设置弹出动画
  12. window.setWindowAnimations(R.style.BottomAnimStyle);
  13. //设置对话框大小
  14. window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
  15. dialog.show();
  16. //设置弹出位置
  17. window.setGravity(Gravity.BOTTOM);
  18. dialog.findViewById(R.id.tv_take_pic).setOnClickListener(new View.OnClickListener() {
  19. @Override
  20. public void onClick(View view) {
  21. dialog.dismiss();
  22. listener.onPicture();
  23. }
  24. });
  25. dialog.findViewById(R.id.tv_take_photo).setOnClickListener(new View.OnClickListener() {
  26. @Override
  27. public void onClick(View view) {
  28. dialog.dismiss();
  29. listener.onPhotoAlbum();
  30. }
  31. });
  32. dialog.findViewById(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() {
  33. @Override
  34. public void onClick(View view) {
  35. dialog.dismiss();
  36. listener.onDismiss();
  37. }
  38. });
  39. }
  40. public interface windowDialogListener {
  41. /**
  42. * 拍照
  43. */
  44. void onPicture();
  45. /**
  46. * 相册
  47. */
  48. void onPhotoAlbum();
  49. /**
  50. * 取消
  51. */
  52. void onDismiss();
  53. }
  54. }

 2、style-DialogTheme

  1. <style name="DialogTheme" parent="@android:style/Theme.Dialog">
  2. <!-- 边框 -->
  3. <item name="android:windowFrame">@null</item>
  4. <!-- 是否浮现在activity之上 -->
  5. <item name="android:windowIsFloating">true</item>
  6. <!-- 半透明 -->
  7. <item name="android:windowIsTranslucent">true</item>
  8. <!-- 无标题 -->
  9. <item name="android:windowNoTitle">true</item>
  10. <item name="android:background">@android:color/transparent</item>
  11. <!-- 背景透明 -->
  12. <item name="android:windowBackground">@android:color/transparent</item>
  13. <!-- 模糊 -->
  14. <item name="android:backgroundDimEnabled">true</item>
  15. <!-- 遮罩层 -->
  16. <item name="android:backgroundDimAmount">0.5</item>
  17. </style>

3、动画(下向上)

  1. <!-- dialog的动画 -->
  2. <style name="main_menu_animStyle">
  3. <item name="android:windowEnterAnimation">@anim/dialog_in_anim</item>
  4. <item name="android:windowExitAnimation">@anim/dialog_out_anim</item>
  5. </style>
@anim/dialog_in_anim
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <translate
  4. android:duration="300"
  5. android:fromXDelta="0"
  6. android:fromYDelta="1000"
  7. android:toXDelta="0"
  8. android:toYDelta="0" />
  9. </set>

 @anim/dialog_out_anim

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <translate
  4. android:duration="300"
  5. android:fromXDelta="0"
  6. android:fromYDelta="0"
  7. android:toXDelta="0"
  8. android:toYDelta="1000" />
  9. </set>

 

4、自定义layout

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:background="@drawable/round_shape">
  7. <TextView
  8. android:id="@+id/tv_take_photo"
  9. android:layout_width="match_parent"
  10. android:layout_height="50dp"
  11. android:text="拍摄"
  12. android:gravity="center"
  13. android:textSize="16sp"
  14. android:textColor="@color/add_tips"/>
  15. <View
  16. android:layout_width="match_parent"
  17. android:layout_height="1dp"
  18. android:background="#F4F2F2"/>
  19. <TextView
  20. android:id="@+id/tv_take_pic"
  21. android:layout_width="match_parent"
  22. android:layout_height="50dp"
  23. android:text="从手机相册选择"
  24. android:gravity="center"
  25. android:textSize="16sp"
  26. android:textColor="@color/add_tips"/>
  27. <View
  28. android:layout_width="match_parent"
  29. android:layout_height="2dp"
  30. android:background="#F4F1F1"/>
  31. <TextView
  32. android:id="@+id/tv_cancel"
  33. android:layout_width="match_parent"
  34. android:layout_height="50dp"
  35. android:text="取消"
  36. android:gravity="center"
  37. android:textSize="16sp"
  38. android:textColor="@color/add_tips"/>
  39. </LinearLayout>

明天更新关于调用系统拍照,如何保存到相册目录或文件保存到app下载的目录(Android11)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/812816
推荐阅读
相关标签
  

闽ICP备14008679号