258 lines
10 KiB
Java
258 lines
10 KiB
Java
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<Fragment> 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
} |