package com.pan.simplepicture.activity;
import java.util.ArrayList;
import net.youmi.android.offers.OffersManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v4.widget.DrawerLayout;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import com.pan.simplepicture.R;
import com.pan.simplepicture.adapter.BaseListAdapter;
import com.pan.simplepicture.fragment.BaseFragment;
import com.pan.simplepicture.fragment.FragmentFactory;
import com.pan.simplepicture.holder.MenuHeaderHolder;
import com.pan.simplepicture.holder.MenuHolder;
import com.pan.simplepicture.utils.AppUtils;
import com.pan.simplepicture.utils.MapUtil;
import com.pan.simplepicture.widget.ActionBarDrawerToggle;
import com.pan.simplepicture.widget.DrawerArrowDrawable;
import com.pan.simplepicture.widget.PagerSlidingTabStrip;
import com.pan.simplepicture.widget.ShareDialog;
import com.pan.simplepicture.widget.ShareDialog.OnShareDataListener;
import com.umeng.fb.FeedbackAgent;
import com.umeng.socialize.controller.UMSocialService;
import com.umeng.socialize.media.UMImage;
import com.umeng.socialize.sso.UMSsoHandler;
/**
* 主页
* @author pan
*
*/
public class MainActivity extends BaseActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private DrawerArrowDrawable drawerArrow;
private boolean drawerArrowColor;
private FeedbackAgent agent = null;
@Override
protected void initView() {
agent = new FeedbackAgent(this);
agent.sync();
setContentView(R.layout.activity_sample);
initContent();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_index, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
protected void onRestart() {
super.onRestart();
if (menuHeaderHolder != null) {
menuHeaderHolder.setData();
}
}
/** ViewPager的适配器 */
public class MainPagerAdapter extends FragmentPagerAdapter implements
OnPageChangeListener {
String[] mTabTitle;
BaseFragment[] mFragments;
int mCurrentIndex;
public MainPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
mTabTitle = getStringArray(R.array.tab_names);
mFragments = new BaseFragment[mTabTitle.length];
}
@Override
public CharSequence getPageTitle(int position) {
return mTabTitle[position];
}
@Override
public int getCount() {
return mTabTitle.length;
}
@Override
public Fragment getItem(int position) {
if (mFragments[position] == null
|| !(mFragments[position] instanceof BaseFragment)) {
mFragments[position] = FragmentFactory.createFragment(position,
MainActivity.this);
}
if (position == mCurrentIndex) {
mCurrentIndex = -1;
mFragments[position].show();
}
return mFragments[position];
}
@Override
public void onPageScrollStateChanged(int state) {
// ViewPager滑动状态改变的回调
}
@Override
public void onPageScrolled(int index, float offset, int offsetPx) {
// ViewPager滑动时的回调
}
@Override
public void onPageSelected(int index) {
// ViewPager页面被选中的回调
if (index < mFragments.length) {
if (mFragments[index] != null) {
mFragments[index].show();
} else {
mCurrentIndex = index;
}
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
OffersManager.getInstance(this).onAppExit();
}
private PagerSlidingTabStrip mPageTabs;
private ViewPager mPager;
private MainPagerAdapter mAdapter;
private void initContent() {
mPageTabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
mPager = (ViewPager) findViewById(R.id.pager);
mAdapter = new MainPagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mAdapter);
mPageTabs.setViewPager(mPager);
mPageTabs.setOnPageChangeListener(mAdapter);
}
@Override
protected void initActionBar() {
mActionBar = getSupportActionBar();
mActionBar.setTitle(R.string.app_name);
mActionBar.setIcon(android.R.color.transparent);
mActionBar.setDisplayHomeAsUpEnabled(true);
mActionBar.setHomeButtonEnabled(true);
menuHeaderHolder = new MenuHeaderHolder(this);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.navdrawer);
mDrawerList.addHeaderView(menuHeaderHolder.getRootView());
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();
ArrayList<com.pan.simplepicture.been.Menu> list = MapUtil.getMenu(this);
BaseListAdapter<com.pan.simplepicture.been.Menu> mAdapter = new BaseListAdapter<com.pan.simplepicture.been.Menu>(
this, list, MenuHolder.class);
mDrawerList.setFooterDividersEnabled(false);
mDrawerList.setAdapter(mAdapter);
}
@Override
protected void onStop() {
super.onStop();
if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
mDrawerLayout.closeDrawer(mDrawerList);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
mDrawerLayout.closeDrawer(mDrawerList);
} else {
mDrawerLayout.openDrawer(mDrawerList);
}
return true;
}
// 赏个好评
if (item.getItemId() == R.id.action_important) {
AppUtils.goMarket(this);
return true;
}
// 用户反馈
if (item.getItemId() == R.id.action_feedback) {
agent.startFeedbackActivity();
int4Right();
return true;
}
// 推荐好友
if (item.getItemId() == R.id.action_recommend) {
ShareDialog dialog = new ShareDialog(this, getWindowManager()
.getDefaultDisplay().getWidth() - 80, this.dip2px(400));
dialog.setOnShareDataListener(new OnShareDataListener() {
@Override
public void onShareData(UMSocialService mController) {
MainActivity.this.mController = mController;
UMImage umImage = new UMImage(MainActivity.this,
R.drawable.ic_launcher);
umImage.setTargetUrl("http://www.itlanbao.com");
umImage.setTitle("微视频");
umImage.setThumb("http://www.itlanbao.com");
// 设置分享内容
mController
.setShareContent("《微视频》是一款短视频应用,里面收集了世界上各国比较有创意.新颖趣事,广告以及其他.快快来下载吧!htt://www.itlanbao.com");
mController.setShareMedia(umImage);
}
});
dialog.show();
return true;
}
return super.onOptionsItemSelected(item);
}
private UMSocialService mController;
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public void onBackPressed() {
if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
mDrawerLayout.closeDrawer(mDrawerList);
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
}
}
}
private long exitTime = 0;
private MenuHeaderHolder menuHeaderHolder;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/** 使用SSO授权必须添加如下代码 */
UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(
requestCode);
if (ssoHandler != null) {
ssoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_MENU) {
return true;
}
return super.onKeyDown(keyCode, event);
}
}