فهرست منبع

fix bugs and update 0.0.6 alpha ver

kongzue 4 سال پیش
والد
کامیت
88eec8d4b8

+ 3 - 3
DialogX/build.gradle

@@ -6,7 +6,7 @@ def siteUrl = 'https://github.com/kongzue/DialogX' //项目在github主页地址
 def gitUrl = 'https://github.com/kongzue/DialogX.git'   //Git仓库的地址
 
 group = "com.kongzue.dialogx"
-version = "0.0.5"
+version = "0.0.6"
 
 android {
     compileSdkVersion 30
@@ -14,8 +14,8 @@ android {
     defaultConfig {
         minSdkVersion 21
         targetSdkVersion 30
-        versionCode 5
-        versionName "0.0.5"
+        versionCode 6
+        versionName "0.0.6"
 
         consumerProguardFiles "consumer-rules.pro"
 

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

@@ -244,6 +244,10 @@ public class MessageDialog extends BaseDialog {
             btnSelectPositive.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
+                    if (txtInput != null) {
+                        InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+                        imm.hideSoftInputFromWindow(txtInput.getWindowToken(), 0);
+                    }
                     if (okButtonClickListener != null) {
                         if (okButtonClickListener instanceof OnInputDialogButtonClickListener) {
                             String s = txtInput == null ? "" : txtInput.getText().toString();
@@ -263,6 +267,10 @@ public class MessageDialog extends BaseDialog {
             btnSelectNegative.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
+                    if (txtInput != null) {
+                        InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+                        imm.hideSoftInputFromWindow(txtInput.getWindowToken(), 0);
+                    }
                     if (cancelButtonClickListener != null) {
                         if (cancelButtonClickListener instanceof OnInputDialogButtonClickListener) {
                             String s = txtInput == null ? "" : txtInput.getText().toString();
@@ -282,6 +290,10 @@ public class MessageDialog extends BaseDialog {
             btnSelectOther.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
+                    if (txtInput != null) {
+                        InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+                        imm.hideSoftInputFromWindow(txtInput.getWindowToken(), 0);
+                    }
                     if (otherButtonClickListener != null) {
                         if (otherButtonClickListener instanceof OnInputDialogButtonClickListener) {
                             String s = txtInput == null ? "" : txtInput.getText().toString();

+ 16 - 3
DialogX/src/main/java/com/kongzue/dialogx/util/BottomDialogTouchEventInterceptor.java

@@ -42,6 +42,8 @@ public class BottomDialogTouchEventInterceptor {
         refresh(me, impl);
     }
     
+    private int touchY, touchX;
+    
     public void refresh(final BottomDialog me, final BottomDialog.DialogImpl impl) {
         if (me == null || impl == null || impl.bkg == null || impl.scrollView == null) {
             return;
@@ -68,7 +70,8 @@ public class BottomDialogTouchEventInterceptor {
                             bkgTouchDownY = event.getY();
                             isBkgTouched = true;
                             bkgOldY = impl.bkg.getY();
-                            break;
+                            return false;
+                        //break;
                         case MotionEvent.ACTION_MOVE:
                             if (isBkgTouched) {
                                 float aimY = impl.bkg.getY() + event.getY() - bkgTouchDownY;
@@ -100,8 +103,16 @@ public class BottomDialogTouchEventInterceptor {
                                     
                                     oldMode = 0;
                                 }
+                                
+                                float moveY = event.getRawY();
+                                float moveX = event.getRawX();
+                                if (Math.abs(moveY - touchY) > dip2px(20) || Math.abs(moveX - touchX) > dip2px(20)) {
+                                    return true;
+                                } else {
+                                    return false;
+                                }
                             }
-                            break;
+                            //break;
                         case MotionEvent.ACTION_UP:
                         case MotionEvent.ACTION_CANCEL:
                             scrolledY = impl.scrollView.getScrollY();
@@ -131,7 +142,9 @@ public class BottomDialogTouchEventInterceptor {
                                     enterAnim.start();
                                 }
                             }
-                            break;
+                            
+                            return false;
+                        //break;
                     }
                     return true;
                 }

+ 36 - 29
DialogX/src/main/java/com/kongzue/dialogx/util/views/MaxRelativeLayout.java

@@ -129,35 +129,42 @@ public class MaxRelativeLayout extends RelativeLayout {
             return super.onInterceptTouchEvent(event);
         }
         if (onTouchListener != null) {
-            onTouchListener.onTouch(this, event);
-            switch (event.getAction()) {
-                case MotionEvent.ACTION_DOWN:
-                    isMove = false;
-                    break;
-                case MotionEvent.ACTION_CANCEL:
-                case MotionEvent.ACTION_UP:
-                    if (!isMove) {
-                        return false;
-                    }
-                    isMove = false;
-                    break;
-                case MotionEvent.ACTION_MOVE:
-                    if (!isMove) {
-                        touchY = (int) event.getRawY();
-                        touchX = (int) event.getRawX();
-                    }
-                    isMove = true;
-                    
-                    float moveY = event.getRawY();
-                    float moveX = event.getRawX();
-                    
-                    if (Math.abs(moveY - touchY) > dip2px(20) || Math.abs(moveX - touchX) > dip2px(20)) {
-                        return true;
-                    } else {
-                        return false;
-                    }
-            }
-            return isMove;
+            return onTouchListener.onTouch(this, event);
+//            switch (event.getAction()) {
+//                case MotionEvent.ACTION_DOWN:
+//                    Log.d(">>>", "ACTION_DOWN ");
+//                    isMove = false;
+//                    break;
+//                case MotionEvent.ACTION_CANCEL:
+//                case MotionEvent.ACTION_UP:
+//                    Log.d(">>>", "ACTION_UP ");
+//                    if (!isMove) {
+//                        return false;
+//                    }
+//                    isMove = false;
+//                    break;
+//                case MotionEvent.ACTION_MOVE:
+//                    Log.d(">>>", "ACTION_MOVE ");
+//                    if (!isMove) {
+//                        touchY = (int) event.getRawY();
+//                        touchX = (int) event.getRawX();
+//                    }
+//                    isMove = true;
+//
+//                    float moveY = event.getRawY();
+//                    float moveX = event.getRawX();
+//
+//                    if (Math.abs(moveY - touchY) > dip2px(20) || Math.abs(moveX - touchX) > dip2px(20)) {
+//                        final ViewParent parent = getParent();
+//                        if (parent != null) {
+//                            parent.requestDisallowInterceptTouchEvent(true);
+//                        }
+//                        return true;
+//                    } else {
+//                        return false;
+//                    }
+//            }
+//            return isMove;
         }
         return super.onInterceptTouchEvent(event);
     }

+ 2 - 2
README.md

@@ -96,7 +96,7 @@ DialogX 采用了主体分离结构,主框架仅包含 Material 设计风格
 想要在您的项目引入 DialogX,您需要在 app 的 build.gradle 文件中找到 `dependencies{}` 代码块,并在其中加入以下语句:
 
 ```
-implementation 'com.kongzue.dialogx:DialogX:0.0.5'
+implementation 'com.kongzue.dialogx:DialogX:0.0.6'
 ```
 
 若有需要,也可以手动配置 Maven:
@@ -105,7 +105,7 @@ implementation 'com.kongzue.dialogx:DialogX:0.0.5'
 <dependency>
   <groupId>com.kongzue.dialogx</groupId>
   <artifactId>DialogX</artifactId>
-  <version>0.0.5</version>
+  <version>0.0.6</version>
   <type>pom</type>
 </dependency>
 ```