diff --git a/Android/app/doraemonkit.gradle b/Android/app/doraemonkit.gradle index 908775e23541455edf07364c17b467f1335ee114..1c5bcf371705e665331a5c1a34a706790aa858f1 100644 --- a/Android/app/doraemonkit.gradle +++ b/Android/app/doraemonkit.gradle @@ -10,12 +10,12 @@ if (rootProject.ext.config["applyPlugin"]) { // releaseImplementation project(":doraemonkit-no-op") // releaseImplementation project(":doraemonkit_weex_no_op") - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit:1.2.8' - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-leakcanary:1.2.8' - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-weex:1.2.8' - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-aop:1.2.8' - releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-weex-no-op:1.2.8' - releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-no-op:1.2.8' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit:2.0.0' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-leakcanary:2.0.0' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-weex:2.0.0' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-aop:2.0.0' + releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-weex-no-op:2.0.0' + releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-no-op:2.0.0' } } else { // 引用no-op的库 diff --git a/Android/app/src/debug/java/com/didichuxing/doraemondemo/MainDebugActivity.java b/Android/app/src/debug/java/com/didichuxing/doraemondemo/MainDebugActivity.java index aa05a75b501f84025e70a6f804cc4a0f12707aed..881cdb96bc0089cf6990a03ec690f92aff3e2d59 100644 --- a/Android/app/src/debug/java/com/didichuxing/doraemondemo/MainDebugActivity.java +++ b/Android/app/src/debug/java/com/didichuxing/doraemondemo/MainDebugActivity.java @@ -32,7 +32,6 @@ import com.didichuxing.doraemonkit.ui.realtime.datasource.DataSourceFactory; import com.didichuxing.doraemonkit.util.threadpool.ThreadPoolProxyFactory; import com.facebook.drawee.view.SimpleDraweeView; import com.squareup.picasso.Picasso; -//import com.squareup.picasso.Picasso; import java.io.ByteArrayOutputStream; import java.io.File; @@ -58,7 +57,7 @@ import okhttp3.RequestBody; import okhttp3.Response; import okhttp3.ResponseBody; -//import com.squareup.picasso.Picasso; + public class MainDebugActivity extends AppCompatActivity implements View.OnClickListener { public static final String TAG = "MainActivity"; diff --git a/Android/build.gradle b/Android/build.gradle index 8beda994d499d73011f4e304046fa9285afbe7f7..32ad492f47232886044b90c3e39d3315034ebf80 100644 --- a/Android/build.gradle +++ b/Android/build.gradle @@ -13,7 +13,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.5.1' + classpath 'com.android.tools.build:gradle:3.5.2' classpath 'com.novoda:bintray-release:0.9.1' classpath 'com.github.franticn:gradle_plugin_android_aspectjx:2.0.6' // NOTE: Do not place your application dependencies here; they belong diff --git a/Android/config.gradle b/Android/config.gradle index 7d76f1da53a050e4b3d8febb234285f36f248006..a151b8c846c12ae4ac997bcf13a281fcff28f61f 100755 --- a/Android/config.gradle +++ b/Android/config.gradle @@ -11,12 +11,12 @@ ext { applicationId : "com.didichuxing.doraemondemo", minSdkVersion : 16, targetSdkVersion : 27, - versionCode : 128, + versionCode : 200, //滴滴内网dokit版本号 innerArchivesVersionName : "0.1.23", //jcenter dokit版本号 - jcenterArchivesVersionName: "1.2.8", - versionName : "1.2.8", + jcenterArchivesVersionName: "2.0.0", + versionName : "2.0.0", "glide" : "4.8.0", ] dependencies = [// ###### android library start ###### diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/DoraemonKit.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/DoraemonKit.java index 2848b12aa1790bc0a9224557ae84f9b18db4f11d..f74cc9456646dfb13bb28ffb6fb160bd4ae0c304 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/DoraemonKit.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/DoraemonKit.java @@ -201,7 +201,9 @@ public class DoraemonKit { return; } //设置app的直接子view的Id - UIUtils.getDokitAppContentView(activity).setId(R.id.dokit_app_contentview_id); + if (UIUtils.getDokitAppContentView(activity) != null) { + UIUtils.getDokitAppContentView(activity).setId(R.id.dokit_app_contentview_id); + } if (IS_NORMAL_FLOAT_MODE) { diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/layoutborder/LayoutLevelDokitView.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/layoutborder/LayoutLevelDokitView.java index 397c5c7550afe9cf4fc6eca2bf4c731cd5b263e1..45c0af8d72ade82080a69b2e3b686cd29274f07f 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/layoutborder/LayoutLevelDokitView.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/layoutborder/LayoutLevelDokitView.java @@ -11,9 +11,9 @@ import android.view.Window; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.FrameLayout; -import android.widget.LinearLayout; import com.blankj.utilcode.util.ActivityUtils; +import com.blankj.utilcode.util.ToastUtils; import com.didichuxing.doraemonkit.DoraemonKit; import com.didichuxing.doraemonkit.R; import com.didichuxing.doraemonkit.config.LayoutBorderConfig; @@ -22,13 +22,14 @@ import com.didichuxing.doraemonkit.ui.base.AbsDokitView; import com.didichuxing.doraemonkit.ui.base.DokitViewLayoutParams; import com.didichuxing.doraemonkit.ui.base.DokitViewManager; import com.didichuxing.doraemonkit.ui.layoutborder.ScalpelFrameLayout; -import com.didichuxing.doraemonkit.ui.layoutborder.ViewBorderFrameLayout; +import com.didichuxing.doraemonkit.util.LogHelper; import com.didichuxing.doraemonkit.util.UIUtils; /** * Created by jintai on 2019/09/26. */ public class LayoutLevelDokitView extends AbsDokitView { + private static final String TAG = "LayoutLevelDokitView"; private CheckBox mSwitchButton; private View mClose; @@ -73,8 +74,16 @@ public class LayoutLevelDokitView extends AbsDokitView { } if (appContentView == null) { + ToastUtils.showShort("当前根布局功能不支持"); return; } + + if(appContentView.toString().contains("SwipeBackLayout")){ + LogHelper.i(TAG,"普通模式下布局层级功能暂不支持以SwipeBackLayout为根布局,请改用系统模式"); + ToastUtils.showShort("普通模式下布局层级功能暂不支持以SwipeBackLayout为根布局"); + return; + } + //将所有控件放入到ScalpelFrameLayout中 mScalpelFrameLayout = new ScalpelFrameLayout(appContentView.getContext()); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/ui/layoutborder/ViewBorderFrameLayout.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/ui/layoutborder/ViewBorderFrameLayout.java index b436070e59f9b874216df2f1f187c41bc8a0efd3..d0b7ca739bd5ffcd57091e85a0070bd2e0588051 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/ui/layoutborder/ViewBorderFrameLayout.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/ui/layoutborder/ViewBorderFrameLayout.java @@ -12,9 +12,13 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; +import com.blankj.utilcode.util.Utils; +import com.didichuxing.doraemonkit.R; import com.didichuxing.doraemonkit.config.LayoutBorderConfig; import com.didichuxing.doraemonkit.ui.base.DokitViewInterface; import com.didichuxing.doraemonkit.ui.base.DokitViewManagerInterface; +import com.didichuxing.doraemonkit.util.LogHelper; +import com.didichuxing.doraemonkit.util.UIUtils; import java.util.ArrayList; import java.util.List; @@ -23,16 +27,22 @@ import java.util.List; * Created by wanglikun on 2019/1/12 */ public class ViewBorderFrameLayout extends FrameLayout { + private static final String TAG = "ViewBorderFrameLayout"; + public ViewBorderFrameLayout(@NonNull Context context) { super(context); + setId(R.id.dokit_view_border_id); + //LogHelper.i(TAG, "childId=====>" + UIUtils.getIdText(this)); } public ViewBorderFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); + setId(R.id.dokit_view_border_id); } public ViewBorderFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + setId(R.id.dokit_view_border_id); } @Override diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/UIUtils.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/UIUtils.java index 821a8a956543688f6d3449d42943f49e1f74f8e4..6bc828fe26602b10b4c8495c3e8d15183998e6d6 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/UIUtils.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/UIUtils.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; import android.support.annotation.AnyRes; +import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.Display; @@ -13,6 +14,7 @@ import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.LinearLayout; +import android.widget.TextView; import com.didichuxing.doraemonkit.R; import com.didichuxing.doraemonkit.ui.layoutborder.ViewBorderFrameLayout; @@ -148,7 +150,11 @@ public class UIUtils { return false; } - + /** + * 要特别注意 返回的字段包含空格 做判断时一定要trim() + * @param view + * @return + */ public static String getIdText(View view) { final int id = view.getId(); StringBuilder out = new StringBuilder(); @@ -177,12 +183,17 @@ public class UIUtils { out.append("/"); out.append(entryname); } catch (Resources.NotFoundException e) { + e.printStackTrace(); } } } - return out.toString(); + return TextUtils.isEmpty(out.toString()) ? "" : out.toString(); } + /** + * ViewBorderFrameLayout 的str id + */ + private final static String STR_VIEW_BORDER_Id = "app:id/dokit_view_border_id"; /** * 获得app的contentView @@ -199,9 +210,10 @@ public class UIUtils { for (int index = 0; index < decorView.getChildCount(); index++) { View child = decorView.getChildAt(index); + LogHelper.i(TAG, "childId=====>" + getIdText(child)); //解决与布局边框工具冲突的问题 - if (child instanceof LinearLayout || child instanceof ViewBorderFrameLayout) { - if (child instanceof ViewBorderFrameLayout) { + if ((child instanceof LinearLayout && TextUtils.isEmpty(getIdText(child).trim())) || child instanceof FrameLayout) { + if (getIdText(child).trim().equals(STR_VIEW_BORDER_Id)) { mAppContentView = ((ViewBorderFrameLayout) child).getChildAt(0); } else { mAppContentView = child; diff --git a/Android/doraemonkit/src/main/res/values/ids.xml b/Android/doraemonkit/src/main/res/values/ids.xml index 89a6776e1d2a52e6673844cc9262e67e7bc4f86a..ff43c2406e9de648a614100c39e482bd7429c274 100755 --- a/Android/doraemonkit/src/main/res/values/ids.xml +++ b/Android/doraemonkit/src/main/res/values/ids.xml @@ -27,4 +27,5 @@ + diff --git a/Doc/android-ReleaseNotes.md b/Doc/android-ReleaseNotes.md index 8b74eb5c71f2bee7aff320d2c043b4cf9fc1f373..6e24098a97068377320e4be8af344aa8297dfc1b 100644 --- a/Doc/android-ReleaseNotes.md +++ b/Doc/android-ReleaseNotes.md @@ -1,3 +1,7 @@ +## 2.0.0 + +1. 修复V2.0.0前置试用版V1.2.8的相关issues,先正是推出V2.0.0版本,请大家升级使用 + ## 1.2.8 1. 解决app_name被覆盖的问题 diff --git a/Doc/android_cn_guide.md b/Doc/android_cn_guide.md index 6accf41f9c1a31e135ec9a325af76497ce0c09cc..3182f79dfb5a182b9560896bfc4a6fbc5dbe63c4 100644 --- a/Doc/android_cn_guide.md +++ b/Doc/android_cn_guide.md @@ -5,8 +5,8 @@ ``` dependencies { ... - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit:1.2.8' - releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-no-op:1.2.8' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit:2.0.0' + releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-no-op:2.0.0' implementation 'com.squareup.okhttp3:okhttp:3.12.1' ... } @@ -28,8 +28,8 @@ DoraemonKit目前已支持Weex工具,包括 ``` dependencies { ... - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-weex:1.2.8' - releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-weex-no-op:1.2.8' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-weex:2.0.0' + releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-weex-no-op:2.0.0' ... } ``` @@ -39,7 +39,7 @@ dependencies { ``` dependencies { ... - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-leakcanary:1.2.8' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-leakcanary:2.0.0' ... } ``` @@ -93,7 +93,7 @@ buildscript { apply plugin: 'android-aspectjx' dependencies { ... - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-aop:1.2.8' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-aop:2.0.0' ... } ``` diff --git a/Doc/android_en_guide.md b/Doc/android_en_guide.md index 3630423d4356c74dfe39d3a9cae5f95f6807a7c2..f040571ff1cb04ff36393b0f344032a8e939e440 100644 --- a/Doc/android_en_guide.md +++ b/Doc/android_en_guide.md @@ -5,8 +5,8 @@ ``` dependencies { ... - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit:1.2.8' - releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-no-op:1.2.8' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit:2.0.0' + releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-no-op:2.0.0' ... } ``` @@ -62,7 +62,7 @@ Apply plugin in application module of `build.gradle` apply plugin: 'android-aspectjx' dependencies { ... - debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-aop:1.2.8' + debugImplementation 'com.didichuxing.doraemonkit:doraemonkit-aop:2.0.0' ... } ```