package com.yzy.supercleanmaster.ui;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import com.ikimuhendis.ldrawer.ActionBarDrawerToggle;
import com.ikimuhendis.ldrawer.DrawerArrowDrawable;
import com.yzy.supercleanmaster.R;
import com.yzy.supercleanmaster.base.ActivityTack;
import com.yzy.supercleanmaster.base.BaseActivity;
import com.yzy.supercleanmaster.fragment.MainFragment;
import com.yzy.supercleanmaster.fragment.NavigationDrawerFragment;
import com.yzy.supercleanmaster.fragment.RelaxFragment;
import com.yzy.supercleanmaster.fragment.SettingsFragment;
import com.yzy.supercleanmaster.utils.SystemBarTintManager;
import com.yzy.supercleanmaster.utils.T;
import com.yzy.supercleanmaster.utils.UIElementsHelper;
import java.util.Date;
import butterknife.InjectView;
public class MainActivity extends BaseActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks {
@InjectView(R.id.container)
FrameLayout container;
@InjectView(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
ActionBar ab;
private CharSequence mTitle;
private ActionBarDrawerToggle mDrawerToggle;
private DrawerArrowDrawable drawerArrow;
private boolean drawerArrowColor;
NavigationDrawerFragment mNavigationDrawerFragment;
private View mFragmentContainerView;
MainFragment mMainFragment;
RelaxFragment mRelaxFragment;
public static final long TWO_SECOND = 2 * 1000;
long preTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFragmentContainerView = (View) findViewById(R.id.navigation_drawer);
mTitle = getTitle();
applyKitKatTranslucency();
onNavigationDrawerItemSelected(0);
initDrawer();
}
private void initDrawer() {
// TODO Auto-generated method stub
ab = getActionBar();
ab.setDisplayHomeAsUpEnabled(true);// 给home icon的左边加上一个返回的图标
ab.setHomeButtonEnabled(true);// 需要api level 14 使用home-icon 可点击
drawerArrow = new DrawerArrowDrawable(this) {
@Override
public boolean isLayoutRtl() {
return false;
}
};
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
drawerArrow, R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
// mNavigationDrawerFragment.setUp(R.id.navigation_drawer,
// mDrawerLayout);
}
// @Override
// public boolean onCreateOptionsMenu(Menu menu) {
// // Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.main, menu);
// return true;
// }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
if (item.getItemId() == android.R.id.home) {
if (mDrawerLayout.isDrawerOpen(mFragmentContainerView)) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
} else {
mDrawerLayout.openDrawer(mFragmentContainerView);
}
}
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
/**
* Apply KitKat specific translucency.
*/
private void applyKitKatTranslucency() {
// KitKat translucent navigation/status bar.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
SystemBarTintManager mTintManager = new SystemBarTintManager(this);
mTintManager.setStatusBarTintEnabled(true);
mTintManager.setNavigationBarTintEnabled(true);
// mTintManager.setTintColor(0xF00099CC);
mTintManager.setTintDrawable(UIElementsHelper
.getGeneralActionBarBackground(this));
getActionBar().setBackgroundDrawable(
UIElementsHelper.getGeneralActionBarBackground(this));
}
}
@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}
@Override
public void onNavigationDrawerItemSelected(int position) {
// 开启一个Fragment事务
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况
hideFragments(transaction);
switch (position) {
case 0:
closeDrawer();
if (mMainFragment == null) {
mMainFragment = new MainFragment();
transaction.add(R.id.container, mMainFragment);
} else {
transaction.show(mMainFragment);
}
transaction.commit();
break;
case 1:
closeDrawer();
if (mRelaxFragment == null) {
mRelaxFragment = new RelaxFragment();
transaction.add(R.id.container, mRelaxFragment);
} else {
transaction.show(mRelaxFragment);
}
transaction.commit();
break;
case 2:
closeDrawer();
SettingsFragment.launch(MainActivity.this);
break;
// fragment = new SettingsFragment();
// break;
}
}
private void hideFragments(FragmentTransaction transaction) {
if (mMainFragment != null) {
transaction.hide(mMainFragment);
}
if (mRelaxFragment != null) {
transaction.hide(mRelaxFragment);
}
}
public void closeDrawer() {
mDrawerLayout.closeDrawers();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 截获后退键
if (keyCode == KeyEvent.KEYCODE_BACK) {
long currentTime = new Date().getTime();
// 如果时间间隔大于2秒, 不处理
if ((currentTime - preTime) > TWO_SECOND) {
// 显示消息
T.showShort(mContext, "再按一次退出应用程序");
// 更新时间
preTime = currentTime;
// 截获事件,不再处理
return true;
} else {
ActivityTack.getInstanse().exit(mContext);
}
}
return super.onKeyDown(keyCode, event);
}
}