package com.example.qyh.joe.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.example.qyh.joe.R;
import com.example.qyh.joe.base.BaseActivity;
import com.example.qyh.joe.fragment.FirstFragment;
import com.example.qyh.joe.fragment.SecondeFragment;
import com.example.qyh.joe.fragment.ThreeFragment;
import com.example.qyh.joe.theme.SkinManager;
import com.example.qyh.joe.view.MainView;
public class MainActivity extends BaseActivity implements MainView, NavigationView.OnNavigationItemSelectedListener
,View.OnClickListener{
private Toolbar toolbar;
private AppBarLayout appbar;
private static boolean isExit = false;
private static Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
isExit = false;
}
};
private ImageView imageView;//个人头像
private boolean isChangeTheme;
@Override
protected void loadViewLayout() {
setContentView(R.layout.activity_main);
}
@Override
protected void findViewById() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
// toolbar.setTitle("新闻");
appbar = (AppBarLayout) findViewById(R.id.appbar);
imageView = (ImageView) findViewById(R.id.iv_touxiang);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
//ActionBarDrawerToggle 提供了一个方便的方式来配合DrawerLayout和ActionBar,以实现推荐的抽屉功能。
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
//该方法会自动和actionBar关联, 将开关的图片显示在了action上,如果不设置,也可以有抽屉的效果,不过是默认的图标
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
switchFirst();
}
@Override
protected void setListener() {
}
@Override
protected void processLogic() {
}
@Override
protected Context getActivityContext() {
return this;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
/** 菜单键点击的事件处理 */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* 设置当导航项被点击时的回调。OnNavigationItemSelectedListener会提供给我们被选中的MenuItem
*/
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.nav_camera) {
switchFirst();
} else if (id == R.id.nav_gallery) {
switchSecond();
} else if (id == R.id.nav_slideshow) {
switchthree();
} else if (id == R.id.nav_share) {
startActivity(new Intent(MainActivity.this,LoginActivity.class));
} else if (id == R.id.nav_send) {
// startActivity(new Intent(getApplicationContext(),PersonalActivity.class));
switchMain();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "头像", Toast.LENGTH_SHORT);
}
@Override
public void switchFirst() {
getSupportFragmentManager().beginTransaction().replace(R.id.frame_content, new FirstFragment()).commitAllowingStateLoss();
toolbar.setTitle("新闻");
}
@Override
public void switchSecond() {
getSupportFragmentManager().beginTransaction().replace(R.id.frame_content,new SecondeFragment()).commitAllowingStateLoss();
toolbar.setTitle("Test");
}
@Override
public void switchthree() {
getSupportFragmentManager().beginTransaction().replace(R.id.frame_content,new ThreeFragment()).commitAllowingStateLoss();
toolbar.setTitle("图片");
}
/**
* 护眼模式,只在【新闻】界面实现了
*
* PS:虽然更换主题显的不伦不类,不过就是为了实现这个功能,将就着 看吧
*
*/
@Override
public void switchMain() {
if(isChangeTheme){
isChangeTheme=false;
SkinManager.getInstance().changeSkin("blue");
}else{
isChangeTheme=true;
SkinManager.getInstance().removeAnySkin();
}
}
//双击退出应用
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void exit() {
if (!isExit) {
isExit = true;
// 利用handler延迟发送更改状态信息
View view = findViewById(R.id.drawer_layout);
Snackbar.make(view, "再按一次退出程序", Snackbar.LENGTH_SHORT).show();
mHandler.sendEmptyMessageDelayed(0, 2000);
} else {
this.finish();
}
}
}