package com.martin.ionichinabystudio.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.FrameLayout;
import com.martin.ionichinabystudio.R;
import com.martin.ionichinabystudio.config.Constant;
import com.martin.ionichinabystudio.ui.adapter.MainActDrawerAdapter;
import com.martin.ionichinabystudio.ui.adapter.MianActPagerAdapter;
import com.martin.ionichinabystudio.ui.fragment.TopicsFragment;
import com.martin.ionichinabystudio.ui.fragment.TopicsFragment_;
import com.martin.ionichinabystudio.ui.view.CustomViewPager;
import com.martin.simpledevelop.activity.SaBaseActivity;
import com.martin.simpledevelop.utils.global.SaAppConfig;
import com.rey.material.app.ToolbarManager;
import com.rey.material.widget.FloatingActionButton;
import com.rey.material.widget.ListView;
import com.rey.material.widget.SnackBar;
import com.rey.material.widget.TabPageIndicator;
import com.zxing.android.CaptureActivity;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.ViewById;
import java.util.ArrayList;
@EActivity(R.layout.activity_main)
public class MainActivity extends SaBaseActivity implements ToolbarManager.OnToolbarGroupChangedListener {
private MainActivity mActivity;
private Context mContext;
//带有侧滑菜单的滑动布局控件
@ViewById(R.id.main_dl)
public DrawerLayout dl_navigator;
//侧滑出来的显示布局
@ViewById(R.id.main_fl_drawer)
public FrameLayout fl_drawer;
//策划出来的显示布局中的列表,这里根据自己的定义来获取
@ViewById(R.id.main_lv_drawer)
public ListView lv_drawer;
//头部的工具栏
@ViewById(R.id.main_toolbar)
public Toolbar mToolbar;
//中间的的显示区域控件
@ViewById(R.id.main_vp)
public CustomViewPager vp;
//切换中间的显示的选项卡控件
@ViewById(R.id.main_tpi)
public TabPageIndicator tpi;
//
@ViewById(R.id.main_sn)
public SnackBar mSnackBar;
@ViewById(R.id.button_bt_float_wave_color)
public FloatingActionButton mActionButton;
//选项卡的显示的文字
private String[] mTopicTypeLabel;
//选项卡的显示的文字对应的要查询的类型
private String[] mTopicType;
//要显示的片段的集合,数量需要跟mItems对应
private ArrayList<Fragment> mFragments = new ArrayList<Fragment>();
//选项卡的数据适配
private MainActDrawerAdapter mDrawerAdapter;
//显示区域的显示片段的数据适配
private MianActPagerAdapter mPagerAdapter;
//工具栏的管理工具
public ToolbarManager mToolbarManager;
@AfterViews
public void init() {
mActivity = this;
mContext = mActivity;
// 获取资源管理对象
Resources res = getResources();
// 配置话题标识
mTopicTypeLabel = res.getStringArray(R.array.topic_tab_label);
// 配置话题标识对应的类型
mTopicType = res.getStringArray(R.array.topic_tab_type);
//初始化工具栏管理器
initToolBar();
//初始化选项卡中的数据
mDrawerAdapter = new MainActDrawerAdapter(mTopicTypeLabel, mContext, vp,
dl_navigator, fl_drawer);
lv_drawer.setAdapter(mDrawerAdapter);
//循环建立显示的片段
for (int i = 0; i < mTopicTypeLabel.length; i++) {
//要传入显示片段的数据包
Bundle data = new Bundle();
//查询的话题类型
data.putString(Constant.QUERY_TOPIC_TYPE, mTopicType[i]);
TopicsFragment newfragment = new TopicsFragment_();
newfragment.setArguments(data);
//将显示片段加入显示的集合
mFragments.add(newfragment);
}
//设置选项卡对应的片段的数据适配器
mPagerAdapter = new MianActPagerAdapter(getSupportFragmentManager(), mTopicTypeLabel, mFragments);
vp.setAdapter(mPagerAdapter);
//增加缓存的Fragment的数量
vp.setOffscreenPageLimit(4);
tpi.setViewPager(vp);
//设置页面被改变的监听
tpi.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
mDrawerAdapter.setSelected(mTopicTypeLabel[position]);
mSnackBar.dismiss();
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//设置选项卡的默认选择
mDrawerAdapter.setSelected(mTopicTypeLabel[0]);
vp.setCurrentItem(0);
}
/**
* 初始化工具栏
*/
public void initToolBar() {
mToolbarManager = new ToolbarManager(this, mToolbar, 0, R.style.ToolbarRippleStyle,
R.anim.abc_fade_in, R.anim.abc_fade_out);
mToolbarManager.setNavigationManager(new ToolbarManager.BaseNavigationManager(R.style.NavigationDrawerDrawable,
this, mToolbar, dl_navigator) {
@Override
public void onNavigationClick() {
if (mToolbarManager.getCurrentGroup() != 0)
mToolbarManager.setCurrentGroup(0);
else
dl_navigator.openDrawer(Gravity.START);
}
@Override
public boolean isBackState() {
return super.isBackState() || mToolbarManager.getCurrentGroup() != 0;
}
@Override
protected boolean shouldSyncDrawerSlidingProgress() {
return super.shouldSyncDrawerSlidingProgress() && mToolbarManager.getCurrentGroup() == 0;
}
});
//给工具栏注册改变的监听
mToolbarManager.registerOnToolbarGroupChangedListener(this);
}
@Click(R.id.button_bt_float_wave_color)
public void openTestActivity() {
Intent openTest = new Intent(this, TempActivity.class);
startActivity(openTest);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mToolbarManager.createMenu(R.menu.menu_main);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
mToolbarManager.onPrepareMenu();
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.tb_contextual:
Intent intent = new Intent(mActivity, CaptureActivity.class);
startActivityForResult(intent, SaAppConfig.QR_REQUESTCODE);
break;
}
return true;
}
@Override
public void onToolbarGroupChanged(int oldGroupId, int groupId) {
mToolbarManager.notifyNavigationStateChanged();
}
}