package com.todayinfo.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.jinghua.todayinformation.R;
import com.special.ResideMenu.ResideMenu;
import com.special.ResideMenu.ResideMenu.OnMenuListener;
import com.special.ResideMenu.ResideMenuItem;
import com.todayinfo.service.UserController;
import com.todayinfo.ui.component.CustomExitDialog;
import com.todayinfo.utils.Configure;
import com.todayinfo.utils.LogUtil;
/**
* 承载所有信息的主界面
*
* @author zhou.ni 2015年3月16日
*/
public class HomeActivity extends SuperFragmentActivity implements OnClickListener{
private static final String TAG = "HomeActivity";
private UserController mUserController;
private HomeController mHomeController;
private long exitTime = 0;
private ResideMenu mResideMenu;
//左边
private ResideMenuItem home; //首页
private ResideMenuItem newsFocusItem; //焦点新闻
private ResideMenuItem bolgsShareItem; //博客分享
private ResideMenuItem lifeNewsItem; //生活新闻
private ResideMenuItem gameslifeItem; //游戏人生
// private ResideMenuItem grilItem; //美女写真集
//右边
private ResideMenuItem myInfoItem; //我的
private ResideMenuItem settingsItem; //设置
private ResideMenuItem exitedItem; //退出
private ResideMenuItem collectionItem; //收藏
private RelativeLayout leftMenu;
private RelativeLayout rightMenu;
private ImageView phoneImg, newsImg, girlImg;
//左边添加的activity
private NewsFocusActivity mNewsFocusActivity;
private BolgsShareActivity mBolgsShareActivity;
private GamesLifeActivity mGamesLifeActivity;
private GirlPhotoActivity mGirlPhotoActivity;
private LifeNewsActivity mLifeNewsActivity;
//右边添加的activity
private SettingsActivity mSettingsActivity;
private LoginActivity mLoginActivity;
private MyInfoActivity mInfoActivity;
private MyCollectionsActivity mCollectionActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_home);
Configure.init(this);
mUserController = UserController.getInstance(this);
initView();
mHomeController = new HomeController(this);
setUpMenu();
}
/**
* 初始化控件
*/
private void initView() {
//上面导航
LinearLayout homeTop = (LinearLayout) this.findViewById(R.id.home_top);
leftMenu = (RelativeLayout) homeTop.findViewById(R.id.home_left);
rightMenu = (RelativeLayout) homeTop.findViewById(R.id.home_right);
leftMenu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mResideMenu.openMenu(ResideMenu.DIRECTION_LEFT);
}
});
rightMenu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mResideMenu.openMenu(ResideMenu.DIRECTION_RIGHT);
}
});
//下面导航
LinearLayout homeFoot = (LinearLayout) this.findViewById(R.id.home_foot);
phoneImg = (ImageView) homeFoot.findViewById(R.id.home_phone_iv);
newsImg = (ImageView) homeFoot.findViewById(R.id.home_news_iv);
girlImg = (ImageView) homeFoot.findViewById(R.id.home_girl_iv);
phoneImg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mHomeController.tabOnclick(v);
}
});
newsImg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mHomeController.tabOnclick(v);
}
});
girlImg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mHomeController.tabOnclick(v);
}
});
}
/**
* 上面导航的配置
*/
private void setUpMenu() {
// attach to current activity;
mResideMenu = new ResideMenu(this);
mResideMenu.setBackground(R.raw.bg);
mResideMenu.attachToActivity(this);
mResideMenu.setMenuListener(new OnMenuListener() {
@Override
public void openMenu() {
}
@Override
public void closeMenu() {
}
});
//valid scale factor is between 0.0f and 1.0f. leftmenu'width is 150dip.
mResideMenu.setScaleValue(0.6f);
// create left menu items;
home = new ResideMenuItem(this, R.raw.icon_home, "首页");
newsFocusItem = new ResideMenuItem(this, R.raw.icon_news, "焦点新闻");
bolgsShareItem = new ResideMenuItem(this, R.raw.icon_bolgs, "博客分享");
lifeNewsItem = new ResideMenuItem(this, R.raw.icon_movie, "生活新闻");
gameslifeItem = new ResideMenuItem(this, R.raw.icon_games, "游戏人生");
// grilItem = new ResideMenuItem(this, R.raw.icon_gril, "美女写真");
// create right menu items;
myInfoItem = new ResideMenuItem(this, R.raw.wo, "登录");
collectionItem = new ResideMenuItem(this, R.raw.icon_collection, "收藏");
settingsItem = new ResideMenuItem(this, R.raw.icon_settings, "设置");
exitedItem = new ResideMenuItem(this, R.raw.icon_exit, "退出");
//left click event
home.setOnClickListener(this);
newsFocusItem.setOnClickListener(this);
bolgsShareItem.setOnClickListener(this);
lifeNewsItem.setOnClickListener(this);
gameslifeItem.setOnClickListener(this);
// grilItem.setOnClickListener(this);
//right click event
myInfoItem.setOnClickListener(this);
settingsItem.setOnClickListener(this);
exitedItem.setOnClickListener(this);
collectionItem.setOnClickListener(this);
//左边添加布局内容
mResideMenu.addMenuItem(home, ResideMenu.DIRECTION_LEFT);
mResideMenu.addMenuItem(newsFocusItem, ResideMenu.DIRECTION_LEFT);
mResideMenu.addMenuItem(bolgsShareItem, ResideMenu.DIRECTION_LEFT);
mResideMenu.addMenuItem(lifeNewsItem, ResideMenu.DIRECTION_LEFT);
mResideMenu.addMenuItem(gameslifeItem, ResideMenu.DIRECTION_LEFT);
// mResideMenu.addMenuItem(grilItem, ResideMenu.DIRECTION_LEFT);
//右边添加布局内容
mResideMenu.addMenuItem(myInfoItem, ResideMenu.DIRECTION_RIGHT);
mResideMenu.addMenuItem(collectionItem, ResideMenu.DIRECTION_RIGHT);
mResideMenu.addMenuItem(settingsItem, ResideMenu.DIRECTION_RIGHT);
mResideMenu.addMenuItem(exitedItem, ResideMenu.DIRECTION_RIGHT);
mResideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT); //设置向右滑动没有反映
mResideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_LEFT);
}
private void changeActivity(Activity targetActivity){
mResideMenu.clearIgnoredViewList();
Intent intent = new Intent(HomeActivity.this, targetActivity.getClass());
startActivity(intent);
}
private void changeFragment(Fragment targetFragment){
mResideMenu.clearIgnoredViewList();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.home_fm_container, targetFragment);
fragmentTransaction.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.commit();
}
@Override
public void onClick(View v) {
if (v == newsFocusItem) {
if ( mNewsFocusActivity==null ){
mNewsFocusActivity = new NewsFocusActivity();
}
changeActivity(mNewsFocusActivity);
}
else if (v == bolgsShareItem) {
if ( mBolgsShareActivity==null ) {
mBolgsShareActivity = new BolgsShareActivity();
}
changeActivity(mBolgsShareActivity);
}
else if (v == home) {
}
else if (v == gameslifeItem) {
if ( mGamesLifeActivity==null ) {
mGamesLifeActivity = new GamesLifeActivity();
}
changeActivity(mGamesLifeActivity);
}
// else if ( v == grilItem ) {
// if ( mGirlPhotoActivity==null ) {
// mGirlPhotoActivity = new GirlPhotoActivity();
// }
// changeActivity(mGirlPhotoActivity);
// }
else if ( v == lifeNewsItem ) {
if ( mLifeNewsActivity==null ) {
mLifeNewsActivity = new LifeNewsActivity();
}
changeActivity(mLifeNewsActivity);
}
else if ( v == myInfoItem ) {
if ( mUserController.getUserInfo()!=null ) {
if ( mInfoActivity==null ) {
mInfoActivity = new MyInfoActivity();
}
changeActivity(mInfoActivity);
} else {
if ( mLoginActivity==null ) {
mLoginActivity = new LoginActivity();
}
changeActivity(mLoginActivity);
}
}
else if ( v==settingsItem ){ //设置
if ( mSettingsActivity==null ) {
mSettingsActivity = new SettingsActivity();
}
changeActivity(mSettingsActivity);
}
else if( v==exitedItem ) { //退出
this.finish();
System.gc();
}
else if ( v==collectionItem ) {
if ( mCollectionActivity==null ){
mCollectionActivity = new MyCollectionsActivity();
}
changeActivity(mCollectionActivity);
}
mResideMenu.closeMenu();
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 按下的如果是BACK,同时没有重复
boolean flag = mHomeController.backFm();
if (!flag) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
exitTime = System.currentTimeMillis();
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
CustomExitDialog exitDialog = new CustomExitDialog(mContext, R.style.customExitDailogStyle, R.layout.custom_exit_dialog);
exitDialog.show();
}
}
}
return true;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return mResideMenu.dispatchTouchEvent(ev);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_UP) {
LogUtil.i(TAG, "dispatchKeyEvent:" + event.getKeyCode());
boolean flag = mHomeController.handleKeyEvent(event);
if (flag) {
return true;
}
}
return super.dispatchKeyEvent(event);
}
@Override
public void retry() {
}
@Override
public void netError() {
}
}