package com.yuyh.sprintnba.ui;
import android.Manifest;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ListView;
import com.yuyh.easyadapter.abslistview.EasyLVAdapter;
import com.yuyh.easyadapter.abslistview.EasyLVHolder;
import com.yuyh.library.permission.Acp;
import com.yuyh.library.permission.AcpListener;
import com.yuyh.library.permission.AcpOptions;
import com.yuyh.library.utils.DeviceUtils;
import com.yuyh.library.utils.toast.ToastUtils;
import com.yuyh.library.view.viewpager.XViewPager;
import com.yuyh.sprintnba.R;
import com.yuyh.sprintnba.app.Constant;
import com.yuyh.sprintnba.base.BaseAppCompatActivity;
import com.yuyh.sprintnba.base.BaseLazyFragment;
import com.yuyh.sprintnba.event.CalendarEvent;
import com.yuyh.sprintnba.ui.adapter.VPHomeAdapter;
import com.yuyh.sprintnba.ui.presenter.Presenter;
import com.yuyh.sprintnba.ui.presenter.impl.HomePresenterImpl;
import com.yuyh.sprintnba.ui.view.HomeView;
import com.yuyh.sprintnba.utils.NavigationEntity;
import org.greenrobot.eventbus.EventBus;
import java.lang.reflect.Method;
import java.util.List;
import butterknife.InjectView;
import cn.bmob.v3.update.BmobUpdateAgent;
public class HomeActivity extends BaseAppCompatActivity implements HomeView {
@InjectView(R.id.home_container)
XViewPager mViewPager;
@InjectView(R.id.home_navigation_list)
ListView mNavListView;
@InjectView(R.id.home_drawer)
DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mActionBarDrawerToggle = null;
private EasyLVAdapter<NavigationEntity> mNavListAdapter = null;
private static long DOUBLE_CLICK_TIME = 0L;
private static int REQUEST_DATE_CODE = 1;
private int mCurrentMenuCheckedPos = 0;
@Override
protected int getContentViewLayoutID() {
return R.layout.activity_main;
}
@Override
protected void initViewsAndEvents() {
Presenter presenter = new HomePresenterImpl(this, this);
presenter.initialized();
BmobUpdateAgent.setUpdateOnlyWifi(true); // Wifi下面才提示APP更新
BmobUpdateAgent.update(this);
// Android6.0 权限申请
Acp.getInstance(this).request(new AcpOptions.Builder()
.setPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE)
.setRationalMessage("以下权限需要您授权,否则将不能正常使用App。\n" +
"1、读取SD卡权限\n" +
"2、读取手机IMEI")
.build(),
new AcpListener() {
@Override
public void onGranted() {
Constant.deviceId = DeviceUtils.getIMEI(HomeActivity.this);
}
@Override
public void onDenied(List<String> permissions) {
String str = "";
for (String permission : permissions) {
str += permission + "\n";
}
ToastUtils.showSingleLongToast(str + "权限拒绝,可能会引起APP异常退出");
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_MENU && mDrawerLayout != null) {
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
} else {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
return true;
} else if(mViewPager.getCurrentItem() != 0){
mCurrentMenuCheckedPos = 0;
mNavListAdapter.notifyDataSetChanged();
mDrawerLayout.closeDrawer(Gravity.LEFT);
mViewPager.setCurrentItem(mCurrentMenuCheckedPos, true);
setTitle(((NavigationEntity) mNavListAdapter.getItem(mCurrentMenuCheckedPos)).getName());
return true;
} else if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
} else {
if ((System.currentTimeMillis() - DOUBLE_CLICK_TIME) > 2000) {
ToastUtils.showSingleToast("再按一次退出");
DOUBLE_CLICK_TIME = System.currentTimeMillis();
} else {
finish();
}
}
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
if (mActionBarDrawerToggle != null) {
mActionBarDrawerToggle.syncState();
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (mActionBarDrawerToggle != null) {
mActionBarDrawerToggle.onConfigurationChanged(newConfig);
}
}
@Override
protected void onPause() {
super.onPause();
//JCVideoPlayer.releaseAllVideos();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void initializeViews(List<BaseLazyFragment> fragments, List<NavigationEntity> navigationList) {
if (null != fragments && !fragments.isEmpty()) {
mViewPager.setEnableScroll(false);
mViewPager.setOffscreenPageLimit(fragments.size());
mViewPager.setAdapter(new VPHomeAdapter(getSupportFragmentManager(), fragments));
}
mActionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
if (null != mNavListAdapter) {
setTitle(((NavigationEntity) mNavListAdapter.getItem(mCurrentMenuCheckedPos)).getName());
}
}
};
mActionBarDrawerToggle.setDrawerIndicatorEnabled(true);
mDrawerLayout.addDrawerListener(mActionBarDrawerToggle);
mNavListAdapter = new EasyLVAdapter<NavigationEntity>(HomeActivity.this, navigationList, R.layout.item_list_navigation) {
@Override
public void convert(EasyLVHolder viewHolder, int position, NavigationEntity item) {
viewHolder.setImageResource(R.id.list_item_navigation_icon, item.getIconResId())
.setText(R.id.list_item_navigation_name, item.getName());
}
};
mNavListView.setAdapter(mNavListAdapter);
mNavListAdapter.notifyDataSetChanged();
mNavListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mCurrentMenuCheckedPos = position;
mNavListAdapter.notifyDataSetChanged();
mDrawerLayout.closeDrawer(Gravity.LEFT);
mViewPager.setCurrentItem(mCurrentMenuCheckedPos, false);
}
});
}
/**
* 显示overflower菜单图标
*/
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
try {
Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
}
}
}
return super.onMenuOpened(featureId, menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
MenuInflater inflater = this.getMenuInflater();
switch (mCurrentMenuCheckedPos) {
case 1:
inflater.inflate(R.menu.menu_schedule, menu);
break;
default:
//inflater.inflate(R.menu.menu_home, menu);
break;
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_schedule, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mActionBarDrawerToggle != null && mActionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case R.id.action_calendar:
CalendarActivity.start(this, REQUEST_DATE_CODE);
break;
case R.id.action_live:
MatchVideoLiveListActivity.start(this);
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_DATE_CODE && resultCode == RESULT_OK) {
String date = data.getStringExtra(CalendarActivity.CALENDAR_DATE);
if (!TextUtils.isEmpty(date))
EventBus.getDefault().post(new CalendarEvent(date));
}
}
}