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/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/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 { 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..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; @@ -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); } 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 2ec1ecce..4aa65d15 100644 Binary files a/qmui/src/main/res/drawable-xhdpi/qmui_popup_arrow_down.png and b/qmui/src/main/res/drawable-xhdpi/qmui_popup_arrow_down.png differ 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/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..9086054d 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragmentActivity.java +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/base/BaseFragmentActivity.java @@ -4,15 +4,23 @@ 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 +29,39 @@ 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(); + } + } + + @SuppressWarnings("TryWithIdenticalCatches") + 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) { diff --git a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/QDAboutFragment.java b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/QDAboutFragment.java index 5c430716..92d01cf5 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/QDAboutFragment.java +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/QDAboutFragment.java @@ -6,7 +6,6 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; -import com.qmuiteam.qmui.QMUILog; import com.qmuiteam.qmui.util.QMUIPackageHelper; import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.grouplist.QMUIGroupListView; 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