From ea0ac3b01b1b73a39064522704d1e0a41c2c6f1c Mon Sep 17 00:00:00 2001 From: cgspine Date: Tue, 26 Sep 2017 15:24:01 +0800 Subject: [PATCH 1/5] bugfix: recyclerView drag dy should not mutiply mDragRate #42 --- .../widget/pullRefreshLayout/QMUIPullRefreshLayout.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qmui/src/main/java/com/qmuiteam/qmui/widget/pullRefreshLayout/QMUIPullRefreshLayout.java b/qmui/src/main/java/com/qmuiteam/qmui/widget/pullRefreshLayout/QMUIPullRefreshLayout.java index f85abc2a..cbfb3b00 100644 --- a/qmui/src/main/java/com/qmuiteam/qmui/widget/pullRefreshLayout/QMUIPullRefreshLayout.java +++ b/qmui/src/main/java/com/qmuiteam/qmui/widget/pullRefreshLayout/QMUIPullRefreshLayout.java @@ -405,12 +405,12 @@ public class QMUIPullRefreshLayout extends ViewGroup implements NestedScrollingP startDragging(x, y); if (mIsDragging) { - float dy = y - mLastMotionY; + float dy = (y - mLastMotionY) * mDragRate; if (dy >= 0) { moveTargetView(dy, true); } else { int move = moveTargetView(dy, true); - float delta = Math.abs(dy * mDragRate) - Math.abs(move); + float delta = Math.abs(dy) - Math.abs(move); if (delta > 0) { // 重新dispatch一次down事件,使得列表可以继续滚动 ev.setAction(MotionEvent.ACTION_DOWN); @@ -719,7 +719,7 @@ public class QMUIPullRefreshLayout extends ViewGroup implements NestedScrollingP } private int moveTargetView(float dy, boolean isDragging) { - int target = (int) (mTargetCurrentOffset + dy * mDragRate); + int target = (int) (mTargetCurrentOffset + dy); return moveTargetViewTo(target, isDragging); } From 055a7eede2698dac59b173a6c1fd88aa6b08d5a4 Mon Sep 17 00:00:00 2001 From: cgspine Date: Wed, 27 Sep 2017 13:57:50 +0800 Subject: [PATCH 2/5] bugfix: status bar icon & font color interface change adaptation in Flyme6.2.0.0A #53 --- .../main/java/com/qmuiteam/qmui/util/QMUIStatusBarHelper.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qmui/src/main/java/com/qmuiteam/qmui/util/QMUIStatusBarHelper.java b/qmui/src/main/java/com/qmuiteam/qmui/util/QMUIStatusBarHelper.java index 302d6bcd..83d2f642 100644 --- a/qmui/src/main/java/com/qmuiteam/qmui/util/QMUIStatusBarHelper.java +++ b/qmui/src/main/java/com/qmuiteam/qmui/util/QMUIStatusBarHelper.java @@ -246,6 +246,10 @@ public class QMUIStatusBarHelper { * @return boolean 成功执行返回true */ public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) { + + // flyme 在 6.2.0.0A 支持了 Android 官方的实现方案,旧的方案失效 + Android6SetStatusBarLightMode(window, dark); + boolean result = false; if (window != null) { try { From 16518c86034ee81b28d906ae2a5950ae46e2d572 Mon Sep 17 00:00:00 2001 From: kayo5994 <330956999@qq.com> Date: Wed, 27 Sep 2017 21:28:09 +0800 Subject: [PATCH 3/5] update: complete 1.0.0 release of QMUI Lint --- qmui/lint.xml | 1 + qmuidemo/build.gradle | 2 +- .../qmuidemo/fragment/components/QDProgressBarFragment.java | 2 +- qmuilint/build.gradle | 2 +- qmuilint/project.properties | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/qmui/lint.xml b/qmui/lint.xml index fb194320..dd577beb 100644 --- a/qmui/lint.xml +++ b/qmui/lint.xml @@ -8,4 +8,5 @@ + diff --git a/qmuidemo/build.gradle b/qmuidemo/build.gradle index 945167d9..05f95f57 100644 --- a/qmuidemo/build.gradle +++ b/qmuidemo/build.gradle @@ -57,7 +57,7 @@ configurations.all { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':qmuilint') -// compile 'com.qmuiteam:qmuilint:0.0.2' +// compile 'com.qmuiteam:qmuilint:1.0.0' compile "com.android.support:appcompat-v7:$supportVersion" compile 'com.jakewharton:butterknife:8.4.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' diff --git a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDProgressBarFragment.java b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDProgressBarFragment.java index fa8dc5a7..0ae7b668 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDProgressBarFragment.java +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDProgressBarFragment.java @@ -117,7 +117,7 @@ public class QDProgressBarFragment extends BaseFragment { private WeakReference weakRectProgressBar; private WeakReference weakCircleProgressBar; - public void setProgressBar(QMUIProgressBar rectProgressBar, QMUIProgressBar circleProgressBar) { + void setProgressBar(QMUIProgressBar rectProgressBar, QMUIProgressBar circleProgressBar) { weakRectProgressBar = new WeakReference<>(rectProgressBar); weakCircleProgressBar = new WeakReference<>(circleProgressBar); } diff --git a/qmuilint/build.gradle b/qmuilint/build.gradle index 48d568cb..ac2811a5 100644 --- a/qmuilint/build.gradle +++ b/qmuilint/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'com.android.library' group = 'com.qmuiteam' -version = "0.0.2" // QMUI Lint 发布到 bintray 的版本号 +version = "1.0.0" // QMUI Lint 发布到 bintray 的版本号 android { compileSdkVersion project.ext.compileSdkVersion diff --git a/qmuilint/project.properties b/qmuilint/project.properties index 83e2b90c..437af165 100644 --- a/qmuilint/project.properties +++ b/qmuilint/project.properties @@ -4,7 +4,7 @@ project.name=qmuilint project.groupId=group project.artifactId=qmuilint project.packaging=aar -project.repo=qmuilintrepo +project.repo=qmuirepo project.siteUrl=http://qmuiteam.com/android/page/index.html project.gitUrl=https://github.com/QMUI/QMUI_Android From 1200571eca343d402f7fb1831b4c45acbca35438 Mon Sep 17 00:00:00 2001 From: cgspine Date: Thu, 28 Sep 2017 13:38:41 +0800 Subject: [PATCH 4/5] bugfix: fix the bug duration fragment transition #47 --- .../qmuiteam/qmuidemo/base/BaseFragment.java | 7 +++ .../qmuidemo/base/BaseFragmentActivity.java | 43 +++++++++++++++++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragment.java b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragment.java index e061e53f..eb242675 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragment.java +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragment.java @@ -49,6 +49,12 @@ public abstract class BaseFragment extends Fragment { return !isRemoving() && mBaseView != null; } + @Override + public void onDetach() { + super.onDetach(); + mBaseView = null; + } + protected void startFragment(BaseFragment fragment) { BaseFragmentActivity baseFragmentActivity = this.getBaseFragmentActivity(); if (baseFragmentActivity != null) { @@ -109,6 +115,7 @@ public abstract class BaseFragment extends Fragment { if (mBaseView.getParent() != null) { ((ViewGroup) mBaseView.getParent()).removeView(mBaseView); } + getBaseFragmentActivity().clearDisappearInfo(mBaseView); return mBaseView; } diff --git a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragmentActivity.java b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragmentActivity.java index 92c68a8c..89f1a7cd 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragmentActivity.java +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragmentActivity.java @@ -1,18 +1,27 @@ package com.qmuiteam.qmuidemo.base; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; import android.widget.FrameLayout; import com.qmuiteam.qmui.util.QMUIStatusBarHelper; +import java.lang.reflect.Field; +import java.util.ArrayList; + /** * 基础的 Activity,配合 {@link BaseFragment} 使用。 * Created by cgspine on 15/9/14. */ public abstract class BaseFragmentActivity extends AppCompatActivity { + private static final String TAG = "BaseFragmentActivity"; + private FrameLayout mFragmentContainer; @SuppressWarnings("SameReturnValue") protected abstract int getContextViewId(); @@ -21,14 +30,38 @@ public abstract class BaseFragmentActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); QMUIStatusBarHelper.translucent(this); - FrameLayout layout = new FrameLayout(this); - layout.setId(getContextViewId()); - setContentView(layout); + mFragmentContainer = new FrameLayout(this); + mFragmentContainer.setId(getContextViewId()); + setContentView(mFragmentContainer); } @Override public void onBackPressed() { - popBackStack(); + BaseFragment fragment = getCurrentFragment(); + if (fragment != null) { + popBackStack(); + } + } + + public void clearDisappearInfo(View view) { + if (view != null) { + try { + Field field = ViewGroup.class.getDeclaredField("mDisappearingChildren"); + field.setAccessible(true); + Object o = field.get(mFragmentContainer); + if(o != null && o instanceof ArrayList){ + ArrayList disappearingChildren = (ArrayList) o; + if (disappearingChildren.contains(view)) { + Log.i(TAG, "ViewGroup.mDisappearingChildren contain the targetView"); + disappearingChildren.remove(view); + } + } + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } } /** @@ -39,6 +72,7 @@ public abstract class BaseFragmentActivity extends AppCompatActivity { } public void startFragment(BaseFragment fragment) { + Log.i(TAG, "startFragment"); BaseFragment.TransitionConfig transitionConfig = fragment.onFetchTransitionConfig(); String tagName = fragment.getClass().getSimpleName(); getSupportFragmentManager() @@ -53,6 +87,7 @@ public abstract class BaseFragmentActivity extends AppCompatActivity { * 退出当前的 Fragment。 */ public void popBackStack() { + Log.i(TAG, "popBackStack: getSupportFragmentManager().getBackStackEntryCount() = " + getSupportFragmentManager().getBackStackEntryCount()); if (getSupportFragmentManager().getBackStackEntryCount() <= 1) { BaseFragment fragment = getCurrentFragment(); if (fragment == null) { From 74eba55a90033e97bbf04cc5d4033776481f6185 Mon Sep 17 00:00:00 2001 From: kayo5994 <330956999@qq.com> Date: Thu, 28 Sep 2017 14:44:00 +0800 Subject: [PATCH 5/5] update: arrange whole project of lint --- .../qmuidemo/compiler/WidgetProcessor.java | 2 +- gradle.properties | 1 + .../QMUIPullRefreshLayout.java | 2 +- .../drawable-xhdpi/qmui_popup_arrow_down.png | Bin 184 -> 216 bytes .../qmuidemo/base/BaseFragmentActivity.java | 2 +- .../qmuidemo/fragment/QDAboutFragment.java | 1 - 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/compiler/src/main/java/com/qmuiteam/qmuidemo/compiler/WidgetProcessor.java b/compiler/src/main/java/com/qmuiteam/qmuidemo/compiler/WidgetProcessor.java index a9788f0c..38d36171 100644 --- a/compiler/src/main/java/com/qmuiteam/qmuidemo/compiler/WidgetProcessor.java +++ b/compiler/src/main/java/com/qmuiteam/qmuidemo/compiler/WidgetProcessor.java @@ -40,7 +40,7 @@ import javax.tools.Diagnostic; @AutoService(Processor.class) public class WidgetProcessor extends AbstractProcessor { private Filer mFiler; //文件相关的辅助类 - private Elements mElementUtils; //元素相关的辅助类 + @SuppressWarnings("FieldCanBeLocal") private Elements mElementUtils; //元素相关的辅助类 private Messager mMessager; //日志相关的辅助类 private boolean mIsFileCreated = false; diff --git a/gradle.properties b/gradle.properties index f1c49f39..d0cf9444 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,4 @@ +# suppress inspection "UnusedProperty" for whole file # Project-wide Gradle settings. # IDE (e.g. Android Studio) users: diff --git a/qmui/src/main/java/com/qmuiteam/qmui/widget/pullRefreshLayout/QMUIPullRefreshLayout.java b/qmui/src/main/java/com/qmuiteam/qmui/widget/pullRefreshLayout/QMUIPullRefreshLayout.java index cbfb3b00..f2f34cd5 100644 --- a/qmui/src/main/java/com/qmuiteam/qmui/widget/pullRefreshLayout/QMUIPullRefreshLayout.java +++ b/qmui/src/main/java/com/qmuiteam/qmui/widget/pullRefreshLayout/QMUIPullRefreshLayout.java @@ -104,7 +104,7 @@ public class QMUIPullRefreshLayout extends ViewGroup implements NestedScrollingP private float mInitialDownX; @SuppressWarnings("FieldCanBeLocal") private float mInitialMotionY; private float mLastMotionY; - private float mDragRate = 0.65f; + @SuppressWarnings("FieldCanBeLocal") private float mDragRate = 0.65f; private RefreshOffsetCalculator mRefreshOffsetCalculator; private VelocityTracker mVelocityTracker; private float mMaxVelocity; diff --git a/qmui/src/main/res/drawable-xhdpi/qmui_popup_arrow_down.png b/qmui/src/main/res/drawable-xhdpi/qmui_popup_arrow_down.png index 2ec1ecce92635b3c37344b49ac25cf118ff860d6..4aa65d15956d4fb544024b2caa351f8ba4a3cf4f 100644 GIT binary patch delta 201 zcmV;)05<=)0oVbM7k?561^@s6Gb4N`00001b5ch_0Itp)=>Px#l1W5CR7efY&PfWu zAPfaiE5-X?S2rywq)44IsOg8qVUfHe#(0Gg+#ixsavmC#bU~*lsR900000NkvXXu0mjf DL#;!l delta 169 zcmV;a09OCl0k{E>7k?871^@s6_Px#a!Eu%R7efY(Ax@t zFbo6G`sL0quT|K?MCUGPvp~q}A)Bfu5!tOPccpr#xPE(ISd$u!GKU$%p}SOGl=rVbfRJ~ji^}64