package com.gh.gamecenter; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.DisplayMetrics; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.TextView; import com.gh.base.BaseFragmentActivity; import com.gh.common.util.DisplayUtils; import com.gh.download.DownloadManager; import com.gh.gamecenter.adapter.FragmentAdapter; import com.gh.gamecenter.download.FileSendFragment; import com.gh.gamecenter.download.GameDownLoadFragment; import com.gh.gamecenter.download.GameUpdateFragment; import com.gh.gamecenter.eventbus.EBDownloadChanged; import com.gh.gamecenter.eventbus.EBMiPush; import com.gh.gamecenter.eventbus.EBSkip; import com.gh.gamecenter.eventbus.EBUISwitch; import com.gh.gamecenter.manager.PackageManager; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import de.greenrobot.event.EventBus; /** * 下载更新管理页面 * * @author 黄壮华 * */ public class DownloadManagerActivity extends BaseFragmentActivity implements OnClickListener, OnPageChangeListener { @BindView(R.id.downloadmanager_viewPager) ViewPager downloadmanager_viewPager; @BindView(R.id.downloadmanager_tv_download) TextView downloadmanager_tv_download; @BindView(R.id.downloadmanager_tv_update) TextView downloadmanager_tv_update; @BindView(R.id.downloadmanager_download_number) TextView downloadmanager_download_number; @BindView(R.id.downloadmanager_tv_send) TextView downloadmanager_tv_send; @BindView(R.id.downloadmanager_update_number) TextView downloadmanager_update_number; @BindView(R.id.downloadmanager_ll_download) LinearLayout downloadmanager_ll_download; @BindView(R.id.downloadmanager_ll_send) LinearLayout downloadmanager_ll_send; @BindView(R.id.downloadmanager_ll_update) LinearLayout downloadmanager_ll_update; @BindView(R.id.downloadmanager_slide_line) View downloadmanager_slide_line; private LinearLayout.LayoutParams lparams; private int width; private Handler handler = new Handler(); @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("CurrentItem", downloadmanager_viewPager.getCurrentItem()); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View contentView = View.inflate(this, R.layout.activity_downloadmanager, null); init(contentView, "下载管理"); downloadmanager_ll_download.setOnClickListener(this); downloadmanager_ll_update.setOnClickListener(this); downloadmanager_ll_send.setOnClickListener(this); int updateSize = PackageManager.getUpdateList().size(); if (updateSize != 0) { downloadmanager_update_number.setVisibility(View.VISIBLE); downloadmanager_update_number.setText(String.valueOf(updateSize)); } else { downloadmanager_update_number.setVisibility(View.GONE); } int downloadSize = DownloadManager.getInstance(getApplicationContext()).getAll().size(); if (downloadSize != 0) { downloadmanager_download_number.setVisibility(View.VISIBLE); downloadmanager_download_number.setText(String.valueOf(downloadSize)); } else { downloadmanager_download_number.setVisibility(View.GONE); } int currentItem; if (savedInstanceState != null) { currentItem = savedInstanceState.getInt("CurrentItem"); } else { currentItem = getIntent().getIntExtra("currentItem", -1); if (getIntent().getBundleExtra("data") != null) { currentItem = getIntent().getBundleExtra("data").getInt("currentItem", -1); } } if (currentItem == -1) { currentItem = 0; // if (updateSize != 0 && downloadSize == 0) { // currentItem = 1; // } else { // currentItem = 0; // } } DisplayMetrics outMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(outMetrics); width = outMetrics.widthPixels / 3; lparams = new LinearLayout.LayoutParams(width / 2, DisplayUtils.dip2px(getApplicationContext(), 2)); lparams.leftMargin = (int) (width * (currentItem + 0.25f)); downloadmanager_slide_line.setLayoutParams(lparams); List list = new ArrayList<>(); list.add(new FileSendFragment()); list.add(new GameDownLoadFragment()); list.add(new GameUpdateFragment()); downloadmanager_viewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(), list)); downloadmanager_viewPager.addOnPageChangeListener(this); downloadmanager_viewPager.setCurrentItem(currentItem); } @Override public void onPageSelected(int position) { if (position == 1) { EventBus.getDefault().post(new EBUISwitch("DownloadManagerActivity", 1)); downloadmanager_tv_download.setTextColor(getResources().getColor(R.color.theme)); downloadmanager_tv_update.setTextColor(getResources().getColor(R.color.title)); downloadmanager_tv_send.setTextColor(getResources().getColor(R.color.title)); } else if (position == 2){ EventBus.getDefault().post(new EBUISwitch("DownloadManagerActivity", 2)); downloadmanager_tv_download.setTextColor(getResources().getColor(R.color.title)); downloadmanager_tv_update.setTextColor(getResources().getColor(R.color.theme)); downloadmanager_tv_send.setTextColor(getResources().getColor(R.color.title)); } else { downloadmanager_tv_download.setTextColor(getResources().getColor(R.color.title)); downloadmanager_tv_update.setTextColor(getResources().getColor(R.color.title)); downloadmanager_tv_send.setTextColor(getResources().getColor(R.color.theme)); } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (positionOffset != 0) { lparams.leftMargin = (int) (width * (position + positionOffset + 0.25f)); downloadmanager_slide_line.setLayoutParams(lparams); } } @Override public void onPageScrollStateChanged(int state) { } @Override public void onClick(View view) { final int id = view.getId(); if (id == R.id.actionbar_rl_back) { finish(); } else if (id == R.id.downloadmanager_ll_download) { downloadmanager_viewPager.setCurrentItem(1); } else if (id == R.id.downloadmanager_ll_update) { downloadmanager_viewPager.setCurrentItem(2); } else if (id == R.id.downloadmanager_ll_send) { downloadmanager_viewPager.setCurrentItem(0); } } public void onEventMainThread(EBMiPush mipush){ if ("plugin_install".equals(mipush.getFrom())) { downloadmanager_ll_download.performClick(); } } public void onEventMainThread(EBDownloadChanged changed) { if ("download".equals(changed.getType())) { if (changed.getVisibility() == View.VISIBLE){ downloadmanager_download_number.setVisibility(View.VISIBLE); } else if (changed.getVisibility() == View.GONE) { downloadmanager_download_number.setVisibility(View.GONE); } else if (changed.getVisibility() == View.INVISIBLE) { downloadmanager_download_number.setVisibility(View.INVISIBLE); } downloadmanager_download_number.setText(String.valueOf(changed.getSize())); } else if ("update".equals(changed.getType())) { if (changed.getSize() == -1) { int number = Integer.valueOf(downloadmanager_update_number.getText().toString()); if (number == 1) { downloadmanager_update_number.setVisibility(View.GONE); } else { downloadmanager_update_number.setText(String.valueOf(number - 1)); } } else { if (changed.getSize() != 0) { if (changed.getVisibility() == View.VISIBLE){ downloadmanager_update_number.setVisibility(View.VISIBLE); } else if (changed.getVisibility() == View.GONE) { downloadmanager_update_number.setVisibility(View.GONE); } else if (changed.getVisibility() == View.INVISIBLE) { downloadmanager_update_number.setVisibility(View.INVISIBLE); } downloadmanager_update_number.setText(String.valueOf(changed.getSize())); } else { downloadmanager_update_number.setVisibility(View.GONE); } } } } public void onEventMainThread(EBSkip skip) { if ("DownloadManagerActivity".equals(skip.getType())) { if (skip.getCurrentItem() == 0) { handler.postDelayed(runnable, 300); } } } Runnable runnable = new Runnable() { @Override public void run() { downloadmanager_ll_download.performClick(); } }; }