Merge remote-tracking branch 'origin/3.0' into 3.0

This commit is contained in:
kehaoyuan
2017-06-30 17:30:03 +08:00
8 changed files with 298 additions and 292 deletions

View File

@ -33,7 +33,7 @@ import java.util.List;
*/
public abstract class BaseFragment_ViewPager extends BaseFragment implements DoubleTapTextView.OnDoubleTapListener {
private static final String ARGS_INDEX = "index";
protected static final String ARGS_INDEX = "index";
protected int mCheckedIndex = 0;
protected PagerAdapter mAdapter;
protected List<Fragment> mFragmentsList;

View File

@ -7,11 +7,14 @@ import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import com.gh.common.util.AppDebugConfig;
import com.gh.common.util.PlatformUtils;
import com.gh.gamecenter.R;
import com.lightgame.download.DownloadEntity;
import com.lightgame.download.DownloadStatus;
import java.util.List;
/**
* @author CsHeng
@ -65,8 +68,12 @@ public class DownloadNotification {
}
public static void showDownloadingNotification(Context context) {
if (AppDebugConfig.IS_DEBUG) {
AppDebugConfig.logMethodWithParams(DownloadNotification.class, context);
}
int downloadingSize = 0;
for (DownloadEntity entity : DownloadManager.getInstance(context).getAll()) {
final List<DownloadEntity> list = DownloadManager.getInstance(context).getAll();
for (DownloadEntity entity : list) {
if (entity.getStatus().equals(DownloadStatus.downloading)
|| entity.getStatus().equals(DownloadStatus.waiting)
|| entity.getStatus().equals(DownloadStatus.pause)

View File

@ -3,79 +3,24 @@ 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;
import com.gh.gamecenter.download.DownloadFragment;
/**
* 下载更新管理页面
*
* @author 黄壮华
*/
public class DownloadManagerActivity extends BaseActivity implements OnClickListener, OnPageChangeListener {
public class DownloadManagerActivity extends BaseActivity {
public static final int INDEX_SEND = 2;
public static final int INDEX_DOWNLOAD = 0;
public static final int INDEX_UPDATE = 1;
public static final int INDEX_SEND = 2;
public static final String TAG = "DownloadManagerActivity";
@BindView(R.id.downloadmanager_viewPager)
ViewPager mDownloadmanagerVp;
@BindView(R.id.downloadmanager_tv_download)
TextView mDownloadmanagerDownloadTv;
@BindView(R.id.downloadmanager_tv_update)
TextView mDownloadmanagerUpdateTv;
@BindView(R.id.downloadmanager_download_number)
TextView mDownloadmanagerDownloadNumber;
@BindView(R.id.downloadmanager_tv_send)
TextView mDownloadmanagerSendTv;
@BindView(R.id.downloadmanager_update_number)
TextView mDownloadmanagerUpdateNumber;
@BindView(R.id.downloadmanager_ll_download)
LinearLayout mDownloadmanagerDownloadLl;
@BindView(R.id.downloadmanager_ll_update)
LinearLayout mDownloadmanagerUpdateLl;
@BindView(R.id.downloadmanager_slide_line)
View mDownloadmanagerSlideLine;
Runnable runnable = new Runnable() {
@Override
public void run() {
mDownloadmanagerDownloadLl.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);
@ -91,12 +36,6 @@ public class DownloadManagerActivity extends BaseActivity implements OnClickList
context.startActivity(intent);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("CurrentItem", mDownloadmanagerVp.getCurrentItem());
}
@Override
protected int getLayoutId() {
return R.layout.activity_downloadmanager;
@ -108,151 +47,14 @@ public class DownloadManagerActivity extends BaseActivity implements OnClickList
initTitle(getString(R.string.title_downloadmanager));
mDownloadmanagerDownloadLl.setOnClickListener(this);
mDownloadmanagerUpdateLl.setOnClickListener(this);
mDownloadmanagerSendTv.setOnClickListener(this);
int updateSize = PackageManager.getUpdateList().size();
if (updateSize != 0) {
mDownloadmanagerUpdateNumber.setVisibility(View.VISIBLE);
mDownloadmanagerUpdateNumber.setText(String.valueOf(updateSize));
} else {
mDownloadmanagerUpdateNumber.setVisibility(View.GONE);
int currentItem = getIntent().getIntExtra("currentItem", 0);
if (getIntent().getBundleExtra("data") != null) {
currentItem = getIntent().getBundleExtra("data").getInt("currentItem", 0);
}
int downloadSize = DownloadManager.getInstance(getApplicationContext()).getAll().size();
if (downloadSize != 0) {
mDownloadmanagerDownloadNumber.setVisibility(View.VISIBLE);
mDownloadmanagerDownloadNumber.setText(String.valueOf(downloadSize));
} else {
mDownloadmanagerDownloadNumber.setVisibility(View.GONE);
}
getSupportFragmentManager().beginTransaction().replace(
R.id.layout_fragment_content, DownloadFragment.newInstance(currentItem)).commitAllowingStateLoss();
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));
mDownloadmanagerSlideLine.setLayoutParams(lparams);
List<Fragment> list = new ArrayList<>();
list.add(new GameDownloadFragment());
list.add(new GameUpdateFragment());
list.add(new FileSendFragment());
mDownloadmanagerVp.setAdapter(new FragmentAdapter(getSupportFragmentManager(), list));
mDownloadmanagerVp.addOnPageChangeListener(this);
mDownloadmanagerVp.setCurrentItem(currentItem);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (positionOffset != 0) {
lparams.leftMargin = (int) (width * (position + positionOffset + 0.17f));
mDownloadmanagerSlideLine.setLayoutParams(lparams);
}
}
@Override
public void onPageSelected(int position) {
if (position == 0) {
EventBus.getDefault().post(new EBUISwitch(DownloadManagerActivity.TAG, 0));
mDownloadmanagerDownloadTv.setTextColor(ContextCompat.getColor(this, R.color.theme));
mDownloadmanagerUpdateTv.setTextColor(ContextCompat.getColor(this, R.color.title));
mDownloadmanagerSendTv.setTextColor(ContextCompat.getColor(this, R.color.title));
} else if (position == 1) {
EventBus.getDefault().post(new EBUISwitch(DownloadManagerActivity.TAG, 0));
mDownloadmanagerDownloadTv.setTextColor(ContextCompat.getColor(this, R.color.title));
mDownloadmanagerUpdateTv.setTextColor(ContextCompat.getColor(this, R.color.theme));
mDownloadmanagerSendTv.setTextColor(ContextCompat.getColor(this, R.color.title));
} else {
mDownloadmanagerDownloadTv.setTextColor(ContextCompat.getColor(this, R.color.title));
mDownloadmanagerUpdateTv.setTextColor(ContextCompat.getColor(this, R.color.title));
mDownloadmanagerSendTv.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:
mDownloadmanagerVp.setCurrentItem(INDEX_SEND);
break;
case R.id.downloadmanager_ll_download:
mDownloadmanagerVp.setCurrentItem(INDEX_DOWNLOAD);
break;
case R.id.downloadmanager_ll_update:
mDownloadmanagerVp.setCurrentItem(INDEX_UPDATE);
break;
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBMiPush mipush) {
if ("plugin_install".equals(mipush.getFrom())) {
mDownloadmanagerDownloadLl.performClick();
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBDownloadChanged changed) {
if ("download".equals(changed.getType())) {
if (changed.getVisibility() == View.VISIBLE) {
mDownloadmanagerDownloadNumber.setVisibility(View.VISIBLE);
} else if (changed.getVisibility() == View.GONE) {
mDownloadmanagerDownloadNumber.setVisibility(View.GONE);
} else if (changed.getVisibility() == View.INVISIBLE) {
mDownloadmanagerDownloadNumber.setVisibility(View.INVISIBLE);
}
mDownloadmanagerDownloadNumber.setText(String.valueOf(changed.getSize()));
} else if ("update".equals(changed.getType())) {
if (changed.getSize() == -1) {
int number = Integer.valueOf(mDownloadmanagerUpdateNumber.getText().toString());
if (number == 1) {
mDownloadmanagerUpdateNumber.setVisibility(View.GONE);
} else {
mDownloadmanagerUpdateNumber.setText(String.valueOf(number - 1));
}
} else {
if (changed.getSize() != 0) {
if (changed.getVisibility() == View.VISIBLE) {
mDownloadmanagerUpdateNumber.setVisibility(View.VISIBLE);
} else if (changed.getVisibility() == View.GONE) {
mDownloadmanagerUpdateNumber.setVisibility(View.GONE);
} else if (changed.getVisibility() == View.INVISIBLE) {
mDownloadmanagerUpdateNumber.setVisibility(View.INVISIBLE);
}
mDownloadmanagerUpdateNumber.setText(String.valueOf(changed.getSize()));
} else {
mDownloadmanagerUpdateNumber.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);
}
}
}
}

View File

@ -0,0 +1,188 @@
package com.gh.gamecenter.download;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gh.base.fragment.BaseFragment_ViewPager_Checkable;
import com.gh.common.util.DisplayUtils;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.DownloadManagerActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.eventbus.EBDownloadChanged;
import com.gh.gamecenter.eventbus.EBMiPush;
import com.gh.gamecenter.eventbus.EBSkip;
import com.gh.gamecenter.manager.PackageManager;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import butterknife.BindView;
/**
* @author CsHeng
* @Date 30/06/2017
* @Time 11:11 AM
*/
public class DownloadFragment extends BaseFragment_ViewPager_Checkable {
@BindView(R.id.downloadmanager_download_number)
TextView mDownloadmanagerDownloadNumber;
@BindView(R.id.downloadmanager_update_number)
TextView mDownloadmanagerUpdateNumber;
@BindView(R.id.downloadmanager_slide_line)
View mDownloadmanagerSlideLine;
private LinearLayout.LayoutParams mLayoutParams;
private int mWindowWidth;
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
checkIndex(DownloadManagerActivity.INDEX_DOWNLOAD);
}
};
public static DownloadFragment newInstance(int checkedIndex) {
final Bundle args = new Bundle(1);
args.putInt(ARGS_INDEX, checkedIndex);
final DownloadFragment fragment = new DownloadFragment();
fragment.setArguments(args);
return fragment;
}
@Override
protected boolean getSmoothScroll() {
return true;
}
@Override
protected int getCheckableGroupId() {
return R.id.lightgame_tab_container;
}
@Override
protected int getLayoutId() {
return R.layout.fragment_download;
}
@Override
protected int getViewPagerId() {
return R.id.lightgame_tab_viewpager;
}
@Override
protected void initFragmentList(List<Fragment> fragments) {
fragments.add(new GameDownloadFragment());
fragments.add(new GameUpdateFragment());
fragments.add(new FileSendFragment());
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final DisplayMetrics outMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
mWindowWidth = outMetrics.widthPixels / 3;
mLayoutParams = new LinearLayout.LayoutParams((int) (mWindowWidth * 0.7),
DisplayUtils.dip2px(getContext(), 2));
mLayoutParams.leftMargin = (int) (mWindowWidth * (mCheckedIndex + 0.17f));
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
int updateSize = PackageManager.getUpdateList().size();
if (updateSize != 0) {
mDownloadmanagerUpdateNumber.setVisibility(View.VISIBLE);
mDownloadmanagerUpdateNumber.setText(String.valueOf(updateSize));
} else {
mDownloadmanagerUpdateNumber.setVisibility(View.GONE);
}
int downloadSize = DownloadManager.getInstance(getContext()).getAll().size();
if (downloadSize != 0) {
mDownloadmanagerDownloadNumber.setVisibility(View.VISIBLE);
mDownloadmanagerDownloadNumber.setText(String.valueOf(downloadSize));
} else {
mDownloadmanagerDownloadNumber.setVisibility(View.GONE);
}
mDownloadmanagerSlideLine.setLayoutParams(mLayoutParams);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
if (positionOffset != 0) {
mLayoutParams.leftMargin = (int) (mWindowWidth * (position + positionOffset + 0.17f));
mDownloadmanagerSlideLine.setLayoutParams(mLayoutParams);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBMiPush mipush) {
if ("plugin_install".equals(mipush.getFrom())) {
checkIndex(DownloadManagerActivity.INDEX_DOWNLOAD);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBDownloadChanged changed) {
if ("download".equals(changed.getType())) {
if (changed.getVisibility() == View.VISIBLE) {
mDownloadmanagerDownloadNumber.setVisibility(View.VISIBLE);
} else if (changed.getVisibility() == View.GONE) {
mDownloadmanagerDownloadNumber.setVisibility(View.GONE);
} else if (changed.getVisibility() == View.INVISIBLE) {
mDownloadmanagerDownloadNumber.setVisibility(View.INVISIBLE);
}
mDownloadmanagerDownloadNumber.setText(String.valueOf(changed.getSize()));
} else if ("update".equals(changed.getType())) {
if (changed.getSize() == -1) {
int number = Integer.valueOf(mDownloadmanagerUpdateNumber.getText().toString());
if (number == 1) {
mDownloadmanagerUpdateNumber.setVisibility(View.GONE);
} else {
mDownloadmanagerUpdateNumber.setText(String.valueOf(number - 1));
}
} else {
if (changed.getSize() != 0) {
if (changed.getVisibility() == View.VISIBLE) {
mDownloadmanagerUpdateNumber.setVisibility(View.VISIBLE);
} else if (changed.getVisibility() == View.GONE) {
mDownloadmanagerUpdateNumber.setVisibility(View.GONE);
} else if (changed.getVisibility() == View.INVISIBLE) {
mDownloadmanagerUpdateNumber.setVisibility(View.INVISIBLE);
}
mDownloadmanagerUpdateNumber.setText(String.valueOf(changed.getSize()));
} else {
mDownloadmanagerUpdateNumber.setVisibility(View.GONE);
}
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBSkip skip) {
if (DownloadManagerActivity.TAG.equals(skip.getType())) {
if (skip.getCurrentItem() == DownloadManagerActivity.INDEX_UPDATE) {
if (getView() != null) {
getView().postDelayed(mRunnable, 300);
}
}
}
}
}

View File

@ -449,7 +449,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter<ViewHolder> {
updateEntity.getPackageName());
} else if ("更新中".equals(str) || "插件化中".equals(str)) {
notifyItemChanged(0);
EventBus.getDefault().post(new EBSkip(DownloadManagerActivity.TAG, 1));
EventBus.getDefault().post(new EBSkip(DownloadManagerActivity.TAG, DownloadManagerActivity.INDEX_UPDATE));
}
}
});
@ -577,7 +577,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter<ViewHolder> {
DataCollectionUtils.uploadDownload(mContext, downloadEntity, "开始");
notifyItemChanged(0);
EventBus.getDefault().post(new EBSkip(DownloadManagerActivity.TAG, 1));
EventBus.getDefault().post(new EBSkip(DownloadManagerActivity.TAG, DownloadManagerActivity.INDEX_UPDATE));
}
public List<GameUpdateEntity> getUpdateList() {

View File

@ -40,7 +40,7 @@ public class DownloadReceiver extends BroadcastReceiver {
ContextCompat.startActivities(context, new Intent[]{main, download});
}
// 切换到游戏下载fragment
EventBus.getDefault().post(new EBSkip(DownloadManagerActivity.TAG, 1));
EventBus.getDefault().post(new EBSkip(DownloadManagerActivity.TAG, DownloadManagerActivity.INDEX_UPDATE));
} else {
DownloadManagerActivity.startDownloadManagerActivity(context, null, ENTRANCE_DOWNLOAD);
}