Skip to content

Android轻量级浮层弹窗。Dialog,Toast,Popup

Notifications You must be signed in to change notification settings

ZLYang110/UpperDialog

Repository files navigation

UpperDialog

Android轻量级弹窗。

自定义Dialog弹窗,自定义大小和位置,进出场方式。链式调用,自由扩展。

GitHub主页

简书

Demo下载

简介

  • anylayer
  • 同时兼容support和androidx
  • 实现几种常用效果
  • LoadingDialog 加载
  • TipDialog 弹窗提示
  • ListDialog 底部列表弹出
  • Upper 自定义加载方式
    • 占用区域不会超过当前Activity避免导航栏遮挡
    • 支持自定义大小和显示位置
    • 支持自定义数据绑定
    • 支持自定义进出场动画
    • 支持自定义背景颜色/图片/高斯模糊
    • 支持在Activity的onCreate生命周期弹出
    • 支持从ApplicationContext中弹出
    • 支持拖拽关闭
    • 支持不拦截外部事件
  • Toast效果
    • 支持自定义图标和文字
    • 支持自定义显示时长
    • 支持自定义位置
    • 支持自定义背景资源和颜色
    • 支持自定义透明度
    • 支持自定义进出场动画
  • Popup效果
    • 拥有Dialog效果特性
    • 支持跟随目标View移动

说明

运行截图

图片名称 图片名称 图片名称 下载 图片名称 图片名称 图片名称

使用说明

集成

  • 添加jitpack库

// build.gradle(Project:)
allprojects {
    repositories {
        ...
            maven { url 'https://www.jitpack.io' }
    }
}
  • 添加依赖

// build.gradle(Module:)
dependencies {

   implementation 'com.github.ZLYang110:UpperDialog:1.3'
}

LoadingDialog

  //初始化
  dialog = DialogUtils.createLoadingDialog(this, "请稍后...");

  //显示
  dialog.show();

  //关闭
  dialog.dismiss();

TipDialog

  TipDialog.with(getActivity())
    // .yesTextColor(R.color.colorAccent)
             //.setAdaption(false)
             //.setAdaptionSize(false,300) //设置弹窗限定宽度,只有为false,300才能生效 。默认是true
           .message("确定不给个star么?")
           .onYes(new SimpleCallback<Void>() {
           @Override
           public void onResult(Void data) {

               }
           })
           .show();

ListDialog

/**
 * 正常弹出
 */
  List<String> lisStr=new ArrayList<>();
  lisStr.add("选项1");
  lisStr.add("选项2");
  lisStr.add("选项3");
  lisStr.add("选项4");

  ListDialog.with(SettingActivity.this)
            .cancelable(true)
              // .yesTextColor(R.color.colorAccent)
             .noYseBtn() //不显示确定按钮 三个相互冲突,请设置一个
           //.noNoBtn()  //不显示取消按钮
           //.noBtn() // 不显示按钮
//          .title("列表动画")
            .datas(lisStr)
            .currSelectPos(1)
            .listener(new ListDialog.OnItemSelectedListener() {
            @Override
            public void onSelect(String data, int pos) {
            Log.d("selectStr",lisStr.get(pos));
               }
             })
           .show();

Upper

/**
 * 正常弹出
 */
  Upper.dialog(DialogActivity.this)
       .contentView(R.layout.dialog_normal)
       .backgroundDimDefault()
       .onClickToDismiss(R.id.fl_dialog_yes, R.id.fl_dialog_no)
       .show();

/**
 * 显示上方
 */
  Upper.dialog(DialogActivity.this)
       .contentView(R.layout.dialog_match_width)
       .avoidStatusBar(true)
       .backgroundDimDefault()
       .gravity(Gravity.TOP)
       .dragDismiss(DragLayout.DragStyle.Top)
       .onClickToDismiss(R.id.fl_dialog_no)
       .show();
/**
 * 显示下方
 */
   Upper.dialog(DialogActivity.this)
        .contentView(R.layout.dialog_list)
        .backgroundDimDefault()
        .gravity(Gravity.BOTTOM)
        .dragDismiss(DragLayout.DragStyle.Bottom)
        .onClickToDismiss(R.id.fl_dialog_no)
        .show();

Toast

/**
 * 正常弹出
 */
   ToastUtils.show(ToastActivity.this,"轻量级浮层弹窗");



 /**
  * 自定义效果
  */
  Upper.toast(context)
                 .duration(3000)
                 .message(msg)
                 .backgroundColorRes(R.color.default_title_background_color)
                 .gravity(gravity)
                 .animator(new Layer.AnimatorCreator() {
                     @Override
                     public Animator createInAnimator(View target) {
                         return AnimatorHelper.createZoomAlphaInAnim(target);
                     }

                     @Override
                     public Animator createOutAnimator(View target) {
                         return AnimatorHelper.createZoomAlphaOutAnim(target);
                     }
                 })
                 .show();

说明

安装APK 下面配置很关键

 <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

 ......

  <provider
             android:name="androidx.core.content.FileProvider"
             android:authorities="${applicationId}.fileprovider"
             android:exported="false"
             android:grantUriPermissions="true">
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
                 android:resource="@xml/file_path" />
         </provider>

如果报错如下

java.io.IOException: Permission denied

查看是否有网络权限然后在AndroidManifest.xml中application添加

 android:requestLegacyExternalStorage="true"

更新日志

1.4.1

  • 优化代码
  • ListDialog 按钮颜色可自定义
  • TipDialog 按钮颜色可自定义

1.4

  • 优化代码
  • ListDialog 按钮显示可自定义

1.3

  • 弹窗是否自适应
    • true 根据屏幕大小自适应
    • false 固定弹窗大小 (可以给宽高值)

1.2

  • 添加popup弹窗

1.1

  • 添加Toast弹窗

1.0

  • dialog轻量级封装库

About

Android轻量级浮层弹窗。Dialog,Toast,Popup

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages