当前位置:   article > 正文

android 简单快速 自定义dialog(简单好用,不需要设置样式)_android 自定义dialog

android 自定义dialog

1.MyDialog代码:

  1. public class MyDialog{
  2. private Activity activity;
  3. private ViewGroup contentView;
  4. private View view;
  5. public MyDialog(Activity activity) {
  6. this.activity=activity;
  7. contentView = activity.findViewById(android.R.id.content);
  8. view=LayoutInflater.from(activity).inflate(R.layout.dialog_layout,null);
  9. view.findViewById(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() {
  10. @Override
  11. public void onClick(View v) {
  12. dismiss();
  13. }
  14. });
  15. view.findViewById(R.id.tv_sure).setOnClickListener(new View.OnClickListener() {
  16. @Override
  17. public void onClick(View v) {
  18. dismiss();
  19. }
  20. });
  21. }
  22. /**
  23. * 显示dialog(包含动画)
  24. */
  25. public void show(){
  26. Animation animation= AnimationUtils.loadAnimation(activity,R.anim.dialog_in_anim);
  27. view.setAnimation(animation);
  28. contentView.addView(view);
  29. }
  30. /**
  31. * 移除dialog(包含动画)
  32. */
  33. public void dismiss(){
  34. Animation animation= AnimationUtils.loadAnimation(activity,R.anim.dialog_out_anim);
  35. view.setAnimation(animation);
  36. contentView.removeView(view);
  37. }
  38. }

2.res/anim 下新建 dialog_in_anim.xml 和 dialog_out_anim.xml

dialog_in_anim.xml 底部显示

  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:fromYDelta="100%p"
  6. android:toYDelta="0%p" />
  7. </set>

dialog_out_anim.xml 底部隐藏

  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:fromYDelta="0%p"
  6. android:toYDelta="100%p" />
  7. </set>

3.界面布局:dialog_layout.xml ,半透明颜色值:#80000000

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:background="#80000000">
  7. <LinearLayout
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:layout_gravity="center"
  11. android:background="@android:color/white"
  12. android:orientation="vertical"
  13. android:paddingStart="40dp"
  14. android:paddingTop="20dp"
  15. android:paddingEnd="40dp"
  16. android:paddingBottom="20dp">
  17. <TextView
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:layout_gravity="center_horizontal"
  21. android:layout_marginBottom="30dp"
  22. android:text="标题"
  23. android:textColor="@android:color/black"
  24. android:textSize="24sp"
  25. android:textStyle="bold" />
  26. <LinearLayout
  27. android:layout_width="120dp"
  28. android:layout_height="200dp"
  29. android:layout_gravity="center"
  30. android:layout_marginBottom="20dp"
  31. />
  32. <LinearLayout
  33. android:layout_width="wrap_content"
  34. android:layout_height="wrap_content"
  35. android:layout_gravity="center"
  36. android:layout_marginStart="30dp"
  37. android:orientation="horizontal">
  38. <TextView
  39. android:id="@+id/tv_cancel"
  40. android:layout_width="wrap_content"
  41. android:layout_height="wrap_content"
  42. android:layout_gravity="center_horizontal"
  43. android:background="@android:color/darker_gray"
  44. android:gravity="center"
  45. android:paddingStart="60dp"
  46. android:paddingTop="15dp"
  47. android:paddingEnd="60dp"
  48. android:paddingBottom="15dp"
  49. android:text="关闭"
  50. android:textColor="@android:color/white"
  51. android:textSize="18sp" />
  52. <TextView
  53. android:id="@+id/tv_sure"
  54. android:layout_width="wrap_content"
  55. android:layout_height="wrap_content"
  56. android:background="@android:color/holo_orange_dark"
  57. android:gravity="center"
  58. android:paddingStart="60dp"
  59. android:paddingTop="15dp"
  60. android:paddingEnd="60dp"
  61. android:paddingBottom="15dp"
  62. android:layout_marginStart="20dp"
  63. android:text="确定"
  64. android:textColor="@android:color/white"
  65. android:textSize="18sp" />
  66. </LinearLayout>
  67. </LinearLayout>
  68. </FrameLayout>

4.使用:

new MyDialog(activity).show();

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

闽ICP备14008679号