package com.mytestapp;
|
|
import android.content.Intent;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.os.CountDownTimer;
|
import android.util.Log;
|
import android.view.MotionEvent;
|
import android.view.View;
|
import android.view.WindowManager;
|
|
/**
|
*/import androidx.appcompat.app.AppCompatActivity;
|
|
|
/**
|
* Author:
|
* Date: 2017/8/10
|
* Description: 用户实现手机屏保功能
|
*/
|
|
public abstract class BaseActivity extends AppCompatActivity {
|
|
public CountDownTimer countDownTimer;
|
private long advertisingTime = 5 * 60 * 1000;//定时跳转广告时间
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
//设置屏幕长亮
|
/*getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);*/
|
setContentView(getLayoutRes());
|
ActivityCollector.addActivity(this);
|
|
goneSystemUi(); //屏蔽底部系统虚拟按键
|
|
getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
|
@Override
|
public void onSystemUiVisibilityChange(int visibility) {
|
Log.e("", "onSystemUiVisibilityChange:OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO " );
|
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
|
//布局位于状态栏下方
|
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
//全屏
|
View.SYSTEM_UI_FLAG_FULLSCREEN |
|
//隐藏导航栏
|
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
|
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
|
if (Build.VERSION.SDK_INT >= 19) {
|
uiOptions |= 0x00001000;
|
} else {
|
uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
|
}
|
getWindow().getDecorView().setSystemUiVisibility(uiOptions);
|
}
|
});
|
}
|
|
protected abstract int getLayoutRes();
|
|
@Override
|
public boolean dispatchTouchEvent(MotionEvent ev) {
|
switch (ev.getAction()) {
|
case MotionEvent.ACTION_DOWN:
|
//有按下动作时取消定时
|
if (countDownTimer != null){
|
countDownTimer.cancel();
|
}
|
break;
|
case MotionEvent.ACTION_UP:
|
//抬起时启动定时
|
startAD();
|
break;
|
}
|
return super.dispatchTouchEvent(ev);
|
}
|
|
|
/**
|
*
|
*/
|
public void startAD() {
|
if (countDownTimer == null) {
|
countDownTimer = new CountDownTimer(advertisingTime, 1000l) {
|
@Override
|
public void onTick(long millisUntilFinished) {
|
|
}
|
|
@Override
|
public void onFinish() {
|
|
}
|
};
|
countDownTimer.start();
|
} else {
|
countDownTimer.start();
|
}
|
}
|
|
|
@Override
|
protected void onResume() {
|
super.onResume();
|
//显示是启动定时
|
startAD();
|
}
|
|
@Override
|
protected void onPause() {
|
super.onPause();
|
//当activity不在前台是停止定时
|
if (countDownTimer != null){
|
countDownTimer.cancel();
|
}
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
//销毁时停止定时
|
if (countDownTimer != null){
|
countDownTimer.cancel();
|
}
|
|
ActivityCollector.removeActivity(this);
|
}
|
|
@Override
|
public void finish() {
|
super.finish();
|
}
|
|
public void finishAll(){
|
ActivityCollector.finishAll();
|
}
|
|
private void fullscreen(boolean enable) {
|
|
if (enable) { //显示状态栏
|
|
WindowManager.LayoutParams lp = getWindow().getAttributes();
|
|
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
|
getWindow().setAttributes(lp);
|
|
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
|
} else { //隐藏状态栏
|
|
WindowManager.LayoutParams lp = getWindow().getAttributes();
|
|
lp.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
|
getWindow().setAttributes(lp);
|
|
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
|
}
|
|
}
|
|
/**
|
* 隐藏虚拟按键
|
*/
|
public void goneSystemUi(){
|
//隐藏虚拟按键
|
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) {
|
View v = getWindow().getDecorView();
|
v.setSystemUiVisibility(View.GONE);
|
} else if (Build.VERSION.SDK_INT >= 19) {
|
View decorView = getWindow().getDecorView();
|
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
| View.SYSTEM_UI_FLAG_FULLSCREEN;
|
decorView.setSystemUiVisibility(uiOptions);
|
}
|
}
|
|
/**
|
* 显示虚拟按键
|
*/
|
public void visibleSystemUi(){
|
//显示虚拟键盘
|
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) {
|
//低版本sdk
|
View v = getWindow().getDecorView();
|
v.setSystemUiVisibility(View.VISIBLE);
|
} else if (Build.VERSION.SDK_INT >= 19) {
|
View decorView = getWindow().getDecorView();
|
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
|
decorView.setSystemUiVisibility(uiOptions);
|
}
|
}
|
}
|