一、BaseActivity
沉浸式状态栏
1、全沉浸式自定义颜色
//判断当前SDK版本号,如果是4.4以上,就是支持沉浸式状态栏的
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getApplicationContext().getResources().getColor(R.color.deepblue));
}
更多属性:http://blog.youkuaiyun.com/lmj623565791/article/details/48649563
Window window = getWindow();
if(translucentStatusBar()) {
//设置状态栏全透明
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP) {
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
}else if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
return;
}
//沉浸式状态栏
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP) {
//5.0以上使用原生方法
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(setStatusBarColor());
}else if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT) {
//4.4-5.0使用三方工具类,有些4.4的手机有问题,这里为演示方便,不使用沉浸式
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
SystemBarTintManager tintManager =newSystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintColor(setStatusBarColor());
}
全屏
// 设置全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 去除标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
2、修改BACK键为HOME键
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
return true;
}return super.onKeyDown(keyCode, event);}
3、判断点击两次返回键退出系统
public voidbackSystem() {
TimerTask task =newTimerTask() {
@Override
public voidrun() {
isExit=false;
isHasTask=true;
}
};
if(!isExit) {
isExit=true;
Toast.makeText(mView,"再按一次退出APOS", Toast.LENGTH_LONG).show();
exitTime= System.currentTimeMillis();
if(!isHasTask) {
tExit.schedule(task,2000);
}
}else{
longtemp = System.currentTimeMillis() -exitTime;
if(temp <2000) {
exitSystem();
}else{
Toast.makeText(mView,"再按一次退出APOS", Toast.LENGTH_LONG).show();
isExit=false;
isHasTask=false;
mView.onBackPressed();
}}}
3、格式化时间
SimpleDateFormat time = new SimpleDateFormat("MM/dd HH:mm:ss");
4、数据类型大小

5、安装软件
Intent intent =newIntent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(newFile(APKpath)),"application/vnd.android.package-archive");
startActivity(intent);
6、卸载软件
Uri uri = Uri.parse("package:包名");
Intent intent = new Intent(Intent.ACTION_DELETE,uri);
startActivity(intent);
7、自定义Notification
一定要设置smallIcon否则会报错