美文网首页
Android Dialog从底部弹出和收回

Android Dialog从底部弹出和收回

作者: 必将独行 | 来源:发表于2017-05-09 11:58 被阅读1932次

    先上个大图!


    1541650702539.gif

    先创建anim文件夹,在文件夹中加入in_bottom.xml和out_bottom.xml进入和退出动画文件
    在in_bottom.xml文件写入:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate
            android:duration="300"
            android:fromYDelta="100%p"
            android:toYDelta="0"/>
    </set>
    

    在out _bottom.xml文件写入:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromYDelta="0"
        android:toYDelta="100%p"/>
    </set>
    

    这样我们就创建了两个动画文件,然后在style.xml文件引用着两个文件。
    (res文件下有style文件就直接添加下面代码,没有style文件就先创建这个文件)

    <style name="BottomInAndOutStyle">
        <item name="android:windowEnterAnimation">@anim/in_bottom</item>
        <item name="android:windowExitAnimation">@anim/out_bottom</item>
    </style> 
    

    创建好这三个文件之后我们就有动画效果的style 了

    创建一个abstract类,作为一个基类,以后有类似从底部弹出dialog需求方便扩展。

    public abstract class BottomDialogBase extends Dialog {
    public BottomDialogBase(Context context) {
          super(context);
          init();
        }
    
       protected void init(){
          Window win = this.getWindow();
          win.requestFeature(Window.FEATURE_NO_TITLE);
          onCreate();
          win.getDecorView().setPadding(0, 0, 0, 0);
          WindowManager.LayoutParams lp = win.getAttributes();
          lp.width = WindowManager.LayoutParams.MATCH_PARENT;
          lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
          lp.windowAnimations = R.style.BottomInAndOutStyle;
          lp.gravity = Gravity.BOTTOM;
          win.setAttributes(lp);
          win.setBackgroundDrawableResource(android.R.color.transparent);
        }
        protected abstract void onCreate();
    }
    

    基类就这么多东西了,然后就是使用方法。开始时候那个图片的弹窗效果就是用下面这个类完成的

    public class BottomDialogDemo extends BottomDialogBase implements         
      View.OnClickListener{
    
      public BottomDialogDemo(Context context) {
          super(context);
      }
    
      @Override
      protected void onCreate() {
          setContentView(R.layout.dialog_bottom_demo);
          findViewById(R.id.dialog_ok).setOnClickListener(this);
      }
    
    
      @Override
      public void onClick(View v) {
          dismiss();
      }
    }
    

    调用的时候只需要
    BottomDialogDemo dialog = new BottomDialogDemo(context);
    dialog.show();

    相关文章

      网友评论

          本文标题:Android Dialog从底部弹出和收回

          本文链接:https://www.haomeiwen.com/subject/vnpbtxtx.html