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); } }