diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index 41e932b1e2..62ddfc2ebc 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -15,6 +15,7 @@ import android.os.TransactionTooLargeException; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; +import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; @@ -50,6 +51,7 @@ import com.gh.gamecenter.eventbus.EBShowDialog; import com.lightgame.BaseAppCompatActivity; import com.lightgame.download.DownloadEntity; import com.lightgame.download.FileUtils; +import com.lightgame.utils.Util_System_Keyboard; import com.lightgame.utils.Utils; import com.tencent.tauth.Tencent; @@ -89,6 +91,7 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy private boolean mHasAddTaskFloat = false; private View mTaskBackView; private WindowManager mWM; + private WindowManager.LayoutParams mWmParams; protected final Handler mBaseHandler = new BaseHandler(this); @@ -314,22 +317,75 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy private void addTaskBackView() { mWM = (WindowManager) getSystemService(Context.WINDOW_SERVICE); - WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams(); - wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION; - wmParams.format = PixelFormat.RGBA_8888; - wmParams.gravity = Gravity.LEFT | Gravity.BOTTOM; - wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - wmParams.width = DisplayUtils.dip2px(76F); - wmParams.height = DisplayUtils.dip2px(36F); - wmParams.y = DisplayUtils.dip2px(114F); + mWmParams = new WindowManager.LayoutParams(); + mWmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION; + mWmParams.format = PixelFormat.RGBA_8888; + mWmParams.gravity = Gravity.LEFT | Gravity.BOTTOM; + mWmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; + mWmParams.width = DisplayUtils.dip2px(76F); + mWmParams.height = DisplayUtils.dip2px(36F); + mWmParams.y = SPUtils.getInt(Constants.SP_TASK_FLOAT_LAST_Y, DisplayUtils.dip2px(114F)); mTaskBackView = View.inflate(this, R.layout.layout_task_back, null); mTaskBackView.setOnClickListener(v -> { + // 如果当前是在键盘输入时,点击"返回任务"要先收起键盘 + Util_System_Keyboard.hideSoftKeyboard(this); startActivity(EnergyCenterActivity.Companion.getIntent(this)); SPUtils.setBoolean(Constants.SP_SHOW_TASK_FLOAT, false); mWM.removeView(mTaskBackView); mHasAddTaskFloat = false; }); - mWM.addView(mTaskBackView, wmParams); + setFloatTouchListener(); + mWM.addView(mTaskBackView, mWmParams); + } + + private void setFloatTouchListener() { + int screenHeight = getResources().getDisplayMetrics().heightPixels; + + mTaskBackView.setOnTouchListener(new View.OnTouchListener() { + + private int intervalY; + private int startY; + + @Override + public boolean onTouch(View v, MotionEvent event) { + final int y = (int) event.getRawY(); + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + intervalY = y; + startY = y; + break; + + case MotionEvent.ACTION_MOVE: + mWmParams.y -= (y - intervalY); + if (mWmParams.y < 0) { + mWmParams.y = 0; + } + + if (mWmParams.y > screenHeight) { + mWmParams.y = screenHeight; + } + + if (mWM != null && mTaskBackView != null && mHasAddTaskFloat) { + mWM.updateViewLayout(mTaskBackView, mWmParams); + } + + intervalY = y; + return true; + + case MotionEvent.ACTION_UP: + // 滑动距离少于10视为点击,返回false,否则视为拖动,返回true + if (Math.abs(y - startY) <= 10) { + return false; + } else { + // 记录位置 + SPUtils.setInt(Constants.SP_TASK_FLOAT_LAST_Y, mWmParams.y); + return true; + } + } + return false; + } + }); } diff --git a/app/src/main/java/com/gh/common/constant/Constants.java b/app/src/main/java/com/gh/common/constant/Constants.java index 72a5ae96d0..4183b9d7cf 100644 --- a/app/src/main/java/com/gh/common/constant/Constants.java +++ b/app/src/main/java/com/gh/common/constant/Constants.java @@ -180,8 +180,10 @@ public class Constants { // 头像挂件ID public static final String SP_CHOOSE_AVATAR_ID = "choose_avatar_id"; - //是否显示返回任务悬浮图标 + // 是否显示返回任务悬浮图标 public static final String SP_SHOW_TASK_FLOAT = "show_task_float"; + // 悬浮图标Y值 + public static final String SP_TASK_FLOAT_LAST_Y = "task_float_last_y"; //手机号码匹配规则 public static final String REGEX_MOBILE = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"; diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeViewModel.kt index a6d54074b6..1ca5825b43 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeViewModel.kt @@ -12,7 +12,6 @@ import com.gh.common.util.createRequestBody import com.gh.gamecenter.R import com.gh.gamecenter.entity.* import com.gh.gamecenter.eventbus.EBUserFollow -import com.gh.gamecenter.manager.UserManager import com.gh.gamecenter.retrofit.BiResponse import com.gh.gamecenter.retrofit.Response import com.gh.gamecenter.retrofit.RetrofitManager diff --git a/app/src/main/res/layout/fragment_energy_center.xml b/app/src/main/res/layout/fragment_energy_center.xml index 3cd942428e..32c4defde9 100644 --- a/app/src/main/res/layout/fragment_energy_center.xml +++ b/app/src/main/res/layout/fragment_energy_center.xml @@ -145,12 +145,15 @@ 签到规则 1、每日可领取2个光能、1个成长值,最多领取连续7天签到奖励,中断或签满7天则重新计算 2、连续签满7天可额外奖励1次免费抽奖机会 - 又有光能可以收了 - 收能量兑大奖 + 【光环助手】又有光能可以收了!收能量兑大奖! + 每日10点连续签到领能量,赶紧行动吧! 开启成功 系统日历将准时提醒您签到