diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a4ae4c03de6ec816429550e9bda31c66200bf53..1e28e9f394b82be93d3562e497b63a6b85ab4d56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.0.4-SNAPSHOT +* modification: Fixed Bug + ## 0.0.3-SNAPSHOT * modification: Update copyright diff --git a/README.md b/README.md index a1cf7e67c0524c579c4b5e6bff5450ce144a3b3f..4855c5712183c91f4079adb91fb7026a6a49c268 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ allprojects { 2.在entry模块的build.gradle文件中 ``` dependencies { - implementation('com.gitee.chinasoft_ohos:PhotoDraweeView:0.0.3-SNAPSHOT') + implementation('com.gitee.chinasoft_ohos:PhotoDraweeView:0.0.4-SNAPSHOT') ...... } ``` @@ -108,7 +108,7 @@ CloudTest代码测试无异常 ## 版本迭代 -+ 0.0.3-SNAPSHOT ++ 0.0.4-SNAPSHOT ## 版权和许可信息 + Apache License \ No newline at end of file diff --git a/entry/src/main/java/com/me/relex/photodraweeview/sample/slice/SingleAbilitySlice.java b/entry/src/main/java/com/me/relex/photodraweeview/sample/slice/SingleAbilitySlice.java index 89984155d75e89c0e426d1216a383b0685ce68ca..0f6b64da30c131c4b7f16cbe7fdd85366dd4aba8 100644 --- a/entry/src/main/java/com/me/relex/photodraweeview/sample/slice/SingleAbilitySlice.java +++ b/entry/src/main/java/com/me/relex/photodraweeview/sample/slice/SingleAbilitySlice.java @@ -40,7 +40,6 @@ import java.text.DecimalFormat; public class SingleAbilitySlice extends AbilitySlice implements Component.ClickedListener, Component.LongClickedListener, Component.TouchEventListener, - Component.DoubleClickedListener, CustomTitle.MenuItemClickedListener { private static final float STEP_PHOTO_VIEW_FRAME = 0.25f; private static final int TOAST_SHOW_DURATION = 2 * 1000; @@ -103,7 +102,6 @@ public class SingleAbilitySlice extends AbilitySlice implements Component.Clicke mContentLayout.setAlignment(LayoutAlignment.CENTER); mContentLayout.setClickedListener(this); mContentLayout.setLongClickedListener(this); - mContentLayout.setDoubleClickedListener(this); mContentLayout.setTouchEventListener(this); mDependentLayout.addComponent(mContentLayout); @@ -210,13 +208,6 @@ public class SingleAbilitySlice extends AbilitySlice implements Component.Clicke } } - @Override - public void onDoubleClick(Component component) { - if (mPosition == 0 || mPosition == 4) { - mPhotoViewFrame.doubleClick(); - } - } - private void startViewPager() { Intent intentViewPager = new Intent(); Operation operationViewPager = new Intent.OperationBuilder() diff --git a/photodraweeview/src/main/java/com/me/relex/photodraweeview/PhotoView.java b/photodraweeview/src/main/java/com/me/relex/photodraweeview/PhotoView.java index 3b760078a5c6ebd0518589a75a9b17c7878e74e2..972d810173f57fafce8ae68c432d4b2222bbe558 100644 --- a/photodraweeview/src/main/java/com/me/relex/photodraweeview/PhotoView.java +++ b/photodraweeview/src/main/java/com/me/relex/photodraweeview/PhotoView.java @@ -78,8 +78,26 @@ public class PhotoView extends Image implements Component.TouchEventListener, Co */ private long mMoveErrorTimeMillis = 0; + /** + * down touch 时间点 + */ private long mDownTimeMillis = 0; + /** + * up touch 时间点 + */ + private long mUpTimeMillis = 0; + + /** + * 惯性加速度的时间点 + */ + private long mInertiaTimeMillis = 0; + + /** + * 是否是三指或者三指以上操作 + */ + private boolean isMultiFinger = false; + /** * 当前手指的触碰事件,0:未触碰;1:单指;2:双指; */ @@ -207,6 +225,7 @@ public class PhotoView extends Image implements Component.TouchEventListener, Co baseValue = 0; mLastMoveValue = -1; mCurrentPointer = 0; + isMultiFinger = false; mDownTimeMillis = System.currentTimeMillis(); startX = touchEvent.getPointerScreenPosition(0).getX(); startY = touchEvent.getPointerScreenPosition(0).getY(); @@ -230,8 +249,10 @@ public class PhotoView extends Image implements Component.TouchEventListener, Co if (touchEvent.getPointerCount() == 1 && mCurrentPointer == 1) { // 单指操作 singlePointerMove(touchEvent); - } else if (touchEvent.getPointerCount() == 2 && mCurrentPointer == 2) { + } else if (touchEvent.getPointerCount() == 2 && mCurrentPointer == 2 && !isMultiFinger) { doublePointerMove(component, touchEvent); + } else if (touchEvent.getPointerCount() >= 3){ + isMultiFinger = true; } break; default: @@ -274,6 +295,15 @@ public class PhotoView extends Image implements Component.TouchEventListener, Co float moveX = touchEvent.getPointerScreenPosition(0).getX() - startX; float moveY = touchEvent.getPointerScreenPosition(0).getY() - startY; + + if (System.currentTimeMillis() - mUpTimeMillis < 200 && + System.currentTimeMillis() - mInertiaTimeMillis > 200 && + (Math.abs(moveX) < 100 || Math.abs(moveY) < 100)){ + setScaleImage(component, true); + return; + } + mUpTimeMillis = System.currentTimeMillis(); + if (Math.abs(moveX) > 100 || Math.abs(moveY) > 100) { animationInertia(moveX, moveY); } @@ -427,7 +457,7 @@ public class PhotoView extends Image implements Component.TouchEventListener, Co @Override public void onDoubleClick(Component component) { - setScaleImage(component, true); + } /** @@ -608,7 +638,7 @@ public class PhotoView extends Image implements Component.TouchEventListener, Co * @param component Component */ public void doubleClick(Component component) { - setScaleImage(component, true); + } /** @@ -618,6 +648,7 @@ public class PhotoView extends Image implements Component.TouchEventListener, Co * @param moveY y轴移动 */ private void animationInertia(float moveX, float moveY) { + mInertiaTimeMillis = System.currentTimeMillis(); if (System.currentTimeMillis() - mDownTimeMillis < 200) { int widthBoundary = (int) (getWidth() * (getScaleX() - 1) / 2); int heightBoundary = (int) (getHeight() * (getScaleY() - 1) / 2);