package com.zcy.ghost.vivideo.ui.view; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.View; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.color.ColorChooserDialog; import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.material_design_iconic_typeface_library.MaterialDesignIconic; import com.pgyersdk.feedback.PgyFeedback; import com.pgyersdk.views.PgyerDialog; import com.zcy.ghost.vivideo.R; import com.zcy.ghost.vivideo.app.Constants; import com.zcy.ghost.vivideo.base.RootView; import com.zcy.ghost.vivideo.presenter.contract.MainContract; import com.zcy.ghost.vivideo.ui.activitys.CollectionActivity; import com.zcy.ghost.vivideo.ui.activitys.MainActivity; import com.zcy.ghost.vivideo.ui.activitys.SettingActivity; import com.zcy.ghost.vivideo.ui.activitys.WelfareActivity; import com.zcy.ghost.vivideo.ui.adapter.ContentPagerAdapter; import com.zcy.ghost.vivideo.ui.fragments.ClassificationFragment; import com.zcy.ghost.vivideo.ui.fragments.DiscoverFragment; import com.zcy.ghost.vivideo.ui.fragments.MineFragment; import com.zcy.ghost.vivideo.ui.fragments.RecommendFragment; import com.zcy.ghost.vivideo.utils.EventUtil; import com.zcy.ghost.vivideo.utils.PreUtils; import com.zcy.ghost.vivideo.utils.Preconditions; import com.zcy.ghost.vivideo.utils.StringUtils; import com.zcy.ghost.vivideo.utils.ThemeUtils; import com.zcy.ghost.vivideo.widget.ResideLayout; import com.zcy.ghost.vivideo.widget.UnScrollViewPager; import org.simple.eventbus.EventBus; import org.simple.eventbus.Subscriber; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; import static com.zcy.ghost.vivideo.ui.activitys.MainActivity.Banner_Stop; /** * Description: MainView * Creator: yxc * date: 2016/10/20 10:14 */ public class MainView extends RootView<MainContract.Presenter> implements MainContract.View, RadioGroup.OnCheckedChangeListener { final int WAIT_TIME = 200; @BindView(R.id.tv_collect) TextView tvCollect; @BindView(R.id.tv_mydown) TextView tvMydown; @BindView(R.id.tv_fuli) TextView tvFuli; @BindView(R.id.tv_share) TextView tvShare; @BindView(R.id.tv_feedback) TextView tvFeedback; @BindView(R.id.tv_setting) TextView tvSetting; @BindView(R.id.about) TextView about; @BindView(R.id.theme) TextView theme; @BindView(R.id.tab_rg_menu) RadioGroup tabRgMenu; @BindView(R.id.vp_content) UnScrollViewPager vpContent; @BindView(R.id.resideLayout) ResideLayout mResideLayout; ContentPagerAdapter mPagerAdapter; MainActivity mActivity; public MainView(Context context) { super(context); } public MainView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void getLayout() { inflate(mContext, R.layout.activity_main_view, this); } @Override protected void initView() { mActivity = (MainActivity) mContext; List<Fragment> fragments = initFragments(); vpContent.setScrollable(false); mPagerAdapter = new ContentPagerAdapter(mActivity.getSupportFragmentManager(), fragments); vpContent.setAdapter(mPagerAdapter); vpContent.setOffscreenPageLimit(fragments.size()); StringUtils.setIconDrawable(mContext, tvCollect, MaterialDesignIconic.Icon.gmi_collection_bookmark, 16, 10); StringUtils.setIconDrawable(mContext, tvMydown, MaterialDesignIconic.Icon.gmi_download, 16, 10); StringUtils.setIconDrawable(mContext, tvFuli, MaterialDesignIconic.Icon.gmi_mood, 16, 10); StringUtils.setIconDrawable(mContext, tvShare, MaterialDesignIconic.Icon.gmi_share, 16, 10); StringUtils.setIconDrawable(mContext, tvFeedback, MaterialDesignIconic.Icon.gmi_android, 16, 10); StringUtils.setIconDrawable(mContext, tvSetting, MaterialDesignIconic.Icon.gmi_settings, 16, 10); StringUtils.setIconDrawable(mContext, about, MaterialDesignIconic.Icon.gmi_account, 16, 10); StringUtils.setIconDrawable(mContext, theme, MaterialDesignIconic.Icon.gmi_palette, 16, 10); } @Override protected void initEvent() { tabRgMenu.setOnCheckedChangeListener(this); vpContent.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { ((RadioButton) tabRgMenu.getChildAt(position)).setChecked(true); } @Override public void onPageScrollStateChanged(int state) { } }); mResideLayout.setPanelSlideListener(new ResideLayout.PanelSlideListener() { @Override public void onPanelSlide(View panel, float slideOffset) { postBannerState(true); } @Override public void onPanelOpened(View panel) { postBannerState(true); } @Override public void onPanelClosed(View panel) { postBannerState(false); } }); } @Override public void setPresenter(MainContract.Presenter presenter) { mPresenter = Preconditions.checkNotNull(presenter); } @Override public void showError(String msg) { EventUtil.showToast(mContext, msg); } private void postBannerState(final boolean stop) { new Handler().postDelayed(new Runnable() { @Override public void run() { EventBus.getDefault().post(stop, Banner_Stop); } }, WAIT_TIME); } @Override public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { switch (checkedId) { case R.id.tab_rb_1: vpContent.setCurrentItem(0, false); break; case R.id.tab_rb_2: vpContent.setCurrentItem(1, false); break; case R.id.tab_rb_3: vpContent.setCurrentItem(2, false); break; case R.id.tab_rb_4: vpContent.setCurrentItem(3, false); break; } } private List<Fragment> initFragments() { List<Fragment> fragments = new ArrayList<>(); Fragment fragment1 = new RecommendFragment(); Fragment fragment2 = new ClassificationFragment(); Fragment fragment3 = new DiscoverFragment(); Fragment mineFragment = new MineFragment(); fragments.add(fragment1); fragments.add(fragment2); fragments.add(fragment3); fragments.add(mineFragment); return fragments; } @Subscriber(tag = MineFragment.SET_THEME) public void setTheme(String content) { new ColorChooserDialog.Builder(mActivity, R.string.theme) .customColors(R.array.colors, null) .doneButton(R.string.done) .cancelButton(R.string.cancel) .allowUserColorInput(false) .allowUserColorInputAlpha(false) .show(); } @OnClick({R.id.tv_collect, R.id.tv_mydown, R.id.tv_fuli, R.id.tv_share, R.id.tv_feedback, R.id.tv_setting, R.id.about, R.id.theme}) public void onClick(View view) { switch (view.getId()) { case R.id.tv_collect: mContext.startActivity(new Intent(mContext, CollectionActivity.class)); break; case R.id.tv_mydown: EventUtil.showToast(mContext, "敬请期待"); break; case R.id.tv_fuli: mContext.startActivity(new Intent(mContext, WelfareActivity.class)); break; case R.id.tv_share: Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT, getResources().getString(R.string.setting_recommend_content)); shareIntent.setType("text/plain"); //设置分享列表的标题,并且每次都显示分享列表 mContext.startActivity(Intent.createChooser(shareIntent, "分享到")); break; case R.id.tv_feedback: // 以对话框的形式弹出 PgyerDialog.setDialogTitleBackgroundColor(PreUtils.getString(mContext, Constants.PRIMARYCOLOR, "#000000")); PgyerDialog.setDialogTitleTextColor(PreUtils.getString(mContext, Constants.TITLECOLOR, "#0aa485")); PgyFeedback.getInstance().showDialog(mContext).d().setChecked(false); break; case R.id.tv_setting: mContext.startActivity(new Intent(mContext, SettingActivity.class)); break; case R.id.about: new MaterialDialog.Builder(mContext) .title(R.string.about) .titleColor(ThemeUtils.getThemeColor(mContext, R.attr.colorPrimary)) .icon(new IconicsDrawable(mContext) .color(ThemeUtils.getThemeColor(mContext, R.attr.colorPrimary)) .icon(MaterialDesignIconic.Icon.gmi_account) .sizeDp(20)) .content(R.string.about_me) .contentColor(ThemeUtils.getThemeColor(mContext, R.attr.colorPrimary)) .positiveText(R.string.close) .show(); break; case R.id.theme: setTheme(""); break; } } public ResideLayout getResideLayout() { return mResideLayout; } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); EventBus.getDefault().register(this); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); EventBus.getDefault().unregister(this); } }