package com.llf.common; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatDelegate; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import com.llf.basemodel.base.BaseActivity; import com.llf.basemodel.base.BaseFragment; import com.llf.basemodel.base.BaseFragmentAdapter; import com.llf.basemodel.dialog.UpdateDialog; import com.llf.basemodel.utils.AppInfoUtil; import com.llf.common.entity.ApplicationEntity; import com.llf.common.ui.girl.GirlFragment; import com.llf.common.ui.mine.MineFragment; import com.llf.common.ui.news.NewsFragment; import com.llf.common.ui.video.VideoFragment; import butterknife.Bind; import butterknife.OnClick; public class MainActivity extends BaseActivity implements ViewPager.OnPageChangeListener ,MainContract.View{ @Bind(R.id.news) Button mNews; @Bind(R.id.video) Button mVideo; @Bind(R.id.girl) Button mGirl; @Bind(R.id.mine) Button mMine; @Bind(R.id.viewPager) ViewPager mViewPager; private String[] mTitles; private BaseFragment[] fragments; int currentTabPosition = 0; public static final String CURRENT_TAB_POSITION = "HOME_CURRENT_TAB_POSITION"; private MainContract.Presenter mPresenter; static { //vector支持selector AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); } @Override protected int getLayoutId() { return R.layout.activity_main; } @Override protected void initView() { mPresenter = new MainPresenter(this); mTitles = getResources().getStringArray(R.array.main_titles); fragments = new BaseFragment[mTitles.length]; fragments[0] = NewsFragment.getInstance(); fragments[1] = VideoFragment.getInstance(); fragments[2] = GirlFragment.getInstance(); fragments[3] = MineFragment.getInstance(); BaseFragmentAdapter mAdapter = new BaseFragmentAdapter(getSupportFragmentManager(), fragments); mViewPager.setAdapter(mAdapter); mViewPager.addOnPageChangeListener(this); mViewPager.setCurrentItem(currentTabPosition); mNews.setSelected(true); mPresenter.checkUpdate("http://api.fir.im/apps/latest/58f87d50959d6904280005a3?api_token=9f2408863ff25abccca986e5d4d9d6ba"); } @Override public void onBackPressed() { super.onBackPressed(); moveTaskToBack(true); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //仅当activity为task根才生效 moveTaskToBack(true); return true; } return super.onKeyDown(keyCode, event); } @Override protected void onSaveInstanceState(Bundle outState) { //奔溃前保存位置 outState.putInt(CURRENT_TAB_POSITION, currentTabPosition); super.onSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { currentTabPosition = savedInstanceState.getInt(CURRENT_TAB_POSITION); super.onRestoreInstanceState(savedInstanceState); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //分发到fragment的onActivityResult,用于解决qq分享接收不到回调 BaseFragment fragment = fragments[3]; fragment.onActivityResult(requestCode, resultCode, data); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //Empty } @Override public void onPageSelected(int position) { resetTab(); switch (position) { case 0: mNews.setSelected(true); break; case 1: mVideo.setSelected(true); break; case 2: mGirl.setSelected(true); break; case 3: mMine.setSelected(true); break; default: //其他 break; } } @Override public void onPageScrollStateChanged(int state) { //Empty } @OnClick({R.id.news, R.id.video, R.id.girl, R.id.mine}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.news: mViewPager.setCurrentItem(0, false); break; case R.id.video: mViewPager.setCurrentItem(1, false); break; case R.id.girl: mViewPager.setCurrentItem(2, false); break; case R.id.mine: mViewPager.setCurrentItem(3, false); break; default: break; } } private void resetTab() { mNews.setSelected(false); mVideo.setSelected(false); mGirl.setSelected(false); mMine.setSelected(false); } @Override public void showLoading() { startProgressDialog(); } @Override public void stopLoading() { stopProgressDialog(); } @Override public void showErrorTip(String msg) { showErrorHint(msg); } @Override public void retureResult(String result) { showToast(result); } @Override public void retureUpdateResult(final ApplicationEntity entity) { if (AppInfoUtil.getVersionCode(App.instance) < Integer.parseInt(entity.getVersion())) { String content = String.format("最新版本:%1$s\napp名字:%2$s\n\n更新内容\n%3$s", entity.getVersionShort(), entity.getName(), entity.getChangelog()); UpdateDialog.show(MainActivity.this,content, new UpdateDialog.OnUpdate() { @Override public void cancel() { } @Override public void ok() { mPresenter.update(entity); } }); } } }