瀏覽代碼

Continue to build modules BottomDialog & BottomMenu

kongzue 4 年之前
父節點
當前提交
ce89e5c78b

二進制
DialogX/libs/DialogXInterface.jar


+ 1 - 4
DialogX/src/main/java/com/kongzue/dialogx/dialogs/BottomDialog.java

@@ -2,13 +2,9 @@ package com.kongzue.dialogx.dialogs;
 
 import android.animation.Animator;
 import android.animation.ObjectAnimator;
-import android.content.Context;
-import android.util.Log;
-import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
-import android.view.WindowManager;
 import android.view.animation.AccelerateInterpolator;
 import android.view.animation.DecelerateInterpolator;
 import android.widget.ImageView;
@@ -26,6 +22,7 @@ import com.kongzue.dialogx.interfaces.DialogLifecycleCallback;
 import com.kongzue.dialogx.interfaces.DialogXStyle;
 import com.kongzue.dialogx.interfaces.OnBackPressedListener;
 import com.kongzue.dialogx.interfaces.OnBindView;
+import com.kongzue.dialogx.interfaces.OnMenuItemClickListener;
 import com.kongzue.dialogx.util.BottomDialogTouchEventInterceptor;
 import com.kongzue.dialogx.util.views.DialogXBaseRelativeLayout;
 import com.kongzue.dialogx.util.views.MaxRelativeLayout;

+ 46 - 6
DialogX/src/main/java/com/kongzue/dialogx/dialogs/BottomMenu.java

@@ -1,8 +1,8 @@
 package com.kongzue.dialogx.dialogs;
 
-import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.RelativeLayout;
 
@@ -13,6 +13,7 @@ import com.kongzue.dialogx.interfaces.DialogXStyle;
 import com.kongzue.dialogx.interfaces.OnBackPressedListener;
 import com.kongzue.dialogx.interfaces.OnBindView;
 import com.kongzue.dialogx.interfaces.OnIconChangeCallBack;
+import com.kongzue.dialogx.interfaces.OnMenuItemClickListener;
 import com.kongzue.dialogx.util.NormalMenuArrayAdapter;
 import com.kongzue.dialogx.util.views.BottomDialogListView;
 
@@ -33,6 +34,7 @@ public class BottomMenu extends BottomDialog {
     
     protected BottomMenu me = this;
     
+    protected OnMenuItemClickListener<BottomMenu> onMenuItemClickListener;
     /**
      * 此值用于,当禁用滑动时(style.overrideBottomDialogRes.touchSlide = false时)的最大显示高度。
      * 0:不限制,最大显示到屏幕可用高度。
@@ -45,6 +47,9 @@ public class BottomMenu extends BottomDialog {
     
     protected BottomMenu() {
         super();
+        if (style.overrideBottomDialogRes()!=null && style.overrideBottomDialogRes().overrideBottomDialogMaxHeight() != 0) {
+            bottomDialogMaxHeight = style.overrideBottomDialogRes().overrideBottomDialogMaxHeight();
+        }
         if (bottomDialogMaxHeight <= 1 && bottomDialogMaxHeight > 0f) {
             bottomDialogMaxHeight = (int) (getRootFrameLayout().getMeasuredHeight() * bottomDialogMaxHeight);
         }
@@ -52,7 +57,7 @@ public class BottomMenu extends BottomDialog {
     
     private OnIconChangeCallBack onIconChangeCallBack;
     private BottomDialogListView listView;
-    private BaseAdapter menuArrayAdapter;
+    private BaseAdapter menuListAdapter;
     private List<CharSequence> menuList;
     
     public static BottomMenu show(List<CharSequence> menuList) {
@@ -106,6 +111,19 @@ public class BottomMenu extends BottomDialog {
             listView.setDivider(getResources().getDrawable(dividerDrawableResId));
             listView.setDividerHeight(dividerHeight);
             
+            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+                @Override
+                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                    if (onMenuItemClickListener != null) {
+                        if (!onMenuItemClickListener.onClick(me, menuList.get(position), position)) {
+                            dismiss();
+                        }
+                    } else {
+                        dismiss();
+                    }
+                }
+            });
+            
             RelativeLayout.LayoutParams listViewLp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
             dialog.boxCustom.addView(listView, listViewLp);
             
@@ -117,13 +135,17 @@ public class BottomMenu extends BottomDialog {
     public void refreshUI() {
         super.refreshUI();
         if (listView != null) {
-            if (menuArrayAdapter == null) {
-                menuArrayAdapter = new NormalMenuArrayAdapter(me, getContext(), R.layout.item_dialogx_material_bottom_menu_normal_text, menuList);
+            if (menuListAdapter == null) {
+                menuListAdapter = new NormalMenuArrayAdapter(me, getContext(), R.layout.item_dialogx_material_bottom_menu_normal_text, menuList);
             }
             if (listView.getAdapter() == null) {
-                listView.setAdapter(menuArrayAdapter);
+                listView.setAdapter(menuListAdapter);
             } else {
-                menuArrayAdapter.notifyDataSetChanged();
+                if (listView.getAdapter() != menuListAdapter) {
+                    listView.setAdapter(menuListAdapter);
+                } else {
+                    menuListAdapter.notifyDataSetChanged();
+                }
             }
         }
     }
@@ -276,4 +298,22 @@ public class BottomMenu extends BottomDialog {
         this.bottomDialogMaxHeight = bottomDialogMaxHeight;
         return this;
     }
+    
+    public OnMenuItemClickListener<BottomMenu> getOnMenuItemClickListener() {
+        return onMenuItemClickListener;
+    }
+    
+    public BottomMenu setOnMenuItemClickListener(OnMenuItemClickListener<BottomMenu> onMenuItemClickListener) {
+        this.onMenuItemClickListener = onMenuItemClickListener;
+        return this;
+    }
+    
+    public BaseAdapter getMenuListAdapter() {
+        return menuListAdapter;
+    }
+    
+    public BottomMenu setMenuListAdapter(BaseAdapter menuListAdapter) {
+        this.menuListAdapter = menuListAdapter;
+        return this;
+    }
 }

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/MessageDialog.java

@@ -509,7 +509,7 @@ public class MessageDialog extends BaseDialog {
     
     public void dismiss() {
         if (dialogImpl == null) return;
-        dialogImpl.doDismiss(null);
+        dialogImpl.doDismiss(dialogImpl.bkg);
     }
     
     public DialogLifecycleCallback<MessageDialog> getDialogLifecycleCallback() {

+ 12 - 0
DialogX/src/main/java/com/kongzue/dialogx/interfaces/OnMenuItemClickListener.java

@@ -0,0 +1,12 @@
+package com.kongzue.dialogx.interfaces;
+
+/**
+ * @author: Kongzue
+ * @github: https://github.com/kongzue/
+ * @homepage: http://kongzue.com/
+ * @mail: myzcxhh@live.cn
+ * @createTime: 2020/10/10 6:26
+ */
+public interface OnMenuItemClickListener<D> {
+    boolean onClick(D dialog, CharSequence text, int index);
+}

+ 5 - 0
DialogX/src/main/java/com/kongzue/dialogx/style/MaterialStyle.java

@@ -147,6 +147,11 @@ public class MaterialStyle implements DialogXStyle {
                 return light?R.color.black90:R.color.white90;
             }
     
+            @Override
+            public float overrideBottomDialogMaxHeight() {
+                return 0.6f;
+            }
+    
         };
     }
 }

+ 1 - 0
DialogX/src/main/res/layout/layout_dialogx_bottom_material.xml

@@ -23,6 +23,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:paddingTop="10dp"
+                android:clickable="true"
                 android:orientation="vertical">
 
                 <ImageView

+ 2 - 1
DialogX/src/main/res/layout/layout_dialogx_bottom_material_dark.xml

@@ -22,6 +22,8 @@
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:paddingTop="10dp"
+                android:clickable="true"
                 android:orientation="vertical">
 
                 <ImageView
@@ -29,7 +31,6 @@
                     android:layout_width="30dp"
                     android:layout_height="4dp"
                     android:layout_gravity="center_horizontal"
-                    android:layout_marginTop="10dp"
                     android:layout_marginBottom="1dp"
                     android:src="@drawable/rect_dialogx_material_dialogtap_night" />
 

二進制
DialogXIOSStyle/libs/DialogXInterface.jar


+ 2 - 0
DialogXInterface/src/main/java/com/kongzue/dialogx/interfaces/DialogXStyle.java

@@ -81,5 +81,7 @@ public interface DialogXStyle {
         int overrideMenuDividerHeight(boolean light);
     
         int overrideMenuTextColor(boolean light);
+        
+        float overrideBottomDialogMaxHeight();
     }
 }

二進制
DialogXKongzueStyle/libs/DialogXInterface.jar


二進制
DialogXMIUIStyle/libs/DialogXInterface.jar


+ 8 - 0
app/src/main/java/com/kongzue/dialogxdemo/MainActivity.java

@@ -32,6 +32,7 @@ import com.kongzue.dialogx.interfaces.OnBackPressedListener;
 import com.kongzue.dialogx.interfaces.OnBindView;
 import com.kongzue.dialogx.interfaces.OnDialogButtonClickListener;
 import com.kongzue.dialogx.interfaces.OnIconChangeCallBack;
+import com.kongzue.dialogx.interfaces.OnMenuItemClickListener;
 import com.kongzue.dialogx.style.IOSStyle;
 import com.kongzue.dialogx.style.KongzueStyle;
 import com.kongzue.dialogx.style.MIUIStyle;
@@ -340,6 +341,13 @@ public class MainActivity extends BaseActivity {
                                 }
                                 return 0;
                             }
+                        })
+                        .setOnMenuItemClickListener(new OnMenuItemClickListener<BottomMenu>() {
+                            @Override
+                            public boolean onClick(BottomMenu dialog, CharSequence text, int index) {
+                                toast(text);
+                                return false;
+                            }
                         });
             }
         });