浏览代码

0.0.47 update

kongzue 2 年之前
父节点
当前提交
aed5a5c8ba

+ 5 - 2
DialogX/src/main/java/com/kongzue/dialogx/impl/DialogFragmentImpl.java

@@ -81,13 +81,16 @@ public class DialogFragmentImpl extends DialogFragment {
                 for (BaseDialog dialog : BaseDialog.getRunningDialogList()) {
                     if (dialog.getOwnActivity() == activity && dialog != baseDialog) {
                         if (!(dialog instanceof NoTouchInterface)) {
-                            Log.e(">>>", "onTouch: "+dialog );
                             dialog.getDialogView().dispatchTouchEvent(event);
                             return true;
                         }
                     }
                 }
-                return activity.dispatchTouchEvent(event);
+                if (baseDialog instanceof NoTouchInterface) {
+                    return activity.dispatchTouchEvent(event);
+                }else{
+                    return true;
+                }
             }
         });
         dialogWindow.setAttributes(lp);

+ 1 - 0
DialogX/src/main/java/com/kongzue/dialogx/util/WindowUtil.java

@@ -80,6 +80,7 @@ public class WindowUtil {
                 FLAG_TRANSLUCENT_NAVIGATION |
                 FLAG_LAYOUT_IN_SCREEN
         ;
+        layoutParams.softInputMode = SOFT_INPUT_ADJUST_RESIZE;
         if (!touchEnable) {
             dialogView.setOnTouchListener(new View.OnTouchListener() {
                 @Override

+ 135 - 78
DialogX/src/main/java/com/kongzue/dialogx/util/views/DialogXBaseRelativeLayout.java

@@ -12,6 +12,7 @@ import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
@@ -22,6 +23,7 @@ import android.view.inputmethod.InputMethodManager;
 import android.widget.RelativeLayout;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
 import androidx.core.view.ViewCompat;
 import androidx.core.view.WindowInsetsAnimationCompat;
 import androidx.core.view.WindowInsetsCompat;
@@ -29,10 +31,15 @@ import androidx.core.view.WindowInsetsCompat;
 import com.kongzue.dialogx.DialogX;
 import com.kongzue.dialogx.R;
 import com.kongzue.dialogx.interfaces.BaseDialog;
+import com.kongzue.dialogx.interfaces.DynamicWindowInsetsAnimationListener;
 import com.kongzue.dialogx.interfaces.OnSafeInsetsChangeListener;
 
 import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * @author: Kongzue
@@ -42,33 +49,33 @@ import java.util.List;
  * @createTime: 2020/9/22 13:53
  */
 public class DialogXBaseRelativeLayout extends RelativeLayout {
-    
+
     private OnSafeInsetsChangeListener onSafeInsetsChangeListener;
     private BaseDialog parentDialog;
     private boolean autoUnsafePlacePadding = true;
     private boolean focusable = true;
     private boolean interceptBack = true;
-    
+
     private OnLifecycleCallBack onLifecycleCallBack;
     private PrivateBackPressedListener onBackPressedListener;
-    
+
     public DialogXBaseRelativeLayout(Context context) {
         super(context);
         init(null);
     }
-    
+
     public DialogXBaseRelativeLayout(Context context, AttributeSet attrs) {
         super(context, attrs);
         init(attrs);
     }
-    
+
     public DialogXBaseRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
         init(attrs);
     }
-    
+
     private boolean isInited = false;
-    
+
     private void init(AttributeSet attrs) {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
             setForceDarkAllowed(false);
@@ -93,26 +100,30 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
             }
         }
     }
-    
+
     @Override
     protected boolean fitSystemWindows(Rect insets) {
-        if (DialogX.useActivityLayoutTranslationNavigationBar || parentDialog.getDialogImplMode() != DialogX.IMPL_MODE.VIEW) {
+        if (!useWindowInsetsAnimation && (DialogX.useActivityLayoutTranslationNavigationBar || parentDialog.getDialogImplMode() != DialogX.IMPL_MODE.VIEW)) {
             paddingView(insets.left, insets.top, insets.right, insets.bottom);
         }
         return super.fitSystemWindows(insets);
     }
-    
+
     @Override
     public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            if (DialogX.useActivityLayoutTranslationNavigationBar || parentDialog.getDialogImplMode() != DialogX.IMPL_MODE.VIEW) {
+            if (!useWindowInsetsAnimation && (DialogX.useActivityLayoutTranslationNavigationBar || parentDialog.getDialogImplMode() != DialogX.IMPL_MODE.VIEW)) {
                 paddingView(insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom());
             }
         }
         return super.dispatchApplyWindowInsets(insets);
     }
-    
+
     public void paddingView(WindowInsets insets) {
+        if (!isAttachedToWindow()) {
+            getDynamicWindowInsetsAnimationListener(parentKey).remove(dynamicWindowInsetsAnimationListener);
+            return;
+        }
         if (insets == null) {
             if (BaseDialog.publicWindowInsets() != null) {
                 insets = BaseDialog.publicWindowInsets();
@@ -124,7 +135,7 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
             paddingView(insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom());
         }
     }
-    
+
     @Override
     public boolean dispatchKeyEvent(KeyEvent event) {
         if (isAttachedToWindow() && event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode() == KeyEvent.KEYCODE_BACK && interceptBack) {
@@ -134,16 +145,16 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
         }
         return super.dispatchKeyEvent(event);
     }
-    
+
     @Override
     public boolean onTouchEvent(MotionEvent event) {
         InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
         imm.hideSoftInputFromWindow(getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
         return super.onTouchEvent(event);
     }
-    
+
     private ViewTreeObserver.OnGlobalLayoutListener decorViewLayoutListener;
-    
+
     @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
@@ -153,38 +164,80 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
                 ViewCompat.setFitsSystemWindows(this, ViewCompat.getFitsSystemWindows((View) parent));
             }
             ViewCompat.requestApplyInsets(this);
-            
+
             if (BaseDialog.getTopActivity() == null) return;
-    
+
             View decorView = (View) getParent();
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-                ViewCompat.setWindowInsetsAnimationCallback(decorView, new WindowInsetsAnimationCompat.Callback(WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_STOP) {
-    
-                    @NonNull
-                    @Override
-                    public WindowInsetsCompat onProgress(@NonNull WindowInsetsCompat insets, @NonNull List<WindowInsetsAnimationCompat> runningAnimations) {
-                        paddingView(insets.toWindowInsets());
-                        return insets;
-                    }
-                });
-                paddingWindowInsetsByDefault();
-            }else{
-                decorView.getViewTreeObserver().addOnGlobalLayoutListener(decorViewLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
-                    @Override
-                    public void onGlobalLayout() {
-                        paddingWindowInsetsByDefault();
-                    }
-                });
-                decorViewLayoutListener.onGlobalLayout();
+            if (decorView != null) {
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+                    parentKey = Integer.toHexString(decorView.hashCode());
+                    getDynamicWindowInsetsAnimationListener(parentKey).add(dynamicWindowInsetsAnimationListener = new DynamicWindowInsetsAnimationListener() {
+                        @Override
+                        public void onChange(WindowInsets windowInsets) {
+                            paddingView(windowInsets);
+                        }
+                    });
+                    paddingWindowInsetsByDefault();
+                    initDynamicSafeAreaListener();
+                } else {
+                    decorView.getViewTreeObserver().addOnGlobalLayoutListener(decorViewLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
+                        @Override
+                        public void onGlobalLayout() {
+                            paddingWindowInsetsByDefault();
+                        }
+                    });
+                    decorViewLayoutListener.onGlobalLayout();
+                }
             }
-            
+
             if (onLifecycleCallBack != null) {
                 onLifecycleCallBack.onShow();
             }
             isLightMode = (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_NO;
         }
     }
-    
+
+    static Map<String, List<DynamicWindowInsetsAnimationListener>> dynamicWindowInsetsAnimationListenerListMap = new HashMap<>();
+    DynamicWindowInsetsAnimationListener dynamicWindowInsetsAnimationListener;
+    String parentKey;
+
+    public List<DynamicWindowInsetsAnimationListener> getDynamicWindowInsetsAnimationListener(String key) {
+        List<DynamicWindowInsetsAnimationListener> list = dynamicWindowInsetsAnimationListenerListMap.get(key);
+        if (list == null) {
+            list = new ArrayList<>();
+            dynamicWindowInsetsAnimationListenerListMap.put(key, list);
+        }
+        return list;
+    }
+
+    boolean useWindowInsetsAnimation = false;
+
+    @RequiresApi(api = Build.VERSION_CODES.KITKAT_WATCH)
+    private void initDynamicSafeAreaListener() {
+        View decorView = (View) getParent();
+        if (decorView != null) {
+            useWindowInsetsAnimation = true;
+            ViewCompat.setWindowInsetsAnimationCallback(decorView, new WindowInsetsAnimationCompat.Callback(WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_CONTINUE_ON_SUBTREE) {
+
+                @NonNull
+                @Override
+                public WindowInsetsCompat onProgress(@NonNull WindowInsetsCompat insets, @NonNull List<WindowInsetsAnimationCompat> runningAnimations) {
+                    View decorView = (View) getParent();
+                    if (decorView != null) {
+                        String key = Integer.toHexString(decorView.hashCode());
+                        List<DynamicWindowInsetsAnimationListener> dynamicWindowInsetsAnimationListenerList = getDynamicWindowInsetsAnimationListener(key);
+                        if (dynamicWindowInsetsAnimationListenerList != null) {
+                            for (DynamicWindowInsetsAnimationListener listener : dynamicWindowInsetsAnimationListenerList) {
+                                listener.onChange(insets.toWindowInsets());
+                            }
+                        }
+                    }
+                    return insets;
+                }
+            });
+        }
+    }
+
     private void paddingWindowInsetsByDefault() {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             paddingView(getRootWindowInsets());
@@ -198,7 +251,7 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
             paddingView(rect.left, rect.top, displayMetrics.widthPixels - rect.right, displayMetrics.heightPixels - rect.bottom);
         }
     }
-    
+
     @Override
     protected void onDetachedFromWindow() {
         View decorView = (View) getParent();
@@ -208,54 +261,58 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
         if (onLifecycleCallBack != null) {
             onLifecycleCallBack.onDismiss();
         }
+        getDynamicWindowInsetsAnimationListener(parentKey).remove(dynamicWindowInsetsAnimationListener);
         onSafeInsetsChangeListener = null;
         super.onDetachedFromWindow();
     }
-    
+
     @Override
     public boolean performClick() {
         if (!isEnabled()) return false;
         return super.performClick();
     }
-    
+
     @Override
     public boolean callOnClick() {
         if (!isEnabled()) return false;
         return super.callOnClick();
     }
-    
+
     public DialogXBaseRelativeLayout setOnLifecycleCallBack(OnLifecycleCallBack onLifecycleCallBack) {
         this.onLifecycleCallBack = onLifecycleCallBack;
         return this;
     }
-    
+
     public float getSafeHeight() {
         return getMeasuredHeight() - unsafePlace.bottom - unsafePlace.top;
     }
-    
+
     private WeakReference<View> requestFocusView;
-    
+
     public void bindFocusView(View view) {
         requestFocusView = new WeakReference<>(view);
     }
-    
+
     @Override
     public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
+            initDynamicSafeAreaListener();
+        }
         if (direction == View.FOCUS_DOWN && requestFocusView != null && requestFocusView.get() != null) {
             return requestFocusView.get().requestFocus();
         }
         return super.requestFocus(direction, previouslyFocusedRect);
     }
-    
+
     public abstract static class OnLifecycleCallBack {
         public void onShow() {
         }
-        
+
         public abstract void onDismiss();
     }
-    
+
     protected Rect unsafePlace = new Rect();
-    
+
     private void paddingView(int left, int top, int right, int bottom) {
         unsafePlace = new Rect(left, top, right, bottom);
         if (onSafeInsetsChangeListener != null) onSafeInsetsChangeListener.onChange(unsafePlace);
@@ -272,29 +329,29 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
         if (isAutoUnsafePlacePadding())
             setPadding(extraPadding[0] + left, extraPadding[1] + top, extraPadding[2] + right, extraPadding[3] + bottom);
     }
-    
+
     public DialogXBaseRelativeLayout setOnBackPressedListener(PrivateBackPressedListener onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         return this;
     }
-    
+
     public OnSafeInsetsChangeListener getOnSafeInsetsChangeListener() {
         return onSafeInsetsChangeListener;
     }
-    
+
     public DialogXBaseRelativeLayout setOnSafeInsetsChangeListener(OnSafeInsetsChangeListener onSafeInsetsChangeListener) {
         this.onSafeInsetsChangeListener = onSafeInsetsChangeListener;
         return this;
     }
-    
+
     public boolean isAutoUnsafePlacePadding() {
         return autoUnsafePlacePadding;
     }
-    
+
     public Rect getUnsafePlace() {
         return unsafePlace;
     }
-    
+
     public DialogXBaseRelativeLayout setAutoUnsafePlacePadding(boolean autoUnsafePlacePadding) {
         this.autoUnsafePlacePadding = autoUnsafePlacePadding;
         if (!autoUnsafePlacePadding) {
@@ -302,11 +359,11 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
         }
         return this;
     }
-    
+
     public BaseDialog getParentDialog() {
         return parentDialog;
     }
-    
+
     public DialogXBaseRelativeLayout setParentDialog(BaseDialog parentDialog) {
         this.parentDialog = parentDialog;
         if (parentDialog.getDialogImplMode() != DialogX.IMPL_MODE.VIEW) {
@@ -317,9 +374,9 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
         }
         return this;
     }
-    
+
     boolean isLightMode = true;
-    
+
     @Override
     protected void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
@@ -328,39 +385,39 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
             getParentDialog().restartDialog();
         }
     }
-    
+
     float nowBkgAlphaValue;
-    
+
     public DialogXBaseRelativeLayout setBkgAlpha(float alpha) {
         nowBkgAlphaValue = alpha;
         if (getBackground() != null) getBackground().mutate().setAlpha((int) (alpha * 255));
         return this;
     }
-    
+
     @Override
     public void setBackground(Drawable background) {
         background.setAlpha((int) (nowBkgAlphaValue * 255));
         super.setBackground(background);
     }
-    
+
     @Override
     public void setBackgroundColor(int color) {
         setBackground(new ColorDrawable(color));
     }
-    
+
     public boolean isBaseFocusable() {
         return focusable;
     }
-    
+
     public boolean isInterceptBack() {
         return interceptBack;
     }
-    
+
     public DialogXBaseRelativeLayout setInterceptBack(boolean interceptBack) {
         this.interceptBack = interceptBack;
         return this;
     }
-    
+
     @Override
     public void setVisibility(int visibility) {
         if (visibility == GONE && getAlpha() == 0f) {
@@ -368,40 +425,40 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
         }
         super.setVisibility(visibility);
     }
-    
+
     public interface PrivateBackPressedListener {
         boolean onBackPressed();
     }
-    
+
     int[] extraPadding = new int[4];
-    
+
     public void setRootPadding(int left, int top, int right, int bottom) {
         extraPadding[0] = left;
         extraPadding[1] = top;
         extraPadding[2] = right;
         extraPadding[3] = bottom;
     }
-    
+
     public int getRootPaddingLeft() {
         return extraPadding[0];
     }
-    
+
     public int getRootPaddingTop() {
         return extraPadding[1];
     }
-    
+
     public int getRootPaddingRight() {
         return extraPadding[2];
     }
-    
+
     public int getRootPaddingBottom() {
         return extraPadding[3];
     }
-    
+
     public int getUseAreaWidth() {
         return getWidth() - getRootPaddingRight();
     }
-    
+
     public int getUseAreaHeight() {
         return getHeight() - getRootPaddingBottom();
     }

+ 1 - 1
app/src/main/java/com/kongzue/dialogxdemo/App.java

@@ -23,7 +23,7 @@ public class App extends BaseApp<App> {
         DialogX.globalStyle = new MaterialStyle();
         DialogX.globalTheme = DialogX.THEME.AUTO;
         DialogX.onlyOnePopTip = false;
-
+    
         //以下代码用于测试后台 Service 启动对话框
 //        DialogX.implIMPLMode = DialogX.IMPL_MODE.FLOATING_ACTIVITY;
 //        Intent serviceStartIntent = new Intent(this, TestBackgroundService.class);

+ 108 - 94
app/src/main/java/com/kongzue/dialogxdemo/activity/MainActivity.java

@@ -19,6 +19,7 @@ import android.view.Gravity;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowInsets;
 import android.view.WindowManager;
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
@@ -101,8 +102,8 @@ import java.util.Random;
 @DarkNavigationBarTheme(true)
 @NavigationBarBackgroundColorRes(R.color.emptyNavBar)
 public class MainActivity extends BaseActivity {
-    
-    private ConstraintLayout boxTable;
+
+    private ConstraintLayout boxTitle;
     private TextView txtTitle;
     private ImageView btnShare;
     private ImageView splitBody;
@@ -161,10 +162,10 @@ public class MainActivity extends BaseActivity {
     private MaterialButton btnShowBreak;
     private MaterialButton btnListDialog;
     private TextView txtVer;
-    
+
     @Override
     public void initViews() {
-        boxTable = findViewById(R.id.box_table);
+        boxTitle = findViewById(R.id.box_title);
         txtTitle = findViewById(R.id.txt_title);
         btnShare = findViewById(R.id.btn_share);
         splitBody = findViewById(R.id.split_body);
@@ -224,11 +225,24 @@ public class MainActivity extends BaseActivity {
         btnListDialog = findViewById(R.id.btn_listDialog);
         txtVer = findViewById(R.id.txt_ver);
     }
-    
+
     @Override
     public void initDatas(JumpParameter parameter) {
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
-        
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
+            getWindow().getDecorView().setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
+                @Override
+                public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
+                    boxTitle.setPadding(0, insets.getSystemWindowInsetTop(), 0, 0);
+                    boxBody.setPadding(dip2px(15), dip2px(15), dip2px(15), insets.getSystemWindowInsetBottom()+dip2px(250));
+                    return insets;
+                }
+            });
+        } else {
+            getRootView().setFitsSystemWindows(true);
+        }
+
         refreshUIMode();
         boolean showBreak = parameter.getBoolean("showBreak");
         if (showBreak) {
@@ -258,7 +272,7 @@ public class MainActivity extends BaseActivity {
                     })
                     .setCancelable(false);
         }
-        
+
         switch (DialogX.implIMPLMode) {
             case VIEW:
                 rdoModeView.setChecked(true);
@@ -273,18 +287,18 @@ public class MainActivity extends BaseActivity {
                 rdoModeFloatingActivity.setChecked(true);
                 break;
         }
-        
+
         txtVer.setText("当前版本:" + BuildConfig.VERSION_NAME);
     }
-    
+
     //用于模拟进度提示
     private CycleRunner cycleRunner;
     private float progress = 0;
     private int waitId;
-    
+
     private TextView btnReplyCommit;
     private EditText editReplyCommit;
-    
+
     private TextView btnCancel;
     private TextView btnSubmit;
     private RelativeLayout boxUserName;
@@ -292,17 +306,17 @@ public class MainActivity extends BaseActivity {
     private RelativeLayout boxPassword;
     private EditText editPassword;
     private TextView btnLicense;
-    
+
     private TextView btnClose;
     private WebView webView;
-    
+
     private String[] singleSelectMenuText = new String[]{"拒绝", "询问", "始终允许", "仅在使用中允许"};
     private int selectMenuIndex;
-    
+
     private String[] multiSelectMenuText = new String[]{"上海", "北京", "广州", "深圳"};
     private int[] selectMenuIndexArray;
     private String multiSelectMenuResultCache;
-    
+
     @Override
     public void setEvents() {
         grpMode.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
@@ -325,7 +339,7 @@ public class MainActivity extends BaseActivity {
                 }
             }
         });
-        
+
         grpTheme.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
             @Override
             public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
@@ -342,7 +356,7 @@ public class MainActivity extends BaseActivity {
                 }
             }
         });
-        
+
         grpStyle.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
             @Override
             public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
@@ -369,14 +383,14 @@ public class MainActivity extends BaseActivity {
                 }
             }
         });
-        
+
         btnShare.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 openUrl("https://github.com/kongzue/DialogX");
             }
         });
-        
+
         btnContextMenu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -410,7 +424,7 @@ public class MainActivity extends BaseActivity {
                         });
             }
         });
-        
+
         btnSelectMenu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -424,7 +438,7 @@ public class MainActivity extends BaseActivity {
                         });
             }
         });
-        
+
         btnFullScreenDialogFragment.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -438,12 +452,12 @@ public class MainActivity extends BaseActivity {
                 FullScreenDialog.show(new OnBindView<FullScreenDialog>(customFragment) {
                     @Override
                     public void onBind(FullScreenDialog dialog, View v) {
-                    
+
                     }
                 });
             }
         });
-        
+
         btnMessageDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -458,7 +472,7 @@ public class MainActivity extends BaseActivity {
                         });
             }
         });
-        
+
         btnSelectDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -470,7 +484,7 @@ public class MainActivity extends BaseActivity {
                 messageDialog.show();
             }
         });
-        
+
         btnInputDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -486,7 +500,7 @@ public class MainActivity extends BaseActivity {
                         .show();
             }
         });
-        
+
         btnWaitDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -505,11 +519,11 @@ public class MainActivity extends BaseActivity {
                 }, 1500);
             }
         });
-        
+
         btnWaitAndTipDialog.setOnClickListener(new View.OnClickListener() {
-            
+
             boolean closeFlag = false;
-            
+
             @Override
             public void onClick(View v) {
                 closeFlag = false;
@@ -535,28 +549,28 @@ public class MainActivity extends BaseActivity {
                 }, 1500 + new Random().nextInt(1000));
             }
         });
-        
+
         btnTipSuccess.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 TipDialog.show("Success!", WaitDialog.TYPE.SUCCESS);
             }
         });
-        
+
         btnTipWarning.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 TipDialog.show("Warning!", WaitDialog.TYPE.WARNING);
             }
         });
-        
+
         btnTipError.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 TipDialog.show("Error!", WaitDialog.TYPE.ERROR);
             }
         });
-        
+
         btnTipProgress.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -602,7 +616,7 @@ public class MainActivity extends BaseActivity {
                 }, 3000);
             }
         });
-        
+
         btnBottomDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -629,17 +643,17 @@ public class MainActivity extends BaseActivity {
                                 log("#onSlideClose");
                                 return super.onSlideClose(dialog);
                             }
-    
+
                             @Override
                             public boolean onSlideTouchEvent(BottomDialog dialog, View v, MotionEvent event) {
-                                log("#onSlideTouchEvent: action="+ event.getAction() + " y="+event.getY());
+                                log("#onSlideTouchEvent: action=" + event.getAction() + " y=" + event.getY());
                                 return super.onSlideTouchEvent(dialog, v, event);
                             }
                         })
                         .show();
             }
         });
-        
+
         btnBottomMenu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -714,7 +728,7 @@ public class MainActivity extends BaseActivity {
                 }
             }
         });
-        
+
         btnBottomReply.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -740,7 +754,7 @@ public class MainActivity extends BaseActivity {
                 }).setAllowInterceptTouch(false);
             }
         });
-        
+
         btnCustomMessageDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -748,12 +762,12 @@ public class MainActivity extends BaseActivity {
                         .setCustomView(new OnBindView<MessageDialog>(R.layout.layout_custom_view) {
                             @Override
                             public void onBind(MessageDialog dialog, View v) {
-                            
+
                             }
                         });
             }
         });
-        
+
         btnCustomInputDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -761,12 +775,12 @@ public class MainActivity extends BaseActivity {
                         .setCustomView(new OnBindView<MessageDialog>(R.layout.layout_custom_view) {
                             @Override
                             public void onBind(MessageDialog dialog, View v) {
-                            
+
                             }
                         });
             }
         });
-        
+
         btnCustomBottomMenu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -782,19 +796,19 @@ public class MainActivity extends BaseActivity {
                         .setCustomView(new OnBindView<BottomDialog>(R.layout.layout_custom_view) {
                             @Override
                             public void onBind(BottomDialog dialog, View v) {
-                            
+
                             }
                         });
             }
         });
-        
+
         btnShowGuide.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 GuideDialog.show(R.mipmap.img_guide_tip);
             }
         });
-        
+
         btnShowGuideBaseView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -802,7 +816,7 @@ public class MainActivity extends BaseActivity {
                         .setBaseViewMarginTop(-dip2px(30));
             }
         });
-        
+
         btnShowGuideBaseViewRectangle.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -828,14 +842,14 @@ public class MainActivity extends BaseActivity {
                         });
             }
         });
-        
+
         btnShowBreak.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 jump(MainActivity.class, new JumpParameter().put("showBreak", true).put("fromActivity", getInstanceKey()));
             }
         });
-        
+
         btnListDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -868,15 +882,15 @@ public class MainActivity extends BaseActivity {
                 );
             }
         });
-        
+
         btnFullScreenDialogLogin.setOnClickListener(new View.OnClickListener() {
-            
+
             /**
              * 采用异步加载布局防止卡顿测试
              */
-            
+
             OnBindView<FullScreenDialog> onBindView;
-            
+
             @Override
             public void onClick(View v) {
                 onBindView = new OnBindView<FullScreenDialog>(R.layout.layout_full_login, true) {
@@ -889,14 +903,14 @@ public class MainActivity extends BaseActivity {
                         boxPassword = v.findViewById(R.id.box_password);
                         editPassword = v.findViewById(R.id.edit_password);
                         btnLicense = v.findViewById(R.id.btn_license);
-                        
+
                         initFullScreenLoginDemo(dialog);
                     }
                 };
                 FullScreenDialog.show(onBindView);
             }
         });
-        
+
         btnFullScreenDialogWebPage.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -905,14 +919,14 @@ public class MainActivity extends BaseActivity {
                             public void onBind(final FullScreenDialog dialog, View v) {
                                 btnClose = v.findViewById(R.id.btn_close);
                                 webView = v.findViewById(R.id.webView);
-                                
+
                                 btnClose.setOnClickListener(new View.OnClickListener() {
                                     @Override
                                     public void onClick(View v) {
                                         dialog.dismiss();
                                     }
                                 });
-                                
+
                                 WebSettings webSettings = webView.getSettings();
                                 webSettings.setJavaScriptEnabled(true);
                                 webSettings.setLoadWithOverviewMode(true);
@@ -922,7 +936,7 @@ public class MainActivity extends BaseActivity {
                                 webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
                                 webSettings.setLoadsImagesAutomatically(true);
                                 webSettings.setDefaultTextEncodingName("utf-8");
-                                
+
                                 webView.setWebViewClient(new WebViewClient() {
                                     @Override
                                     public boolean shouldOverrideUrlLoading(WebView view, String url) {
@@ -934,20 +948,20 @@ public class MainActivity extends BaseActivity {
                                         }
                                         return true;
                                     }
-                                    
+
                                     @Override
                                     public void onPageFinished(WebView view, String url) {
                                         super.onPageFinished(view, url);
                                     }
                                 });
-                                
+
                                 webView.loadUrl("https://github.com/kongzue/DialogX");
                             }
                         })
                         .show();
             }
         });
-        
+
         btnCustomDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1012,14 +1026,14 @@ public class MainActivity extends BaseActivity {
                 ;
             }
         });
-        
+
         btnCustomDialogAlign.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 CustomDialog.show(new OnBindView<CustomDialog>(R.layout.layout_custom_dialog_align) {
-                            
+
                             private TextView btnSelectPositive;
-                            
+
                             @Override
                             public void onBind(final CustomDialog dialog, View v) {
                                 btnSelectPositive = v.findViewById(R.id.btn_selectPositive);
@@ -1041,14 +1055,14 @@ public class MainActivity extends BaseActivity {
                         .show();
             }
         });
-        
+
         btnPoptip.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 PopTip.show("这是一个提示");
             }
         });
-        
+
         btnPoptipBigMessage.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1066,14 +1080,14 @@ public class MainActivity extends BaseActivity {
                 }
             }
         });
-        
+
         btnPoptipSuccess.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 PopTip.show("操作已完成").iconSuccess();
             }
         });
-        
+
         btnPoptipWarning.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1085,14 +1099,14 @@ public class MainActivity extends BaseActivity {
                 }).iconWarning();
             }
         });
-        
+
         btnPoptipError.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 PopTip.show("无法连接网络").iconError();
             }
         });
-        
+
         btnBottomSelectMenu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1115,7 +1129,7 @@ public class MainActivity extends BaseActivity {
                         .setSelection(selectMenuIndex);
             }
         });
-        
+
         btnBottomMultiSelectMenu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1142,7 +1156,7 @@ public class MainActivity extends BaseActivity {
                         .setSelection(selectMenuIndexArray);
             }
         });
-        
+
         btnBottomCustomRecycleView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1181,7 +1195,7 @@ public class MainActivity extends BaseActivity {
                         .show();
             }
         });
-        
+
         btnPopnotification.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1189,7 +1203,7 @@ public class MainActivity extends BaseActivity {
                 PopNotification.show("这是一条消息 " + notificationIndex).showLong();
             }
         });
-        
+
         btnPopnotificationBigMessage.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1207,7 +1221,7 @@ public class MainActivity extends BaseActivity {
                         .showLong();
             }
         });
-        
+
         btnPopnotificationOverlay.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1222,17 +1236,17 @@ public class MainActivity extends BaseActivity {
                         return;
                     }
                 }
-                
+
                 Bitmap icon = BitmapFactory.decodeResource(getResources(), R.mipmap.img_demo_avatar);
                 notificationIndex++;
                 Toast.makeText(me, "会在1秒后显示悬浮窗!", Toast.LENGTH_LONG).show();
-                
+
                 //跳转到桌面
                 Intent intent = new Intent(Intent.ACTION_MAIN);
                 intent.addCategory(Intent.CATEGORY_HOME);
                 intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_NEW_TASK);
                 startActivity(intent);
-                
+
                 //等待一秒后显示
                 new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                     @Override
@@ -1256,9 +1270,9 @@ public class MainActivity extends BaseActivity {
             }
         });
     }
-    
+
     int notificationIndex;
-    
+
     private void initFullScreenLoginDemo(final FullScreenDialog fullScreenDialog) {
         btnCancel.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -1266,17 +1280,17 @@ public class MainActivity extends BaseActivity {
                 fullScreenDialog.dismiss();
             }
         });
-        
+
         btnCancel.setText("取消");
         btnSubmit.setText("下一步");
-        
+
         btnLicense.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 PopTip.show("点击用户服务条款");
             }
         });
-        
+
         btnSubmit.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1285,29 +1299,29 @@ public class MainActivity extends BaseActivity {
                     TipDialog.show("请输入账号", TipDialog.TYPE.WARNING);
                     return;
                 }
-                
+
                 boxUserName.animate().x(-getDisplayWidth()).setDuration(300);
                 boxPassword.setX(getDisplayWidth());
                 boxPassword.setVisibility(View.VISIBLE);
                 boxPassword.animate().x(0).setDuration(300);
-                
+
                 editPassword.setFocusable(true);
                 editPassword.requestFocus();
-                
+
                 btnCancel.setText("上一步");
                 btnCancel.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
                         boxUserName.animate().x(0).setDuration(300);
                         boxPassword.animate().x(getDisplayWidth()).setDuration(300);
-                        
+
                         editUserName.setFocusable(true);
                         editUserName.requestFocus();
-                        
+
                         initFullScreenLoginDemo(fullScreenDialog);
                     }
                 });
-                
+
                 btnSubmit.setText("登录");
                 btnSubmit.setOnClickListener(new View.OnClickListener() {
                     @Override
@@ -1334,13 +1348,13 @@ public class MainActivity extends BaseActivity {
             }
         });
     }
-    
+
     @Override
     public void onBackPressed() {
         log("#MainActivity.onBackPressed");
         super.onBackPressed();
     }
-    
+
     public void showIME(EditText editText) {
         if (editText == null) {
             return;
@@ -1350,14 +1364,14 @@ public class MainActivity extends BaseActivity {
         InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
         imm.showSoftInput(editText, InputMethodManager.RESULT_UNCHANGED_SHOWN);
     }
-    
+
     @Override
     public void onConfigurationChanged(@NonNull Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
         refreshUIMode();
-        
+
     }
-    
+
     /**
      * 刷新亮暗色模式界面变化
      */

+ 4 - 5
app/src/main/res/layout/activity_main.xml

@@ -5,13 +5,12 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/background"
-    android:fitsSystemWindows="true"
     tools:context=".activity.MainActivity">
 
     <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/box_table"
+        android:id="@+id/box_title"
         android:layout_width="match_parent"
-        android:layout_height="50dp"
+        android:layout_height="wrap_content"
         android:clickable="true"
         app:layout_constrainedWidth="true"
         app:layout_constraintLeft_toLeftOf="parent"
@@ -36,7 +35,7 @@
         <ImageView
             android:id="@+id/btn_share"
             android:layout_width="45dp"
-            android:layout_height="wrap_content"
+            android:layout_height="50dp"
             android:paddingLeft="10dp"
             android:paddingRight="10dp"
             android:src="@mipmap/img_github"
@@ -51,7 +50,7 @@
         android:layout_width="match_parent"
         android:layout_height="1px"
         android:background="#a6a8a9"
-        app:layout_constraintTop_toBottomOf="@id/box_table" />
+        app:layout_constraintTop_toBottomOf="@id/box_title" />
 
     <ScrollView
         android:layout_width="match_parent"

+ 2 - 2
gradle.properties

@@ -19,6 +19,6 @@ android.useAndroidX=true
 # Automatically convert third-party libraries to use AndroidX
 android.enableJetifier=true
 
-BUILD_VERSION=0.0.47.beta15
-BUILD_VERSION_INT=46
+BUILD_VERSION=0.0.47
+BUILD_VERSION_INT=47
 DIALOGX_STYLE_VERSION=5