android 无侵入控件Android进阶之路Android开发

ConciseDialog 链式调用,动态,快速改变Dialog

2018-03-14  本文已影响51人  帷幕丶归心

android开发的朋友们,大家一家会遇到这样的需求,需要在XX页面,弹出层,然后在弹出层中进行各种操作。
曾经的方法,一个弹出层,对应一个功能。
现在想想,写的想死。
于是乎,ConciseDialog便被设计出来了。
使用方法如下:

first

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
dependencies {
        compile 'com.github.deilsky:ConciseDialog:v1.1'
}

second
ConciseDialog.newInstance(R.layout.nav_dialog, new ConciseDialog.ReadyListener() {
                @Override
                public void onComplete(View view) {
                    initDialogView(view);
                }

                @Override
                public void onError(String e) {

                }
            }).matchWidth(true)
              .gravity(ConciseDialog.DialogGravity.MIDDLE)
              .absolute(true)
              .height(80)//高度 百分比
              .show(MainActivity.this.getFragmentManager(), "test1");
private void initDialogView(final View v) {
  title = v.findViewById(R.id.tv_d_title);
  title.setText("测试标题");
  yes = v.findViewById(R.id.nav_yes);
  yes.setText("是");
  yes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "是", Toast.LENGTH_SHORT).show();
        }
    });
    no = v.findViewById(R.id.nav_no);
    no.setText("否");
    no.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "否", Toast.LENGTH_SHORT).show();
        }
    });
}

  third 讲解
  1.ConciseDialog 继承于android.app.DialogFragment; 所以可以像正常的Dialog一样使用
  2.ConciseDialog.newInstance(R.layout.nav_dialog, new ConciseDialog.ReadyListener() {
        @Override
        public void onComplete(View view) {
          initDialogView(view);//dialog成功弹出,加载layout成功时,回调
        }
        @Override
        public void onError(String e) {}
    }) //根据使用需要,可以引入各种layout文件
  3.gravity //显示的位置:上,中,下
  4.absolute //是否使用绝对宽高
  5.matchWidth// 宽度是否满屏
  6.height //绝对模式下,高度为xxxdp;非绝对模式下,高度为屏幕的xx%
  7.width //仅在matchWidth为false时,生效;绝对模式下,宽度为xxxdp;非绝对模式下,宽度为屏幕的xx%
  8.动态切换layout/数据时,需要为讲解2中的代码,进行实例。通过onComplete(View view)进行重置数据

传送门

上一篇 下一篇

猜你喜欢

热点阅读