更改积分"返回活动"浮窗的实现方式

This commit is contained in:
juntao
2021-07-15 18:11:12 +08:00
parent 3c54e4313c
commit 5eee8c6785
20 changed files with 240 additions and 220 deletions

View File

@ -1,11 +1,9 @@
package com.gh.base;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@ -15,7 +13,6 @@ 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;
@ -49,12 +46,10 @@ import com.gh.gamecenter.BuildConfig;
import com.gh.gamecenter.LoginActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.SplashScreenActivity;
import com.gh.gamecenter.energy.EnergyCenterActivity;
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;
@ -165,10 +160,6 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy
}
}
}
if (this.getClass().getName().equals(EnergyCenterActivity.class.getName())) {
SPUtils.setBoolean(Constants.SP_SHOW_TASK_FLOAT, false);
}
}
@SuppressWarnings("ConstantConditions")
@ -308,10 +299,6 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy
@Override
protected void onPause() {
super.onPause();
if (mWM != null && mTaskBackView != null && mHasAddTaskFloat) {
mWM.removeView(mTaskBackView);
mHasAddTaskFloat = false;
}
if (isFinishing()) {
onFinish();
@ -323,90 +310,6 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy
}
}
@Override
protected void onResume() {
super.onResume();
if (SPUtils.getBoolean(Constants.SP_SHOW_TASK_FLOAT) && !this.getClass().getName().equals(EnergyCenterActivity.class.getName())) {
addTaskBackView();
mHasAddTaskFloat = true;
}
}
private void addTaskBackView() {
mWM = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
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;
});
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;
}
});
}
/**
* 此回调可用于确认当前 activity 已经执行了 finish() 方法并处于 isFinishing 状态
*/