package com.jerey.keepgank;
/**
* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
* │Esc│ │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│ ┌┐ ┌┐ ┌┐
* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └┘ └┘ └┘
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
* │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter │ │ 4 │ 5 │ 6 │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
* ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
* │ Ctrl│ │Alt │ Space │ Alt│ │ │Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │←─┘│
* └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
*/
import android.Manifest;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.AppCompatDelegate;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.cn.jerey.permissiontools.Callback.PermissionCallbacks;
import com.cn.jerey.permissiontools.PermissionTools;
import com.jerey.keepgank.Constant.AppConstant;
import com.jerey.keepgank.fragment.HomeFragment;
import com.jerey.keepgank.fragment.MeiziFragment;
import com.jerey.keepgank.fragment.TodayFragment;
import com.jerey.keepgank.fragment.WebView;
import com.jerey.keepgank.utils.BlurImageUtils;
import com.jerey.loglib.LogTools;
import com.umeng.analytics.MobclickAgent;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import de.hdodenhof.circleimageview.CircleImageView;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private int mCurrentUIIndex = 0;
private static final int INDEX_HOME = 0;
private static final int INDEX_COLLECTION = 1;
private static final int INDEX_Blog = 2;
private static final int INDEX_TODAY = 3;
private static final int REQUEST_CODE = 111;
@Bind(R.id.drawer)
DrawerLayout mDrawerLayout;
@Bind(R.id.nav_view)
NavigationView mNavigationView;
CircleImageView mUserimage;
View mHeadViewContainer;
PermissionTools permissionTools;
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// 透明状态栏
getWindow().addFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 透明导航栏
getWindow().addFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mHeadViewContainer = mNavigationView.getHeaderView(0);
mUserimage = (CircleImageView) mHeadViewContainer.findViewById(R.id.userimage);
mNavigationView.setNavigationItemSelectedListener(this);
Glide.with(this)
.load(R.drawable.jay)
.asBitmap()
.centerCrop()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
mUserimage.setImageBitmap(resource);
Bitmap overlay = BlurImageUtils.blur(mUserimage, 3, 3);
mHeadViewContainer.setBackground(new BitmapDrawable(getResources(), overlay));
}
});
permissionTools = new PermissionTools.Builder(this)
.setOnPermissionCallbacks(new PermissionCallbacks() {
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
// Toast.makeText(MainActivity.this, "权限申请通过", Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
Toast.makeText(MainActivity.this, "权限申请被拒绝", Toast.LENGTH_SHORT).show();
}
})
.setRequestCode(REQUEST_CODE)
.build();
permissionTools.requestPermissions(Manifest.permission.INTERNET
, Manifest.permission.READ_EXTERNAL_STORAGE
, Manifest.permission.ACCESS_NETWORK_STATE);
updateUI();
}
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
Fragment mHomeFragment;
Fragment mBlogFragment;
Fragment mTodayFragment;
Fragment mMeiziFragment;
Fragment mCurrentFragment;
private void updateUI() {
if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
mDrawerLayout.closeDrawer(GravityCompat.START);
}
switch (mCurrentUIIndex) {
case INDEX_HOME:
if (mHomeFragment == null) {
mHomeFragment = new HomeFragment();
}
switchFragment(mHomeFragment);
break;
case INDEX_COLLECTION:
if (mMeiziFragment == null) {
mMeiziFragment = new MeiziFragment();
}
switchFragment(mMeiziFragment);
break;
case INDEX_Blog:
if (mBlogFragment == null) {
mBlogFragment = new WebView();
}
switchFragment(mBlogFragment);
break;
case INDEX_TODAY:
if (mTodayFragment == null) {
mTodayFragment = new TodayFragment();
}
switchFragment(mTodayFragment);
break;
}
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_home:
LogTools.d("home被点击");
item.setChecked(true);
mCurrentUIIndex = INDEX_HOME;
updateUI();
break;
case R.id.nav_today:
LogTools.d("今日被点击");
item.setChecked(true);
mCurrentUIIndex = INDEX_TODAY;
updateUI();
break;
case R.id.nav_collection:
LogTools.d("收藏被点击");
item.setChecked(true);
mCurrentUIIndex = INDEX_COLLECTION;
updateUI();
break;
case R.id.my_blog:
LogTools.d("博客被点击");
item.setChecked(true);
mCurrentUIIndex = INDEX_Blog;
updateUI();
break;
case R.id.nav_settings:
LogTools.d("设置被点击");
SharedPreferences sp = getSharedPreferences(AppConstant.SP, MODE_PRIVATE);
int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (mode == Configuration.UI_MODE_NIGHT_YES) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
sp.edit().putBoolean(AppConstant.Theme, true).apply();
} else if (mode == Configuration.UI_MODE_NIGHT_NO) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
sp.edit().putBoolean(AppConstant.Theme, false).apply();
}
getWindow().setWindowAnimations(R.style.WindowAnimationFadeInOut);
recreate();
break;
}
return false;
}
private long exitTime = 0;
/**
* 监听按钮,在Drawer打开状态下,若不监听,按下返回键则会做两次确认退出处理
*
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
mDrawerLayout.closeDrawer(GravityCompat.START);
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
finishAffinity();
} else {
finish();
}
overridePendingTransition(0, R.anim.out_to_bottom);
}
}
return true;
}
return super.onKeyDown(keyCode, event);
}
private void switchFragment(Fragment fragment) {
FragmentTransaction fragmentTransaction;
fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (mCurrentFragment != null) {
fragmentTransaction.hide(mCurrentFragment);
}
if (fragment.isAdded()) {
fragmentTransaction.show(fragment);
} else {
fragmentTransaction.add(R.id.content, fragment);
}
fragmentTransaction.commit();
mCurrentFragment = fragment;
}
public void openDrawer() {
if (!mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
mDrawerLayout.openDrawer(GravityCompat.START);
}
}
/**
* 无需在子Fragment中设置该点击事件响应,只要
* ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
* 就OK
*
* @param item
* @return
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
LogTools.d("onOptionsItemSelected android.R.id.home");
openDrawer();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
permissionTools.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}