From 75bdf4227a585a3f044b37b204db5c4ae5a7f1fe Mon Sep 17 00:00:00 2001 From: longtaoge <61852263@qq.com> Date: Sun, 31 Mar 2019 13:01:42 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E7=BC=96=E8=AF=91=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 3 +++ .idea/misc.xml | 17 +++++++++++++--- .idea/modules.xml | 3 +++ FloatMenu/build.gradle | 5 ++--- .../customfloat/BaseFloatDailog.java | 5 +++++ FloatMenuDemo/build.gradle | 20 +++++++++---------- .../yw/game/floatmenu/demo/MainActivity.java | 2 +- build.gradle | 4 +++- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 9 files changed, 43 insertions(+), 20 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 76a4349..2996d53 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,6 +3,9 @@ - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 08cd2a4..129b6e4 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,8 +3,11 @@ + + + \ No newline at end of file diff --git a/FloatMenu/build.gradle b/FloatMenu/build.gradle index acf1e19..41f1086 100644 --- a/FloatMenu/build.gradle +++ b/FloatMenu/build.gradle @@ -8,7 +8,6 @@ version = "2.1.0" android { compileSdkVersion 25 - buildToolsVersion '26.0.2' defaultConfig { minSdkVersion 11 @@ -40,8 +39,8 @@ android { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:support-v4:25.3.1' + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.android.support:support-v4:25.3.1' } diff --git a/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDailog.java b/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDailog.java index dd8ec33..ef5673d 100644 --- a/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDailog.java +++ b/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDailog.java @@ -398,6 +398,11 @@ private void floatEventDown(MotionEvent event) { } + + + + + /** * 悬浮窗touch事件的 move 事件 */ diff --git a/FloatMenuDemo/build.gradle b/FloatMenuDemo/build.gradle index ebed711..c910ea7 100644 --- a/FloatMenuDemo/build.gradle +++ b/FloatMenuDemo/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 - buildToolsVersion '26.0.2' + compileSdkVersion 28 defaultConfig { applicationId "com.yw.game.floatmenu.demo" - minSdkVersion 11 - targetSdkVersion 25 + minSdkVersion 14 + targetSdkVersion 28 + versionCode 1 versionName "1.1" } @@ -20,10 +20,10 @@ android { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.yw.game.sclib:shortCutLib:0.0.3' - compile project(':FloatMenu') - compile 'com.android.support:support-v4:25.3.1' + implementation fileTree(include: ['*.jar'], dir: 'libs') + testImplementation 'junit:junit:4.12' + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.yw.game.sclib:shortCutLib:0.0.3' + implementation project(':FloatMenu') + implementation 'com.android.support:support-v4:28.0.0' } diff --git a/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MainActivity.java b/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MainActivity.java index ebbc6df..9bb9900 100644 --- a/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MainActivity.java +++ b/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MainActivity.java @@ -108,7 +108,7 @@ public void run() { if (mBaseFloatDailog != null) return; mBaseFloatDailog = new MyFloatDialog(this); - mBaseFloatDailog.show(); + //mBaseFloatDailog.show(); } diff --git a/build.gradle b/build.gradle index cf415c5..3d95be2 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0' + classpath 'com.android.tools.build:gradle:3.2.1' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' // NOTE: Do not place your application dependencies here; they belong @@ -19,6 +20,7 @@ allprojects { maven { url 'https://dl.bintray.com/fanofdemo/maven/' } + google() } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 25d8da5..3f86286 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Nov 06 00:24:11 CST 2017 +#Sun Mar 31 11:25:06 CST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip From 3d64213f66a87cd0aec026e8211601ca1ef7d17c Mon Sep 17 00:00:00 2001 From: wengyiming Date: Sun, 5 Jan 2020 17:16:46 +0800 Subject: [PATCH 2/8] update .gitignore --- .gitignore | 1 + .idea/.name | 1 - .idea/compiler.xml | 22 -------------- .idea/copyright/profiles_settings.xml | 3 -- .idea/encodings.xml | 6 ---- .idea/gradle.xml | 15 ---------- .idea/misc.xml | 41 --------------------------- .idea/modules.xml | 13 --------- .idea/vcs.xml | 6 ---- 9 files changed, 1 insertion(+), 107 deletions(-) delete mode 100644 .idea/.name delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/copyright/profiles_settings.xml delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index f8484a7..f0adcc4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ .DS_Store /build /captures +/.idea .idea diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 1aca528..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -FloatMenuSample \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 96cc43e..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 97626ba..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 2996d53..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 09aaef5..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 129b6e4..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From ea48e407eea4304a08824cdedc2f74dcd6f9118f Mon Sep 17 00:00:00 2001 From: wengyiming Date: Sun, 5 Jan 2020 17:29:32 +0800 Subject: [PATCH 3/8] fix: name error --- FloatMenu/build.gradle | 2 +- .../com/yw/game/floatmenu/DotImageView.java | 80 ++++++------ .../com/yw/game/floatmenu/FloatLogoMenu.java | 114 +++++++++--------- .../com/yw/game/floatmenu/FloatMenuView.java | 31 +++-- ...eFloatDailog.java => BaseFloatDialog.java} | 100 +++++++-------- .../yw/game/floatmenu/demo/MainActivity.java | 18 +-- .../yw/game/floatmenu/demo/MyFloatDialog.java | 10 +- 7 files changed, 176 insertions(+), 179 deletions(-) rename FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/{BaseFloatDailog.java => BaseFloatDialog.java} (90%) diff --git a/FloatMenu/build.gradle b/FloatMenu/build.gradle index 41f1086..3191db7 100644 --- a/FloatMenu/build.gradle +++ b/FloatMenu/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' -version = "2.1.0" +version = "2.2.0" android { compileSdkVersion 25 diff --git a/FloatMenu/src/main/java/com/yw/game/floatmenu/DotImageView.java b/FloatMenu/src/main/java/com/yw/game/floatmenu/DotImageView.java index 57df63a..62a38e4 100644 --- a/FloatMenu/src/main/java/com/yw/game/floatmenu/DotImageView.java +++ b/FloatMenu/src/main/java/com/yw/game/floatmenu/DotImageView.java @@ -46,8 +46,8 @@ public class DotImageView extends View { private Paint mPaintBg;//用于画anything private String dotNum = null;//红点数字 - private float mAlphValue;//透明度动画值 - private float mRolateValue = 1f;//旋转动画值 + private float mAlphaValue;//透明度动画值 + private float mRotateValue = 1f;//旋转动画值 private boolean inited = false;//标记透明动画是否执行过,防止因onreseme 切换导致重复执行 @@ -58,9 +58,9 @@ public class DotImageView extends View { private final int mRedPointRadius = dip2px(3);//红点圆半径 private final int mRedPointOffset = dip2px(10);//红点对logo的偏移量,比如左红点就是logo中心的 x - mRedPointOffset - private boolean isDraging = false;//是否 绘制旋转放大动画,只有 非停靠边缘才绘制 + private boolean isDrag = false;//是否 绘制旋转放大动画,只有 非停靠边缘才绘制 private float scaleOffset;//放大偏移值 - private ValueAnimator mDragingValueAnimator;//放大、旋转 属性动画 + private ValueAnimator mDragValueAnimator;//放大、旋转 属性动画 private LinearInterpolator mLinearInterpolator = new LinearInterpolator();//通用用加速器 public boolean mDrawDarkBg = true;//是否绘制黑色背景,当菜单关闭时,才绘制灰色背景 private static final float hideOffset = 0.4f;//往左右隐藏多少宽度的偏移值, 隐藏宽度的0.4 @@ -97,7 +97,7 @@ public int getStatus() { public void setStatus(int status) { this.mStatus = status; - isDraging = false; + isDrag = false; if (this.mStatus != NORMAL) { setDrawNum(mDrawNum); this.mDrawDarkBg = true; @@ -160,8 +160,8 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - float centryX = getWidth() / 2; - float centryY = getHeight() / 2; + float centerX = getWidth() / 2; + float centerY = getHeight() / 2; canvas.save();//保存一份快照,方便后面恢复 mCamera.save(); if (mStatus == NORMAL) { @@ -170,7 +170,7 @@ protected void onDraw(Canvas canvas) { mCamera.restore(); } - if (isDraging) { + if (isDrag) { //如果当前是拖动状态则放大并旋转 canvas.scale((scaleOffset + 1f), (scaleOffset + 1f), getWidth() / 2, getHeight() / 2); if (mIsResetPosition) { @@ -185,7 +185,7 @@ protected void onDraw(Canvas canvas) { mCamera.restore(); } else { //手指拖动且手指未离开屏幕则使用 绕图心2d旋转动画 - canvas.rotate(60 * mRolateValue, getWidth() / 2, getHeight() / 2); + canvas.rotate(60 * mRotateValue, getWidth() / 2, getHeight() / 2); } } @@ -199,27 +199,27 @@ protected void onDraw(Canvas canvas) { canvas.rotate(45, getWidth() / 2, getHeight() / 2); } canvas.save(); - if (!isDraging) { + if (!isDrag) { if (mDrawDarkBg) { mPaintBg.setColor(mBgColor); - canvas.drawCircle(centryX, centryY, mLogoBackgroundRadius, mPaintBg); + canvas.drawCircle(centerX, centerY, mLogoBackgroundRadius, mPaintBg); // 60% 白色 (透明度 40%) mPaint.setColor(0x99ffffff); } else { //100% 白色背景 (透明度 0%) mPaint.setColor(0xFFFFFFFF); } - if (mAlphValue != 0) { - mPaint.setAlpha((int) (mAlphValue * 255)); + if (mAlphaValue != 0) { + mPaint.setAlpha((int) (mAlphaValue * 255)); } - canvas.drawCircle(centryX, centryY, mLogoWhiteRadius, mPaint); + canvas.drawCircle(centerX, centerY, mLogoWhiteRadius, mPaint); } canvas.restore(); //100% 白色背景 (透明度 0%) mPaint.setColor(0xFFFFFFFF); - int left = (int) (centryX - mBitmap.getWidth() / 2); - int top = (int) (centryY - mBitmap.getHeight() / 2); + int left = (int) (centerX - mBitmap.getWidth() / 2); + int top = (int) (centerY - mBitmap.getHeight() / 2); canvas.drawBitmap(mBitmap, left, top, mPaint); @@ -227,29 +227,29 @@ protected void onDraw(Canvas canvas) { int readPointRadus = (mDrawNum ? mRedPointRadiusWithNum : mRedPointRadius); mPaint.setColor(Color.RED); if (mStatus == HIDE_LEFT) { - canvas.drawCircle(centryX + mRedPointOffset, centryY - mRedPointOffset, readPointRadus, mPaint); + canvas.drawCircle(centerX + mRedPointOffset, centerY - mRedPointOffset, readPointRadus, mPaint); if (mDrawNum) { mPaint.setColor(Color.WHITE); - canvas.drawText(dotNum, centryX + mRedPointOffset - getTextWidth(dotNum, mPaint) / 2, centryY - mRedPointOffset + getTextHeight(dotNum, mPaint) / 2, mPaint); + canvas.drawText(dotNum, centerX + mRedPointOffset - getTextWidth(dotNum, mPaint) / 2, centerY - mRedPointOffset + getTextHeight(dotNum, mPaint) / 2, mPaint); } } else if (mStatus == HIDE_RIGHT) { - canvas.drawCircle(centryX - mRedPointOffset, centryY - mRedPointOffset, readPointRadus, mPaint); + canvas.drawCircle(centerX - mRedPointOffset, centerY - mRedPointOffset, readPointRadus, mPaint); if (mDrawNum) { mPaint.setColor(Color.WHITE); - canvas.drawText(dotNum, centryX - mRedPointOffset - getTextWidth(dotNum, mPaint) / 2, centryY - mRedPointOffset + getTextHeight(dotNum, mPaint) / 2, mPaint); + canvas.drawText(dotNum, centerX - mRedPointOffset - getTextWidth(dotNum, mPaint) / 2, centerY - mRedPointOffset + getTextHeight(dotNum, mPaint) / 2, mPaint); } } else { if (mLastStatus == HIDE_LEFT) { - canvas.drawCircle(centryX + mRedPointOffset, centryY - mRedPointOffset, readPointRadus, mPaint); + canvas.drawCircle(centerX + mRedPointOffset, centerY - mRedPointOffset, readPointRadus, mPaint); if (mDrawNum) { mPaint.setColor(Color.WHITE); - canvas.drawText(dotNum, centryX + mRedPointOffset - getTextWidth(dotNum, mPaint) / 2, centryY - mRedPointOffset + getTextHeight(dotNum, mPaint) / 2, mPaint); + canvas.drawText(dotNum, centerX + mRedPointOffset - getTextWidth(dotNum, mPaint) / 2, centerY - mRedPointOffset + getTextHeight(dotNum, mPaint) / 2, mPaint); } } else if (mLastStatus == HIDE_RIGHT) { - canvas.drawCircle(centryX - mRedPointOffset, centryY - mRedPointOffset, readPointRadus, mPaint); + canvas.drawCircle(centerX - mRedPointOffset, centerY - mRedPointOffset, readPointRadus, mPaint); if (mDrawNum) { mPaint.setColor(Color.WHITE); - canvas.drawText(dotNum, centryX - mRedPointOffset - getTextWidth(dotNum, mPaint) / 2, centryY - mRedPointOffset + getTextHeight(dotNum, mPaint) / 2, mPaint); + canvas.drawText(dotNum, centerX - mRedPointOffset - getTextWidth(dotNum, mPaint) / 2, centerY - mRedPointOffset + getTextHeight(dotNum, mPaint) / 2, mPaint); } } } @@ -286,7 +286,7 @@ public void startAnim(final int num, Animator.AnimatorListener l) { valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { - mAlphValue = (float) animation.getAnimatedValue(); + mAlphaValue = (float) animation.getAnimatedValue(); invalidate(); } @@ -302,13 +302,13 @@ public void onAnimationStart(Animator animation) { public void onAnimationEnd(Animator animation) { inited = true; refreshDot(num); - mAlphValue = 0; + mAlphaValue = 0; } @Override public void onAnimationCancel(Animator animation) { - mAlphValue = 0; + mAlphaValue = 0; } @Override @@ -319,26 +319,26 @@ public void onAnimationRepeat(Animator animation) { valueAnimator.start(); } - public void setDraging(boolean draging, float offset, boolean isResetPosition) { - isDraging = draging; + public void setDrag(boolean drag, float offset, boolean isResetPosition) { + isDrag = drag; this.mIsResetPosition = isResetPosition; if (offset > 0 && offset != this.scaleOffset) { this.scaleOffset = offset; } - if (isDraging && mStatus == NORMAL) { - if (mDragingValueAnimator != null) { - if (mDragingValueAnimator.isRunning()) return; + if (isDrag && mStatus == NORMAL) { + if (mDragValueAnimator != null) { + if (mDragValueAnimator.isRunning()) return; } - mDragingValueAnimator = ValueAnimator.ofFloat(0, 6f, 12f, 0f); - mDragingValueAnimator.setInterpolator(mLinearInterpolator); - mDragingValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + mDragValueAnimator = ValueAnimator.ofFloat(0, 6f, 12f, 0f); + mDragValueAnimator.setInterpolator(mLinearInterpolator); + mDragValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { - mRolateValue = (float) animation.getAnimatedValue(); + mRotateValue = (float) animation.getAnimatedValue(); invalidate(); } }); - mDragingValueAnimator.addListener(new Animator.AnimatorListener() { + mDragValueAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { @@ -346,7 +346,7 @@ public void onAnimationStart(Animator animation) { @Override public void onAnimationEnd(Animator animation) { - isDraging = false; + isDrag = false; mIsResetPosition = false; } @@ -360,8 +360,8 @@ public void onAnimationRepeat(Animator animation) { } }); - mDragingValueAnimator.setDuration(1000); - mDragingValueAnimator.start(); + mDragValueAnimator.setDuration(1000); + mDragValueAnimator.start(); } } diff --git a/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatLogoMenu.java b/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatLogoMenu.java index 02a8846..950174d 100644 --- a/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatLogoMenu.java +++ b/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatLogoMenu.java @@ -22,12 +22,10 @@ import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.os.Build; -import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; -import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; @@ -92,7 +90,7 @@ public class FloatLogoMenu { /** * 记录手指按下时在小悬浮窗的View上的纵坐标的值 */ - private float mYinview; + private float mYinView; /** * 记录屏幕的宽度 @@ -141,7 +139,7 @@ public class FloatLogoMenu { /** * 标记是否拖动中 */ - private boolean isDraging = false; + private boolean isDrag = false; /** * 用于恢复悬浮球的location的属性动画值 @@ -154,7 +152,7 @@ public class FloatLogoMenu { private Runnable updatePositionRunnable = new Runnable() { @Override public void run() { - isDraging = true; + isDrag = true; checkPosition(); } }; @@ -165,7 +163,7 @@ public void run() { private OnTouchListener mDefaultOnTouchListerner = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { - isDraging = false; + isDrag = false; return false; } }; @@ -207,7 +205,7 @@ public boolean onTouch(View v, MotionEvent event) { /** * 是否绘制圆形菜单项,false绘制方形 */ - private boolean mCicleMenuBg; + private boolean mCircleMenuBg; /** @@ -251,7 +249,7 @@ public boolean onTouch(View v, MotionEvent event) { private ValueAnimator valueAnimator; - private boolean isExpaned = false; + private boolean isExpanded = false; private Drawable mBackground; @@ -259,7 +257,7 @@ public boolean onTouch(View v, MotionEvent event) { private FloatLogoMenu(Builder builder) { mBackMenuColor = builder.mBackMenuColor; mDrawRedPointNum = builder.mDrawRedPointNum; - mCicleMenuBg = builder.mCicleMenuBg; + mCircleMenuBg = builder.mCircleMenuBg; mLogoRes = builder.mLogoRes; mActivity = builder.mActivity; mOnMenuClickListener = builder.mOnMenuClickListener; @@ -287,7 +285,7 @@ private FloatLogoMenu(Builder builder) { public void setFloatItemList(List floatItems) { this.mFloatItems = floatItems; - caculateDotNum(); + calculateDotNum(); } /** @@ -314,7 +312,7 @@ private void initFloatWindow() { } } mScreenWidth = wManager.getDefaultDisplay().getWidth(); - int screenHeigth = wManager.getDefaultDisplay().getHeight(); + int screenHeight = wManager.getDefaultDisplay().getHeight(); //判断状态栏是否显示 如果不显示则statusBarHeight为0 mStatusBarHeight = dp2Px(25, mActivity); @@ -323,7 +321,7 @@ private void initFloatWindow() { wmParams.gravity = Gravity.LEFT | Gravity.TOP; wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; mHintLocation = getSetting(LOCATION_X, mDefaultLocation); - int defaultY = ((screenHeigth - mStatusBarHeight) / 2) / 3; + int defaultY = ((screenHeight - mStatusBarHeight) / 2) / 3; int y = getSetting(LOCATION_Y, defaultY); if (mHintLocation == LEFT) { wmParams.x = 0; @@ -346,14 +344,14 @@ private void initFloatWindow() { * 初始化悬浮球 */ private void initFloat() { - genarateLeftLineLayout(); - genarateRightLineLayout(); + generateLeftLineLayout(); + generateRightLineLayout(); mFloatLogo = new DotImageView(mActivity, mLogoRes); mFloatLogo.setLayoutParams(new WindowManager.LayoutParams(dp2Px(50, mActivity), dp2Px(50, mActivity))); mFloatLogo.setDrawNum(mDrawRedPointNum); mFloatLogo.setBgColor(mBackMenuColor); mFloatLogo.setDrawDarkBg(true); - caculateDotNum(); + calculateDotNum(); floatBtnEvent(); try { wManager.addView(mFloatLogo, wmParams); @@ -363,7 +361,7 @@ private void initFloat() { } - private void genarateLeftLineLayout() { + private void generateLeftLineLayout() { DotImageView floatLogo = new DotImageView(mActivity, mLogoRes); floatLogo.setLayoutParams(new WindowManager.LayoutParams(dp2Px(50, mActivity), dp2Px(50, mActivity))); floatLogo.setDrawNum(mDrawRedPointNum); @@ -380,7 +378,7 @@ private void genarateLeftLineLayout() { FloatMenuView mFloatMenuView = new FloatMenuView.Builder(mActivity) .setFloatItems(mFloatItems) .setBackgroundColor(Color.TRANSPARENT) - .setCicleBg(mCicleMenuBg) + .setCicleBg(mCircleMenuBg) .setStatus(FloatMenuView.STATUS_LEFT) .setMenuBackgroundColor(Color.TRANSPARENT) .drawNum(mDrawRedPointNum) @@ -394,20 +392,20 @@ private void genarateLeftLineLayout() { floatLogo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - if (isExpaned) { + if (isExpanded) { try { wManager.removeViewImmediate(rootView); wManager.addView(FloatLogoMenu.this.mFloatLogo, wmParams); } catch (Exception e) { e.printStackTrace(); } - isExpaned = false; + isExpanded = false; } } }); } - private void genarateRightLineLayout() { + private void generateRightLineLayout() { final DotImageView floatLogo = new DotImageView(mActivity, mLogoRes); floatLogo.setLayoutParams(new WindowManager.LayoutParams(dp2Px(50, mActivity), dp2Px(50, mActivity))); floatLogo.setDrawNum(mDrawRedPointNum); @@ -416,14 +414,14 @@ private void genarateRightLineLayout() { floatLogo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - if (isExpaned) { + if (isExpanded) { try { wManager.removeViewImmediate(rootViewRight); wManager.addView(FloatLogoMenu.this.mFloatLogo, wmParams); } catch (Exception e) { e.printStackTrace(); } - isExpaned = false; + isExpanded = false; } } }); @@ -440,7 +438,7 @@ public void onClick(View v) { FloatMenuView mFloatMenuView = new FloatMenuView.Builder(mActivity) .setFloatItems(mFloatItems) .setBackgroundColor(Color.TRANSPARENT) - .setCicleBg(mCicleMenuBg) + .setCicleBg(mCircleMenuBg) .setStatus(FloatMenuView.STATUS_RIGHT) .setMenuBackgroundColor(Color.TRANSPARENT) .drawNum(mDrawRedPointNum) @@ -460,18 +458,18 @@ private void initTimer() { mHideTimer = new CountDownTimer(2000, 10) { //悬浮窗超过5秒没有操作的话会自动隐藏 @Override public void onTick(long millisUntilFinished) { - if (isExpaned) { + if (isExpanded) { mHideTimer.cancel(); } } @Override public void onFinish() { - if (isExpaned) { + if (isExpanded) { mHideTimer.cancel(); return; } - if (!isDraging) { + if (!isDrag) { if (mHintLocation == LEFT) { mFloatLogo.setStatus(DotImageView.HIDE_LEFT); mFloatLogo.setDrawDarkBg(true); @@ -513,11 +511,11 @@ public void dismiss() { * 悬浮窗的点击事件和touch事件的切换 */ private void floatBtnEvent() { - //这里的onCick只有 touchListener = mDefaultOnTouchListerner 才会触发 + //这里的onClick只有 touchListener = mDefaultOnTouchListener 才会触发 // mFloatLogo.setOnClickListener(new OnClickListener() { // @Override // public void onClick(View v) { -// if (!isDraging) { +// if (!isDrag) { // if (mFloatLogo.getStatus() != DotImageView.NORMAL) { // mFloatLogo.setBitmap(mLogoRes); // mFloatLogo.setStatus(DotImageView.NORMAL); @@ -538,7 +536,7 @@ private void floatBtnEvent() { * 悬浮窗touch事件的 down 事件 */ private void floatEventDown(MotionEvent event) { - isDraging = false; + isDrag = false; mHideTimer.cancel(); if (mFloatLogo.getStatus() != DotImageView.NORMAL) { mFloatLogo.setStatus(DotImageView.NORMAL); @@ -550,7 +548,7 @@ private void floatEventDown(MotionEvent event) { mFloatLogo.setStatus(DotImageView.NORMAL); } mXInView = event.getX(); - mYinview = event.getY(); + mYinView = event.getY(); mXDownInScreen = event.getRawX(); mYDownInScreen = event.getRawY(); mXInScreen = event.getRawX(); @@ -570,14 +568,14 @@ private void floatEventMove(MotionEvent event) { //连续移动的距离超过3则更新一次视图位置 if (Math.abs(mXInScreen - mXDownInScreen) > mFloatLogo.getWidth() / 4 || Math.abs(mYInScreen - mYDownInScreen) > mFloatLogo.getWidth() / 4) { wmParams.x = (int) (mXInScreen - mXInView); - wmParams.y = (int) (mYInScreen - mYinview) - mFloatLogo.getHeight() / 2; + wmParams.y = (int) (mYInScreen - mYinView) - mFloatLogo.getHeight() / 2; updateViewPosition(); // 手指移动的时候更新小悬浮窗的位置 double a = mScreenWidth / 2; float offset = (float) ((a - (Math.abs(wmParams.x - a))) / a); - mFloatLogo.setDraging(isDraging, offset, false); + mFloatLogo.setDrag(isDrag, offset, false); } else { - isDraging = false; - mFloatLogo.setDraging(false, 0, true); + isDrag = false; + mFloatLogo.setDrag(false, 0, true); } } @@ -616,8 +614,8 @@ public void onAnimationEnd(Animator animation) { wmParams.x = mScreenWidth; } updateViewPosition(); - isDraging = false; - mFloatLogo.setDraging(false, 0, true); + isDrag = false; + mFloatLogo.setDrag(false, 0, true); mHideTimer.start(); } @@ -630,8 +628,8 @@ public void onAnimationCancel(Animator animation) { } updateViewPosition(); - isDraging = false; - mFloatLogo.setDraging(false, 0, true); + isDrag = false; + mFloatLogo.setDrag(false, 0, true); mHideTimer.start(); } @@ -648,7 +646,7 @@ public void onAnimationRepeat(Animator animation) { // //这里需要判断如果如果手指所在位置和logo所在位置在一个宽度内则不移动, if (Math.abs(mXInScreen - mXDownInScreen) > mFloatLogo.getWidth() / 5 || Math.abs(mYInScreen - mYDownInScreen) > mFloatLogo.getHeight() / 5) { - isDraging = false; + isDrag = false; } else { openMenu(); } @@ -669,7 +667,7 @@ private void checkPosition() { updateViewPosition(); double a = mScreenWidth / 2; float offset = (float) ((a - (Math.abs(wmParams.x - a))) / a); - mFloatLogo.setDraging(isDraging, offset, true); + mFloatLogo.setDrag(isDrag, offset, true); return; } @@ -685,7 +683,7 @@ private void checkPosition() { updateViewPosition(); - isDraging = false; + isDrag = false; } @@ -695,9 +693,9 @@ private void checkPosition() { * 打开菜单 */ private void openMenu() { - if (isDraging) return; + if (isDrag) return; - if (!isExpaned) { + if (!isExpanded) { mFloatLogo.setDrawDarkBg(false); try { wManager.removeViewImmediate(mFloatLogo); @@ -710,11 +708,11 @@ private void openMenu() { e.printStackTrace(); } - isExpaned = true; + isExpanded = true; mHideTimer.cancel(); } else { mFloatLogo.setDrawDarkBg(true); - if (isExpaned) { + if (isExpanded) { try { wManager.removeViewImmediate(mHintLocation == LEFT ? rootView : rootViewRight); wManager.addView(mFloatLogo, wmParams); @@ -722,7 +720,7 @@ private void openMenu() { e.printStackTrace(); } - isExpaned = false; + isExpanded = false; } mHideTimer.start(); } @@ -734,12 +732,12 @@ private void openMenu() { * 更新悬浮窗在屏幕中的位置。 */ private void updateViewPosition() { - isDraging = true; + isDrag = true; try { - if (!isExpaned) { + if (!isExpanded) { if (wmParams.y - mFloatLogo.getHeight() / 2 <= 0) { wmParams.y = mStatusBarHeight; - isDraging = true; + isDrag = true; } wManager.updateViewLayout(mFloatLogo, wmParams); } @@ -768,27 +766,27 @@ public void show() { * 关闭菜单 */ public void hide() { - destoryFloat(); + destroyFloat(); } /** * 移除所有悬浮窗 释放资源 */ - public void destoryFloat() { + public void destroyFloat() { //记录上次的位置logo的停放位置,以备下次恢复 saveSetting(LOCATION_X, mHintLocation); saveSetting(LOCATION_Y, wmParams.y); mFloatLogo.clearAnimation(); try { mHideTimer.cancel(); - if (isExpaned) { + if (isExpanded) { wManager.removeViewImmediate(mHintLocation == LEFT ? rootView : rootViewRight); } else { wManager.removeViewImmediate(mFloatLogo); } - isExpaned = false; - isDraging = false; + isExpanded = false; + isDrag = false; } catch (Exception e) { e.printStackTrace(); } @@ -797,7 +795,7 @@ public void destoryFloat() { /** * 计算总红点数 */ - private void caculateDotNum() { + private void calculateDotNum() { int dotNum = 0; for (FloatItem floatItem : mFloatItems) { if (!TextUtils.isEmpty(floatItem.getDotNum())) { @@ -823,7 +821,7 @@ public void onAnimationStart(Animator animation) { @Override public void onAnimationEnd(Animator animation) { - if (!isDraging) { + if (!isDrag) { mHideTimer.start(); } } @@ -908,7 +906,7 @@ public void setValueAnimator() { public static final class Builder { private int mBackMenuColor; private boolean mDrawRedPointNum; - private boolean mCicleMenuBg; + private boolean mCircleMenuBg; private Bitmap mLogoRes; private int mDefaultLocation; private List mFloatItems = new ArrayList<>(); @@ -946,7 +944,7 @@ public Builder drawRedPointNum(boolean val) { } public Builder drawCicleMenuBg(boolean val) { - mCicleMenuBg = val; + mCircleMenuBg = val; return this; } diff --git a/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatMenuView.java b/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatMenuView.java index 9c7cd67..974a2a4 100644 --- a/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatMenuView.java +++ b/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatMenuView.java @@ -61,7 +61,7 @@ public class FloatMenuView extends View { private int mFontSizeTitle = sp2px(12);//菜单项的title的文字大小 private float mFirstItemTop;//菜单项的最小y值,上面起始那条线 private boolean mDrawNum = false;//是否绘制数字,false则只绘制红点 - private boolean cicleBg = false;//菜单项背景是否绘制成圆形,false则绘制矩阵 + private boolean circleBg = false;//菜单项背景是否绘制成圆形,false则绘制矩阵 private List mItemList = new ArrayList<>();//菜单项的内容 private List mItemRectList = new ArrayList<>();//菜单项所占用位置的记录,用于判断点击事件 @@ -81,8 +81,8 @@ public void drawNum(boolean drawNum) { } //设置是否绘制圆形菜单,否则矩阵 - public void setCicleBg(boolean cicleBg) { - this.cicleBg = cicleBg; + public void setCircleBg(boolean circleBg) { + this.circleBg = circleBg; } //用于标记所依赖的view的screen的坐标,实际view的坐标是window坐标,所以这里后面会减去状态栏的高度 @@ -165,7 +165,6 @@ protected void onDraw(Canvas canvas) { case STATUS_RIGHT: drawBackground(canvas); drawFloatLeftItem(canvas); - break; } } @@ -181,7 +180,7 @@ private void drawFloatLeftItem(Canvas canvas) { for (int i = 0; i < mItemList.size(); i++) { canvas.save(); mPaint.setColor(mMenuBackgroundColor); - if (cicleBg) { + if (circleBg) { float cx = (mItemLeft + i * mItemWidth) + mItemWidth / 2;//x中心点 float cy = mFirstItemTop + mItemHeight / 2;//y中心点 float radius = mItemWidth / 2;//半径 @@ -203,32 +202,32 @@ private void drawIconTitleDot(Canvas canvas, int position) { FloatItem floatItem = mItemList.get(position); if (floatItem.icon != null) { - float centryX = mItemLeft + mItemWidth / 2 + (mItemWidth) * position;//计算每一个item的中心点x的坐标值 - float centryY = mFirstItemTop + mItemHeight / 2;//计算每一个item的中心点的y坐标值 + float centerX = mItemLeft + mItemWidth / 2 + (mItemWidth) * position;//计算每一个item的中心点x的坐标值 + float centerY = mFirstItemTop + mItemHeight / 2;//计算每一个item的中心点的y坐标值 - float left = centryX - mItemWidth / 4;//计算icon的左坐标值 中心点往左移宽度的四分之一 - float right = centryX + mItemWidth / 4; + float left = centerX - mItemWidth / 4;//计算icon的左坐标值 中心点往左移宽度的四分之一 + float right = centerX + mItemWidth / 4; float iconH = mItemHeight * 0.5f;//计算出icon的宽度 = icon的高度 float textH = getTextHeight(floatItem.getTitle(), mPaint); - float paddH = (mItemHeight - iconH - textH - mRadius) / 2;//总高度减去文字的高度,减去icon高度,再除以2就是上下的间距剩余 + float paddingH = (mItemHeight - iconH - textH - mRadius) / 2;//总高度减去文字的高度,减去icon高度,再除以2就是上下的间距剩余 - float top = centryY - mItemHeight / 2 + paddH;//计算icon的上坐标值 + float top = centerY - mItemHeight / 2 + paddingH;//计算icon的上坐标值 float bottom = top + iconH;//剩下的高度空间用于画文字 //画icon mPaint.setColor(floatItem.titleColor); canvas.drawBitmap(floatItem.icon, null, new RectF(left, top, right, bottom), mPaint); if (!TextUtils.isEmpty(floatItem.dotNum) && !floatItem.dotNum.equals("0")) { - float dotLeft = centryX + mItemWidth / 5; + float dotLeft = centerX + mItemWidth / 5; float cx = dotLeft + mCorner;//x中心点 float cy = top + mCorner;//y中心点 - int radiu = mDrawNum ? mRadius : mRedPointRadiuWithNoNum; + int radius = mDrawNum ? mRadius : mRedPointRadiuWithNoNum; //画红点 mPaint.setColor(Color.RED); - canvas.drawCircle(cx, cy, radiu, mPaint); + canvas.drawCircle(cx, cy, radius, mPaint); if (mDrawNum) { mPaint.setColor(Color.WHITE); mPaint.setTextSize(mFontSizePointNum); @@ -239,7 +238,7 @@ private void drawIconTitleDot(Canvas canvas, int position) { mPaint.setColor(floatItem.titleColor); mPaint.setTextSize(mFontSizeTitle); //画menu title - canvas.drawText(floatItem.title, centryX - getTextWidth(floatItem.getTitle(), mPaint) / 2, centryY + iconH / 2 + getTextHeight(floatItem.getTitle(), mPaint) / 2, mPaint); + canvas.drawText(floatItem.title, centerX - getTextWidth(floatItem.getTitle(), mPaint) / 2, centerY + iconH / 2 + getTextHeight(floatItem.getTitle(), mPaint) / 2, mPaint); } } @@ -388,7 +387,7 @@ public FloatMenuView create() { FloatMenuView floatMenuView = new FloatMenuView(mActivity, mStatus); floatMenuView.setItemList(mFloatItems); floatMenuView.setBackgroundColor(mBgColor); - floatMenuView.setCicleBg(cicleBg); + floatMenuView.setCircleBg(cicleBg); floatMenuView.startAnim(); floatMenuView.drawNum(mDrawNum); floatMenuView.setMenuBackgroundColor(mMenuBackgroundColor); diff --git a/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDailog.java b/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDialog.java similarity index 90% rename from FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDailog.java rename to FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDialog.java index ef5673d..c824cf3 100644 --- a/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDailog.java +++ b/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDialog.java @@ -36,7 +36,7 @@ * Created by wengyiming on 2017/8/25. */ -public abstract class BaseFloatDailog { +public abstract class BaseFloatDialog { /** * 悬浮球 坐落 左 右 标记 @@ -91,7 +91,7 @@ public abstract class BaseFloatDailog { /** * 记录手指按下时在小悬浮窗的View上的纵坐标的值 */ - private float mYinview; + private float mYinView; /** * 记录屏幕的宽度 @@ -136,18 +136,18 @@ public abstract class BaseFloatDailog { /** * 标记是否拖动中 */ - private boolean isDraging = false; + private boolean isDrag = false; /** * 用于恢复悬浮球的location的属性动画值 */ private int mResetLocationValue; - public boolean isApplictionDialog() { - return isApplictionDialog; + public boolean isApplicationDialog() { + return isApplicationDialog; } - private boolean isApplictionDialog = false; + private boolean isApplicationDialog = false; /** * 这个事件用于处理移动、自定义点击或者其它事情,return true可以保证onclick事件失效 @@ -172,7 +172,7 @@ public boolean onTouch(View v, MotionEvent event) { }; ValueAnimator valueAnimator = null; - private boolean isExpaned = false; + private boolean isExpanded = false; private View logoView; private View rightView; @@ -186,7 +186,7 @@ public Context getContext() { return mActivity; } - public static class FloatDialogImp extends BaseFloatDailog { + public static class FloatDialogImp extends BaseFloatDialog { public FloatDialogImp(Context context, GetViewCallback getViewCallback) { @@ -218,7 +218,7 @@ protected void resetLogoViewSize(int hintLocation, View logoView) { } @Override - protected void dragingLogoViewOffset(View logoView, boolean isDraging, boolean isResetPosition, float offset) { + protected void dragLogoViewOffset(View logoView, boolean isDraging, boolean isResetPosition, float offset) { } @@ -248,12 +248,12 @@ protected void leftOrRightViewClosed(View logoView) { } @Override - protected void onDestoryed() { + protected void onDestroyed() { } } - protected BaseFloatDailog(Context context, GetViewCallback getViewCallback) { + protected BaseFloatDialog(Context context, GetViewCallback getViewCallback) { this(context); this.mGetViewCallback = getViewCallback; if (mGetViewCallback == null) { @@ -262,7 +262,7 @@ protected BaseFloatDailog(Context context, GetViewCallback getViewCallback) { } - protected BaseFloatDailog(Context context) { + protected BaseFloatDialog(Context context) { this.mActivity = context; initFloatWindow(); initTimer(); @@ -292,18 +292,18 @@ private void initTimer() { mHideTimer = new CountDownTimer(2000, 10) { //悬浮窗超过5秒没有操作的话会自动隐藏 @Override public void onTick(long millisUntilFinished) { - if (isExpaned) { + if (isExpanded) { mHideTimer.cancel(); } } @Override public void onFinish() { - if (isExpaned) { + if (isExpanded) { mHideTimer.cancel(); return; } - if (!isDraging) { + if (!isDrag) { if (mHintLocation == LEFT) { if (mGetViewCallback == null) { shrinkLeftLogoView(logoView); @@ -336,7 +336,7 @@ private void initFloatWindow() { wManager = activity.getWindowManager(); //类似dialog,寄托在activity的windows上,activity关闭时需要关闭当前float wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION; - isApplictionDialog = true; + isApplicationDialog = true; } else { wManager = (WindowManager) mActivity.getSystemService(Context.WINDOW_SERVICE); //判断状态栏是否显示 如果不显示则statusBarHeight为0 @@ -350,15 +350,15 @@ private void initFloatWindow() { } else { wmParams.type = WindowManager.LayoutParams.TYPE_PHONE; } - isApplictionDialog = false; + isApplicationDialog = false; } mScreenWidth = wManager.getDefaultDisplay().getWidth(); - int screenHeigth = wManager.getDefaultDisplay().getHeight(); + int screenHeight = wManager.getDefaultDisplay().getHeight(); wmParams.format = PixelFormat.RGBA_8888; wmParams.gravity = Gravity.LEFT | Gravity.TOP; wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; mHintLocation = getSetting(LOCATION_X, mDefaultLocation); - int defaultY = ((screenHeigth) / 2) / 3; + int defaultY = ((screenHeight) / 2) / 3; int y = getSetting(LOCATION_Y, defaultY); if (mHintLocation == LEFT) { wmParams.x = 0; @@ -379,7 +379,7 @@ private void initFloatWindow() { * 悬浮窗touch事件的 down 事件 */ private void floatEventDown(MotionEvent event) { - isDraging = false; + isDrag = false; mHideTimer.cancel(); if (mGetViewCallback == null) { @@ -389,7 +389,7 @@ private void floatEventDown(MotionEvent event) { } mXInView = event.getX(); - mYinview = event.getY(); + mYinView = event.getY(); mXDownInScreen = event.getRawX(); mYDownInScreen = event.getRawY(); mXInScreen = event.getRawX(); @@ -414,21 +414,21 @@ private void floatEventMove(MotionEvent event) { //连续移动的距离超过3则更新一次视图位置 if (Math.abs(mXInScreen - mXDownInScreen) > logoView.getWidth() / 4 || Math.abs(mYInScreen - mYDownInScreen) > logoView.getWidth() / 4) { wmParams.x = (int) (mXInScreen - mXInView); - wmParams.y = (int) (mYInScreen - mYinview) - logoView.getHeight() / 2; + wmParams.y = (int) (mYInScreen - mYinView) - logoView.getHeight() / 2; updateViewPosition(); // 手指移动的时候更新小悬浮窗的位置 double a = mScreenWidth / 2; float offset = (float) ((a - (Math.abs(wmParams.x - a))) / a); if (mGetViewCallback == null) { - dragingLogoViewOffset(logoView, isDraging, false, offset); + dragLogoViewOffset(logoView, isDrag, false, offset); } else { - mGetViewCallback.dragingLogoViewOffset(logoView, isDraging, false, offset); + mGetViewCallback.dragingLogoViewOffset(logoView, isDrag, false, offset); } } else { - isDraging = false; -// logoView.setDraging(false, 0, true); + isDrag = false; +// logoView.setDrag(false, 0, true); if (mGetViewCallback == null) { - dragingLogoViewOffset(logoView, false, true, 0); + dragLogoViewOffset(logoView, false, true, 0); } else { mGetViewCallback.dragingLogoViewOffset(logoView, false, true, 0); } @@ -472,9 +472,9 @@ public void onAnimationEnd(Animator animation) { wmParams.x = mScreenWidth; } updateViewPosition(); - isDraging = false; + isDrag = false; if (mGetViewCallback == null) { - dragingLogoViewOffset(logoView, false, true, 0); + dragLogoViewOffset(logoView, false, true, 0); } else { mGetViewCallback.dragingLogoViewOffset(logoView, false, true, 0); } @@ -490,9 +490,9 @@ public void onAnimationCancel(Animator animation) { } updateViewPosition(); - isDraging = false; + isDrag = false; if (mGetViewCallback == null) { - dragingLogoViewOffset(logoView, false, true, 0); + dragLogoViewOffset(logoView, false, true, 0); } else { mGetViewCallback.dragingLogoViewOffset(logoView, false, true, 0); } @@ -511,7 +511,7 @@ public void onAnimationRepeat(Animator animation) { // //这里需要判断如果如果手指所在位置和logo所在位置在一个宽度内则不移动, if (Math.abs(mXInScreen - mXDownInScreen) > logoView.getWidth() / 5 || Math.abs(mYInScreen - mYDownInScreen) > logoView.getHeight() / 5) { - isDraging = false; + isDrag = false; } else { openMenu(); } @@ -524,7 +524,7 @@ public void onAnimationRepeat(Animator animation) { private Runnable updatePositionRunnable = new Runnable() { @Override public void run() { - isDraging = true; + isDrag = true; checkPosition(); } }; @@ -543,11 +543,11 @@ private void checkPosition() { updateViewPosition(); double a = mScreenWidth / 2; float offset = (float) ((a - (Math.abs(wmParams.x - a))) / a); -// logoView.setDraging(isDraging, offset, true); +// logoView.setDrag(isDrag, offset, true); if (mGetViewCallback == null) { - dragingLogoViewOffset(logoView, false, true, 0); + dragLogoViewOffset(logoView, false, true, 0); } else { - mGetViewCallback.dragingLogoViewOffset(logoView, isDraging, true, offset); + mGetViewCallback.dragingLogoViewOffset(logoView, isDrag, true, offset); } return; @@ -565,7 +565,7 @@ private void checkPosition() { updateViewPosition(); - isDraging = false; + isDrag = false; } @@ -590,9 +590,9 @@ public void show() { * 打开菜单 */ private void openMenu() { - if (isDraging) return; + if (isDrag) return; - if (!isExpaned) { + if (!isExpanded) { // logoView.setDrawDarkBg(false); try { wManager.removeViewImmediate(logoView); @@ -617,7 +617,7 @@ private void openMenu() { e.printStackTrace(); } - isExpaned = true; + isExpanded = true; mHideTimer.cancel(); } else { // logoView.setDrawDarkBg(true); @@ -634,7 +634,7 @@ private void openMenu() { e.printStackTrace(); } - isExpaned = false; + isExpanded = false; mHideTimer.start(); } @@ -645,12 +645,12 @@ private void openMenu() { * 更新悬浮窗在屏幕中的位置。 */ private void updateViewPosition() { - isDraging = true; + isDrag = true; try { - if (!isExpaned) { + if (!isExpanded) { if (wmParams.y - logoView.getHeight() / 2 <= 0) { wmParams.y = 25; - isDraging = true; + isDrag = true; } wManager.updateViewLayout(logoView, wmParams); } @@ -669,15 +669,15 @@ public void dismiss() { logoView.clearAnimation(); try { mHideTimer.cancel(); - if (isExpaned) { + if (isExpanded) { wManager.removeViewImmediate(mHintLocation == LEFT ? leftView : rightView); } else { wManager.removeViewImmediate(logoView); } - isExpaned = false; - isDraging = false; + isExpanded = false; + isDrag = false; if (mGetViewCallback == null) { - onDestoryed(); + onDestroyed(); } else { mGetViewCallback.onDestoryed(); } @@ -694,7 +694,7 @@ public void dismiss() { protected abstract void resetLogoViewSize(int hintLocation, View logoView);//logo恢复原始大小 - protected abstract void dragingLogoViewOffset(View logoView, boolean isDraging, boolean isResetPosition, float offset); + protected abstract void dragLogoViewOffset(View logoView, boolean isDraging, boolean isResetPosition, float offset); protected abstract void shrinkLeftLogoView(View logoView);//logo左边收缩 @@ -706,7 +706,7 @@ public void dismiss() { protected abstract void leftOrRightViewClosed(View logoView); - protected abstract void onDestoryed(); + protected abstract void onDestroyed(); public interface GetViewCallback { View getLeftView(LayoutInflater inflater, View.OnTouchListener touchListener); diff --git a/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MainActivity.java b/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MainActivity.java index 9bb9900..e8102d5 100644 --- a/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MainActivity.java +++ b/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MainActivity.java @@ -33,7 +33,7 @@ import com.yw.game.floatmenu.FloatItem; import com.yw.game.floatmenu.FloatLogoMenu; import com.yw.game.floatmenu.FloatMenuView; -import com.yw.game.floatmenu.customfloat.BaseFloatDailog; +import com.yw.game.floatmenu.customfloat.BaseFloatDialog; import java.util.ArrayList; @@ -52,7 +52,7 @@ public class MainActivity extends Activity { private int[] menuIcons = new int[]{R.drawable.yw_menu_account, R.drawable.yw_menu_fb, R.drawable.yw_menu_msg}; - BaseFloatDailog mBaseFloatDailog; + BaseFloatDialog mBaseFloatDialog; @Override protected void onCreate(Bundle savedInstanceState) { @@ -105,15 +105,15 @@ public void run() { } - if (mBaseFloatDailog != null) return; + if (mBaseFloatDialog != null) return; - mBaseFloatDailog = new MyFloatDialog(this); - //mBaseFloatDailog.show(); + mBaseFloatDialog = new MyFloatDialog(this); +// mBaseFloatDialog.show(); } private void showWithCallback() { - mBaseFloatDailog = new BaseFloatDailog.FloatDialogImp(this, new BaseFloatDailog.GetViewCallback() { + mBaseFloatDialog = new BaseFloatDialog.FloatDialogImp(this, new BaseFloatDialog.GetViewCallback() { @Override public View getLeftView(LayoutInflater inflater, View.OnTouchListener touchListener) { LinearLayout linearLayout = new LinearLayout(mActivity); @@ -260,7 +260,7 @@ public void onDestoryed() { } }); - mBaseFloatDailog.show(); + mBaseFloatDialog.show(); } @@ -290,7 +290,7 @@ protected void onDestroy() { destroyFloat(); super.onDestroy(); - if (mBaseFloatDailog != null) mBaseFloatDailog.dismiss(); + if (mBaseFloatDialog != null) mBaseFloatDialog.dismiss(); } @@ -303,7 +303,7 @@ public void hideFloat() { public void destroyFloat() { if (mFloatMenu != null) { - mFloatMenu.destoryFloat(); + mFloatMenu.destroyFloat(); } mFloatMenu = null; mActivity = null; diff --git a/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MyFloatDialog.java b/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MyFloatDialog.java index f78b98e..063e0b3 100644 --- a/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MyFloatDialog.java +++ b/FloatMenuDemo/src/main/java/com/yw/game/floatmenu/demo/MyFloatDialog.java @@ -8,13 +8,13 @@ import android.widget.ImageView; import android.widget.Toast; -import com.yw.game.floatmenu.customfloat.BaseFloatDailog; +import com.yw.game.floatmenu.customfloat.BaseFloatDialog; /** * Created by wengyiming on 2017/9/13. */ -public class MyFloatDialog extends BaseFloatDailog { +public class MyFloatDialog extends BaseFloatDialog { public MyFloatDialog(Context context) { @@ -54,7 +54,7 @@ protected void resetLogoViewSize(int hintLocation, View logoView) { } @Override - protected void dragingLogoViewOffset(View logoView, boolean isDraging, boolean isResetPosition, float offset) { + protected void dragLogoViewOffset(View logoView, boolean isDraging, boolean isResetPosition, float offset) { if (isDraging && offset > 0) { logoView.setBackgroundDrawable(null); logoView.setScaleX(1 + offset); @@ -102,8 +102,8 @@ public void leftOrRightViewClosed(View smallView) { } @Override - protected void onDestoryed() { - if(isApplictionDialog()){ + protected void onDestroyed() { + if(isApplicationDialog()){ if(getContext() instanceof Activity){ dismiss(); } From 06af33651d94f5345995b9b3729205ad8b3f2d0c Mon Sep 17 00:00:00 2001 From: wengyiming Date: Sun, 5 Jan 2020 17:40:17 +0800 Subject: [PATCH 4/8] fix: targetapi --- FloatMenu/build.gradle | 6 +++--- FloatMenuDemo/build.gradle | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/FloatMenu/build.gradle b/FloatMenu/build.gradle index 3191db7..0337c6f 100644 --- a/FloatMenu/build.gradle +++ b/FloatMenu/build.gradle @@ -7,11 +7,11 @@ apply plugin: 'com.jfrog.bintray' version = "2.2.0" android { - compileSdkVersion 25 + compileSdkVersion 28 defaultConfig { minSdkVersion 11 - targetSdkVersion 25 + targetSdkVersion 28 versionCode 1 versionName "1.1" } @@ -40,7 +40,7 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:support-v4:25.3.1' + implementation 'com.android.support:support-v4:28.0.0' } diff --git a/FloatMenuDemo/build.gradle b/FloatMenuDemo/build.gradle index c910ea7..b86b9ac 100644 --- a/FloatMenuDemo/build.gradle +++ b/FloatMenuDemo/build.gradle @@ -24,6 +24,7 @@ dependencies { testImplementation 'junit:junit:4.12' implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.yw.game.sclib:shortCutLib:0.0.3' - implementation project(':FloatMenu') implementation 'com.android.support:support-v4:28.0.0' + implementation project(':FloatMenu') + // implementation 'com.yw.game.floatmenu:FloatMenu:2.1.0' } From 6ef234b70eb70f266d9bb72e7010c7da2fa24995 Mon Sep 17 00:00:00 2001 From: wengyiming Date: Sun, 5 Jan 2020 17:43:36 +0800 Subject: [PATCH 5/8] fix: update gitignore --- .gitignore | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f0adcc4..95a973d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,14 @@ *.iml .gradle /local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +/.idea .DS_Store /build /captures -/.idea -.idea +.externalNativeBuild From 4b6ab002f2d8fe1ea28864f5036ec9af17bc3fd5 Mon Sep 17 00:00:00 2001 From: wengyiming Date: Tue, 7 Apr 2020 17:06:03 +0800 Subject: [PATCH 6/8] =?UTF-8?q?feat:=20=E9=80=82=E9=85=8DO+?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customfloat/BaseFloatDialog.java | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDialog.java b/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDialog.java index c824cf3..0516b8c 100644 --- a/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDialog.java +++ b/FloatMenu/src/main/java/com/yw/game/floatmenu/customfloat/BaseFloatDialog.java @@ -181,7 +181,6 @@ public boolean onTouch(View v, MotionEvent event) { private GetViewCallback mGetViewCallback; - public Context getContext() { return mActivity; } @@ -323,9 +322,6 @@ public void onFinish() { } - - - /** * 初始化悬浮球 window */ @@ -340,13 +336,14 @@ private void initFloatWindow() { } else { wManager = (WindowManager) mActivity.getSystemService(Context.WINDOW_SERVICE); //判断状态栏是否显示 如果不显示则statusBarHeight为0 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (Build.VERSION.SDK_INT > 23) { - //在android7.1以上系统需要使用TYPE_PHONE类型 配合运行时权限 - wmParams.type = WindowManager.LayoutParams.TYPE_PHONE; - } else { - wmParams.type = WindowManager.LayoutParams.TYPE_TOAST; - } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + //在android7.1以上系统需要使用TYPE_PHONE类型 配合运行时权限 + wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + //在android7.1以上系统需要使用TYPE_PHONE类型 配合运行时权限 + wmParams.type = WindowManager.LayoutParams.TYPE_PHONE; + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + wmParams.type = WindowManager.LayoutParams.TYPE_TOAST; } else { wmParams.type = WindowManager.LayoutParams.TYPE_PHONE; } @@ -399,10 +396,6 @@ private void floatEventDown(MotionEvent event) { } - - - - /** * 悬浮窗touch事件的 move 事件 */ From 58721ee106013bfd75e86518ec8d63daf2f13160 Mon Sep 17 00:00:00 2001 From: wengyiming Date: Tue, 7 Apr 2020 17:12:01 +0800 Subject: [PATCH 7/8] =?UTF-8?q?feat:=20=E9=80=82=E9=85=8DO+?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yw/game/floatmenu/FloatLogoMenu.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatLogoMenu.java b/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatLogoMenu.java index 950174d..738dc30 100644 --- a/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatLogoMenu.java +++ b/FloatMenu/src/main/java/com/yw/game/floatmenu/FloatLogoMenu.java @@ -300,13 +300,14 @@ private void initFloatWindow() { wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION; } else { wManager = (WindowManager) mActivity.getSystemService(Context.WINDOW_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (Build.VERSION.SDK_INT > 23) { - //在android7.1以上系统需要使用TYPE_PHONE类型 配合运行时权限 - wmParams.type = WindowManager.LayoutParams.TYPE_PHONE; - } else { - wmParams.type = WindowManager.LayoutParams.TYPE_TOAST; - } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + //在android7.1以上系统需要使用TYPE_PHONE类型 配合运行时权限 + wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + //在android7.1以上系统需要使用TYPE_PHONE类型 配合运行时权限 + wmParams.type = WindowManager.LayoutParams.TYPE_PHONE; + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + wmParams.type = WindowManager.LayoutParams.TYPE_TOAST; } else { wmParams.type = WindowManager.LayoutParams.TYPE_PHONE; } From ad85459edaf567627d7a9aa8f0cd7b04714c2d85 Mon Sep 17 00:00:00 2001 From: wengyiming Date: Tue, 7 Apr 2020 17:24:40 +0800 Subject: [PATCH 8/8] feat: gradle --- FloatMenuDemo/src/main/AndroidManifest.xml | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/FloatMenuDemo/src/main/AndroidManifest.xml b/FloatMenuDemo/src/main/AndroidManifest.xml index 7c04d01..5360bea 100644 --- a/FloatMenuDemo/src/main/AndroidManifest.xml +++ b/FloatMenuDemo/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ - // .withContext(mActivity.getApplication())需要此权限 + diff --git a/build.gradle b/build.gradle index 3d95be2..5ccf9e1 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.6.1' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3f86286..58ce8c6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Mar 31 11:25:06 CST 2019 +#Tue Apr 07 17:13:25 CST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip