package com.gh.gamecenter; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; 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.BaseActivity; import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; import com.gh.download.DownloadManager; import com.gh.base.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 org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; import butterknife.BindView; /** * 下载更新管理页面 * * @author 黄壮华 */ public class DownloadManagerActivity extends BaseActivity implements OnClickListener, OnPageChangeListener { public static final int INDEX_SEND = 2; public static final int INDEX_DOWNLOAD = 0; public static final int INDEX_UPDATE = 1; public static final String TAG = "DownloadManagerActivity"; @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_update) LinearLayout downloadmanager_ll_update; @BindView(R.id.downloadmanager_slide_line) View downloadmanager_slide_line; Runnable runnable = new Runnable() { @Override public void run() { downloadmanager_ll_download.performClick(); } }; private LinearLayout.LayoutParams lparams; private int width; public static Intent getDownloadMangerIntent(Context context, String url, String entrance) { Intent intent = new Intent(context, DownloadManagerActivity.class); intent.putExtra("url", url); intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); return intent; } public static void startDownloadManagerActivity(Context context, String url, String entrance) { Intent intent = new Intent(context, DownloadManagerActivity.class); intent.putExtra("url", url); intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("CurrentItem", downloadmanager_viewPager.getCurrentItem()); } @Override protected int getLayoutId() { return R.layout.activity_downloadmanager; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initTitle(getString(R.string.title_downloadmanager)); downloadmanager_ll_download.setOnClickListener(this); downloadmanager_ll_update.setOnClickListener(this); downloadmanager_tv_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", 0); if (getIntent().getBundleExtra("data") != null) { currentItem = getIntent().getBundleExtra("data").getInt("currentItem", 0); } } DisplayMetrics outMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(outMetrics); width = outMetrics.widthPixels / 3; lparams = new LinearLayout.LayoutParams((int) (width * 0.7), DisplayUtils.dip2px(getApplicationContext(), 2)); lparams.leftMargin = (int) (width * (currentItem + 0.17f)); downloadmanager_slide_line.setLayoutParams(lparams); List list = new ArrayList<>(); list.add(new GameDownloadFragment()); list.add(new GameUpdateFragment()); list.add(new FileSendFragment()); downloadmanager_viewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(), list)); downloadmanager_viewPager.addOnPageChangeListener(this); downloadmanager_viewPager.setCurrentItem(currentItem); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (positionOffset != 0) { lparams.leftMargin = (int) (width * (position + positionOffset + 0.17f)); downloadmanager_slide_line.setLayoutParams(lparams); } } @Override public void onPageSelected(int position) { if (position == 0) { EventBus.getDefault().post(new EBUISwitch(DownloadManagerActivity.TAG, 0)); downloadmanager_tv_download.setTextColor(ContextCompat.getColor(this, R.color.theme)); downloadmanager_tv_update.setTextColor(ContextCompat.getColor(this, R.color.title)); downloadmanager_tv_send.setTextColor(ContextCompat.getColor(this, R.color.title)); } else if (position == 1) { EventBus.getDefault().post(new EBUISwitch(DownloadManagerActivity.TAG, 0)); downloadmanager_tv_download.setTextColor(ContextCompat.getColor(this, R.color.title)); downloadmanager_tv_update.setTextColor(ContextCompat.getColor(this, R.color.theme)); downloadmanager_tv_send.setTextColor(ContextCompat.getColor(this, R.color.title)); } else { downloadmanager_tv_download.setTextColor(ContextCompat.getColor(this, R.color.title)); downloadmanager_tv_update.setTextColor(ContextCompat.getColor(this, R.color.title)); downloadmanager_tv_send.setTextColor(ContextCompat.getColor(this, R.color.theme)); } } @Override public void onPageScrollStateChanged(int state) { } @Override public void onClick(View view) { switch (view.getId()) { case R.id.downloadmanager_tv_send: downloadmanager_viewPager.setCurrentItem(INDEX_SEND); break; case R.id.downloadmanager_ll_download: downloadmanager_viewPager.setCurrentItem(INDEX_DOWNLOAD); break; case R.id.downloadmanager_ll_update: downloadmanager_viewPager.setCurrentItem(INDEX_UPDATE); break; } } @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(EBMiPush mipush) { if ("plugin_install".equals(mipush.getFrom())) { downloadmanager_ll_download.performClick(); } } @Subscribe(threadMode = ThreadMode.MAIN) 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); } } } } @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(EBSkip skip) { if (DownloadManagerActivity.TAG.equals(skip.getType())) { if (skip.getCurrentItem() == 1) { getWindow().getDecorView().postDelayed(runnable, 300); } } } }