| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791 |
- package com.wzkj.vzone.org.ui.fragment.history;
- import android.annotation.TargetApi;
- import android.content.Intent;
- import android.os.Build;
- import android.os.Bundle;
- import android.support.annotation.Nullable;
- import android.support.v4.app.Fragment;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.text.TextUtils;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.Button;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import com.loopj.android.http.JsonHttpResponseHandler;
- import com.loopj.android.http.RequestParams;
- import com.loopj.android.http.ResponseHandlerInterface;
- import com.readystatesoftware.systembartint.SystemBarTintManager;
- import com.tencent.bugly.crashreport.CrashReport;
- import com.wuxiaolong.pullloadmorerecyclerview.PullLoadMoreRecyclerView;
- import com.wzkj.vzone.org.R;
- import com.wzkj.vzone.org.base.Operation;
- import com.wzkj.vzone.org.common.CommonUrl;
- import com.wzkj.vzone.org.common.ConstantUtil;
- import com.wzkj.vzone.org.entity.SuccessEntity;
- import com.wzkj.vzone.org.entity.TypeGameEntity;
- import com.wzkj.vzone.org.entity.TypeTask;
- import com.wzkj.vzone.org.eventEntity.InstallInfo;
- import com.wzkj.vzone.org.listener.OnTypeTaskClickListener;
- import com.wzkj.vzone.org.ui.activity.ForumActivity;
- import com.wzkj.vzone.org.ui.activity.GameDetailTypeActivity;
- import com.wzkj.vzone.org.ui.activity.LoginActivity;
- import com.wzkj.vzone.org.util.AppTool;
- import com.wzkj.vzone.org.util.DialogTool;
- import com.wzkj.vzone.org.util.FastJsonUtils;
- import com.wzkj.vzone.org.util.ToastUtils;
- import com.wzkj.vzone.org.util.ToolFile;
- import com.wzkj.vzone.org.util.ToolHttp;
- import com.wzkj.vzone.org.util.ToolImage;
- import com.wzkj.vzone.org.util.ToolPhone;
- import com.wzkj.vzone.org.widget.progressBar.MyProgressBar;
- import com.wzkj.vzone.org.widget.roundedImageView.RoundedImageView;
- import org.apache.http.Header;
- import org.greenrobot.eventbus.EventBus;
- import org.greenrobot.eventbus.Subscribe;
- import org.json.JSONObject;
- import org.xutils.common.Callback;
- import org.xutils.common.task.PriorityExecutor;
- import org.xutils.x;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.concurrent.Executor;
- /**
- * 推荐游戏
- *
- * @author Jason
- */
- public class NetGameFragment extends Fragment {
- private PullLoadMoreRecyclerView plmrv_recommend;
- private RecyclerViewAdapter recommendAdapter;
- private List<TypeTask> currentTasks;
- private LinearLayout ll_retry;
- private Button btn_retry;
- private boolean isEmpty = true;
- private int page = 1;
- public static NetGameFragment getInstance(String title) {
- NetGameFragment sf = new NetGameFragment();
- return sf;
- }
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- EventBus.getDefault().register(this);
- }
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_net_game, null);
- /**
- * 设置状态栏背景
- */
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- setTranslucentStatus(true);
- SystemBarTintManager tintManager = new SystemBarTintManager(this.getActivity());
- tintManager.setStatusBarTintEnabled(true);
- tintManager.setStatusBarTintResource(R.color.transparent);
- tintManager.setNavigationBarTintEnabled(true);
- tintManager.setStatusBarAlpha(1f);
- }
- ll_retry = (LinearLayout) view.findViewById(R.id.ll_retry);
- btn_retry = (Button) view.findViewById(R.id.btn_retry);
- btn_retry.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (ToolHttp.checkNetwork()) { // 有网
- ll_retry.setVisibility(View.GONE);
- getCurrentGameData();
- }
- }
- });
- //正在进行的任务任务listview
- currentTasks = new ArrayList<>();
- plmrv_recommend = (PullLoadMoreRecyclerView) view.findViewById(R.id.plmrv_recommend);
- plmrv_recommend.setLinearLayout();
- plmrv_recommend.setPullRefreshEnable(false);// 需要下拉刷新
- plmrv_recommend.setPushRefreshEnable(true);// 需要上拉刷新
- plmrv_recommend.setFooterViewText("正在加载");
- recommendAdapter = new RecyclerViewAdapter(currentTasks);
- recommendAdapter.setOnTypeTaskClickListener(new OnTypeTaskClickListener() {
- @Override
- public void onCurrentTaskClick(TypeTask currentTask, String hasGift) {
- if (ConstantUtil.isUserLogin()) {
- // 把详情请求地址放在intent里传递过去
- Intent gameDetailIntent = new Intent(getActivity(), GameDetailTypeActivity.class);
- gameDetailIntent.putExtra("url", currentTask.getAnd_dow_address());
- gameDetailIntent.putExtra("gameId", currentTask.getId());
- gameDetailIntent.putExtra("packageName", currentTask.getAnd_package());
- new Operation(getActivity()).forward(gameDetailIntent);
- } else {
- new Operation(getActivity()).forward(LoginActivity.class);
- }
- }
- @Override
- public void onGameGiftClick(TypeTask currentTask) {
- if (ConstantUtil.isUserLogin()) {
- // 领取游戏礼包
- getGameGift(currentTask.getId(), 2);
- } else {
- new Operation(getActivity()).forward(LoginActivity.class);
- }
- }
- @Override
- public void onForumClick(String url) {
- if (!TextUtils.isEmpty(url)) {
- Intent forumIntent = new Intent(getActivity(), ForumActivity.class);
- forumIntent.putExtra("forum_url", url);
- startActivity(forumIntent);
- } else {
- ToastUtils.showShort(getActivity(), "暂无相关论坛资讯");
- }
- }
- });
- plmrv_recommend.setAdapter(recommendAdapter);
- plmrv_recommend.setOnPullLoadMoreListener(new PullLoadMoreRecyclerView.PullLoadMoreListener() {
- @Override
- public void onRefresh() {
- page = 1;
- getCurrentGameData();
- }
- @Override
- public void onLoadMore() {
- page++;
- getCurrentGameData();
- }
- });
- if (ToolHttp.checkNetwork()) { // 有网
- getCurrentGameData();
- } else {
- showEmptyView();
- }
- //上报后的Crash会显示该标签
- CrashReport.setUserSceneTag(getActivity(), 15489);
- //得到缓存对象
- return view;
- }
- /**
- * 设置状态栏背景
- */
- @TargetApi(19)
- private void setTranslucentStatus(boolean on) {
- Window win = getActivity().getWindow();
- WindowManager.LayoutParams winParams = win.getAttributes();
- final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
- if (on) {
- winParams.flags |= bits;
- } else {
- winParams.flags &= ~bits;
- }
- win.setAttributes(winParams);
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- EventBus.getDefault().unregister(this);
- }
- /**
- * 初始化当前任务
- */
- public void getCurrentGameData() {
- // 获取正在进行的任务
- RequestParams currentParams = new RequestParams();
- currentParams.put("platform", 0);
- currentParams.put("uid", ConstantUtil.UID);
- currentParams.put("type", 1);
- currentParams.put("page", page);// 起始页为1
- ToolHttp.getClient().get(CommonUrl.URL_TYPE_GAME, currentParams, getCurrentTaskResponseHandler());
- }
- /**
- * 获取正在进行的任务
- */
- private ResponseHandlerInterface getCurrentTaskResponseHandler() {
- return new JsonHttpResponseHandler() {
- @Override
- public void onFinish() {
- super.onFinish();
- plmrv_recommend.setPullLoadMoreCompleted();
- }
- @Override
- public void onProgress(int bytesWritten, int totalSize) {
- super.onProgress(bytesWritten, totalSize);
- }
- @Override
- public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
- super.onSuccess(statusCode, headers, response);
- if (response != null) {
- TypeGameEntity gameEntity = FastJsonUtils.stringToObject(response.toString(), TypeGameEntity.class);
- if (gameEntity != null) {
- if (gameEntity.getCode() == 200) {
- //放入缓存中
- setCurrentGameData(gameEntity, page);
- } else if (gameEntity.getCode() == 401) {
- ToastUtils.showLong(NetGameFragment.this.getActivity(), gameEntity.getMsg());
- new Operation(getActivity()).forward(LoginActivity.class);
- } else {
- ToastUtils.showLong(NetGameFragment.this.getActivity(), gameEntity.getMsg());
- }
- }
- }
- }
- @Override
- public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
- super.onFailure(statusCode, headers, throwable, errorResponse);
- if (errorResponse == null) {
- ToastUtils.showLong(NetGameFragment.this.getActivity(), ConstantUtil.ERRORMSG);
- } else {
- ToastUtils.showShort(getActivity(), errorResponse.toString());
- }
- if (page > 1) {
- page--;
- }
- }
- };
- }
- /**
- * 更新正在进行的任务
- */
- private void setCurrentGameData(TypeGameEntity gameEntity, int page) {
- if (page == 1) {
- if (currentTasks != null) {
- if (currentTasks.size() > 0) {
- currentTasks.clear();
- }
- }
- }
- List<TypeTask> games = gameEntity.getList();
- if (games == null || games.size() == 0) {
- ToastUtils.showShort(getActivity(), "没有更多数据啦");
- } else {
- currentTasks.addAll(games);
- recommendAdapter.notifyDataSetChanged();
- }
- }
- /**
- * 显示重试
- */
- private void showEmptyView() {
- if (ll_retry != null) {
- if (isEmpty) {
- ll_retry.setVisibility(View.VISIBLE);
- } else {
- ll_retry.setVisibility(View.GONE);
- }
- }
- }
- /**
- * 领取游戏礼包
- */
- private void getGameGift(String gameId, int type) {
- // 2表示游戏礼包
- RequestParams params = new RequestParams();
- params.put("uid", ConstantUtil.UID);
- params.put("token", ConstantUtil.TOKEN);
- params.put("gid", gameId);
- params.put("p_i", ToolPhone.getImei(getActivity()));
- params.put("t", type);
- ToolHttp.getClient().get(CommonUrl.gameAwardURL, params, getGameGiftResponseHandler());
- }
- /**
- * 领取游戏礼包
- */
- private ResponseHandlerInterface getGameGiftResponseHandler() {
- return new JsonHttpResponseHandler() {
- @Override
- public void onFinish() {
- super.onFinish();
- }
- @Override
- public void onProgress(int bytesWritten, int totalSize) {
- super.onProgress(bytesWritten, totalSize);
- }
- @Override
- public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
- super.onSuccess(statusCode, headers, response);
- if (response != null) {
- SuccessEntity successEntity = FastJsonUtils.stringToObject(response.toString(), SuccessEntity.class);
- if (successEntity != null) {
- // 刷新个人资料
- if (!TextUtils.isEmpty(successEntity.getNovice())) {
- DialogTool.gameGiftDialog(getActivity(), successEntity.getNovice(), successEntity.getGiftbag_name(), successEntity.getDesribe());
- } else {
- ToastUtils.showShort(getActivity(), "暂无礼包");
- }
- } else {
- ToastUtils.showShort(getActivity(), "暂无礼包");
- }
- }
- }
- @Override
- public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
- super.onFailure(statusCode, headers, throwable, errorResponse);
- ToastUtils.showShort(getActivity(), "暂无礼包");
- }
- };
- }
- class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
- private List<TypeTask> recommendTasks;
- private OnTypeTaskClickListener onTypeTaskClickListener;
- public void setOnTypeTaskClickListener(OnTypeTaskClickListener onTypeTaskClickListener) {
- this.onTypeTaskClickListener = onTypeTaskClickListener;
- }
- public RecyclerViewAdapter(List<TypeTask> recommendTasks) {
- this.recommendTasks = recommendTasks;
- }
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_net_game, null, false);
- ViewHolder viewHolder = new ViewHolder(view);
- return viewHolder;
- }
- @Override
- public void onBindViewHolder(final ViewHolder holder, final int position) {
- if (recommendTasks != null && recommendTasks.size() > 0) {
- // 海报,解决图片错乱
- final TypeTask typeTask = recommendTasks.get(position);
- if (!TextUtils.isEmpty(typeTask.getIcon())) {
- final String tag = (String) holder.riv_game_icon.getTag();
- final String uri = typeTask.getIcon();
- if (!uri.equals(tag)) {
- // 设置默认图片
- holder.riv_game_icon.setImageResource(R.mipmap.show_default);
- holder.riv_game_icon.setTag(uri);
- ToolImage.getImageLoader().displayImage(uri, holder.riv_game_icon, ToolImage.getFadeOptions(R.mipmap.show_default, R.mipmap.show_default));
- }
- } else {
- // 设置默认图片
- holder.riv_game_icon.setImageResource(R.mipmap.show_default);
- }
- // 游戏名称
- holder.tv_game_name.setText(typeTask.getGame_name());
- holder.tv_desc.setText(typeTask.getIntroduction());
- holder.tv_down_size.setText(String.format("%s %s人下载", typeTask.getGame_size(), typeTask.getDow_num()));
- final String gift = typeTask.getGift_bag();// 0" 无礼包不显示礼包按钮,"1"有礼包,显示礼包按钮
- if (TextUtils.equals(gift, "0")) {
- holder.btn_get_gift.setVisibility(View.GONE);
- } else {
- holder.btn_get_gift.setVisibility(View.VISIBLE);
- }
- holder.riv_game_icon.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (onTypeTaskClickListener != null) {
- onTypeTaskClickListener.onCurrentTaskClick(typeTask, gift);
- }
- }
- });
- holder.ll_net_game.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (onTypeTaskClickListener != null) {
- onTypeTaskClickListener.onCurrentTaskClick(typeTask, gift);
- }
- }
- });
- /**
- * 点击领取礼包
- */
- holder.btn_get_gift.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (onTypeTaskClickListener != null) {
- onTypeTaskClickListener.onGameGiftClick(typeTask);
- }
- }
- });
- /**
- * 点击论坛攻略
- */
- holder.btn_forum_tips.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (onTypeTaskClickListener != null) {
- onTypeTaskClickListener.onForumClick(typeTask.getGame_bbs());
- }
- }
- });
- // 查看当前状态
- if (typeTask.isRefreshing()) {
- // 当前状态正在刷新,隐藏下载按钮,显示进度条,并设置进度条的值
- holder.btn_download_install_open.setVisibility(View.GONE);
- holder.mpb_download_progress.setVisibility(View.VISIBLE);
- holder.mpb_download_progress.setProgress(typeTask.getProgress());
- } else {
- // 当前不是刷新状态,隐藏进度条,显示下载按钮
- holder.btn_download_install_open.setVisibility(View.VISIBLE);
- holder.mpb_download_progress.setVisibility(View.GONE);
- }
- if (AppTool.checkApkExist(getActivity(), typeTask.getAnd_package())) {
- // 游戏已安装
- holder.btn_download_install_open.setText("打开");
- holder.btn_download_install_open.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppTool.openAppByPackageName(getActivity(), typeTask.getAnd_package());
- }
- });
- } else {
- final String localGamePath = ConstantUtil.LOCAL_DOWNLOAD_PATH+typeTask.getGame_name()+".apk";
- typeTask.setGameLocalPath(localGamePath);
- File file = new File(localGamePath);
- if (file.exists()) {
- // 游戏已下载,但还没安装
- holder.btn_download_install_open.setText("安装");
- holder.btn_download_install_open.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppTool.install(getActivity(), localGamePath);
- }
- });
- } else {
- // 游戏还没下载
- holder.btn_download_install_open.setText("下载");
- holder.btn_download_install_open.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // 下载游戏之前的准备工作
- if (TextUtils.isEmpty(typeTask.getAnd_dow_address())) {
- ToastUtils.showShort(getActivity(), "游戏下载地址为空");
- return;
- }
- int gameSize = 0;
- try {
- gameSize = Integer.parseInt(typeTask.getGame_size().toLowerCase().replace("m", "").replace("b", ""));
- } catch (Exception e) {
- e.printStackTrace();
- }
- if (gameSize > ToolFile.getSDFreeSize()) {
- ToastUtils.showShort(getActivity(), "存储空间不足,请清理缓存后重试");
- return;
- }
- if (!TextUtils.isEmpty(typeTask.getGameLocalPath())) {
- } else {
- ToastUtils.showShort(getActivity(), "未找到本地下载路径");
- }
- if (ConstantUtil.DOWNLOAD_TASKS != null && ConstantUtil.DOWNLOAD_TASKS.size() > 3) {
- ToastUtils.showShort(getActivity(), "您最多能同时下载3个任务");
- return;
- }
- typeTask.setRefreshing(true);// 状态为正在刷新
- holder.btn_download_install_open.setVisibility(View.GONE);// 开始下载,隐藏下载按钮
- holder.mpb_download_progress.setVisibility(View.VISIBLE);// 显示进度条
- holder.mpb_download_progress.setProgress(0);// 初始化进度为0%
- downloadGame(position, typeTask);
- // 已开始下载的话
- }
- });
- }
- }
- // 点击进度条取消当前任务
- holder.mpb_download_progress.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (ConstantUtil.DOWNLOAD_TASKS != null) {
- Callback.Cancelable cancelable = ConstantUtil.DOWNLOAD_TASKS.get(typeTask.getId());
- if (cancelable != null) {
- cancelable.cancel();
- }
- typeTask.setRefreshing(false);// 现在停止刷新
- holder.mpb_download_progress.setVisibility(View.GONE);// 隐藏进度条
- holder.btn_download_install_open.setVisibility(View.VISIBLE);// 显示下载|安装|打开按钮
- }
- }
- });
- }
- }
- @Override
- public int getItemCount() {
- return recommendTasks == null ? 0 : recommendTasks.size();
- }
- public class ViewHolder extends RecyclerView.ViewHolder {
- LinearLayout ll_net_game;
- RoundedImageView riv_game_icon;
- Button btn_forum_tips;
- Button btn_get_gift;
- TextView tv_game_name;
- TextView tv_desc;// 描述
- TextView tv_down_size;// 描述
- Button btn_download_install_open;
- MyProgressBar mpb_download_progress;
- public ViewHolder(View itemView) {
- super(itemView);
- // 这里查找控件
- ll_net_game = (LinearLayout) itemView.findViewById(R.id.ll_net_game);
- riv_game_icon = (RoundedImageView) itemView.findViewById(R.id.riv_game_icon);
- btn_forum_tips = (Button) itemView.findViewById(R.id.btn_forum_tips);
- btn_get_gift = (Button) itemView.findViewById(R.id.btn_get_gift);
- tv_game_name = (TextView) itemView.findViewById(R.id.tv_game_name);
- tv_desc = (TextView) itemView.findViewById(R.id.tv_desc);
- tv_down_size = (TextView) itemView.findViewById(R.id.tv_down_size);
- btn_download_install_open = (Button) itemView.findViewById(R.id.btn_download_install_open);
- mpb_download_progress = (MyProgressBar) itemView.findViewById(R.id.mpb_download_progress);
- }
- }
- }
- private final Executor executor = new PriorityExecutor(8, true);
- /**
- * 下载游戏,这个方法在Activity销毁之后仍会继续执行
- */
- private void downloadGame(final int position, final TypeTask typeTask) {
- org.xutils.http.RequestParams params = new org.xutils.http.RequestParams(typeTask.getAnd_dow_address());
- params.setAutoResume(true);
- params.setAutoRename(false);
- params.setSaveFilePath(typeTask.getGameLocalPath());
- params.setExecutor(executor);
- params.setCancelFast(true);
- Callback.Cancelable downloadTask = x.http().get(params, new Callback.ProgressCallback<File>() {
- @Override
- public void onWaiting() {
- }
- @Override
- public void onStarted() {
- }
- @Override
- public void onLoading(long total, long current, boolean isDownloading) {
- // 更新下载进度
- int progress = (int)(current*100/total);
- // 把进度写进我们的对象里
- typeTask.setProgress(progress);
- // 发送进度广播
- Intent processIntent = new Intent("process");
- processIntent.putExtra("process", progress);
- processIntent.putExtra("id", typeTask.getId());
- getActivity().sendBroadcast(processIntent);
- updateProgress(position, typeTask, false);
- }
- @Override
- public void onSuccess(File result) {
- }
- @Override
- public void onError(Throwable ex, boolean isOnCallback) {
- ToastUtils.showShort(getActivity(), "下载失败");
- typeTask.setRefreshing(false);
- // 发送下载失败广播
- Intent processIntent = new Intent();
- processIntent.putExtra("process", -1);
- processIntent.putExtra("id", typeTask.getId());
- getActivity().sendBroadcast(processIntent);
- updateProgress(position, typeTask, true);
- }
- @Override
- public void onCancelled(CancelledException cex) {
- }
- @Override
- public void onFinished() {
- // 从列表中移除
- if (ConstantUtil.DOWNLOAD_TASKS != null) {
- ConstantUtil.DOWNLOAD_TASKS.remove(typeTask.getId());
- }
- typeTask.setRefreshing(false);// 无论是下载完成还是下载失败,此时状态为停止刷新
- }
- });
- // 下载任务放进队列里
- if (ConstantUtil.DOWNLOAD_TASKS == null) {
- ConstantUtil.DOWNLOAD_TASKS = new HashMap<>();
- }
- ConstantUtil.DOWNLOAD_TASKS.put(typeTask.getId(), downloadTask);
- }
- /**
- * 更新控件的进度,注意要判空
- * @param position 要更新的位置
- * @param isError 是否发生错误(下载失败)
- */
- public void updateProgress(int position, final TypeTask typeTask, boolean isError) {
- // 根据点击的position找到之前点击的下载按钮所在的ViewHolder
- RecyclerViewAdapter.ViewHolder viewHolder = (RecyclerViewAdapter.ViewHolder) plmrv_recommend.getRecyclerView().findViewHolderForAdapterPosition(position);
- if (viewHolder != null) {
- // 通过viewholder可以找回我们刚才点击的按钮和进度条
- Button btn_download_install_open = viewHolder.btn_download_install_open;
- MyProgressBar mpb_download_progress = viewHolder.mpb_download_progress;
- if (isError) {
- // 下载过程发生错误,显示下载按钮,隐藏进度条
- btn_download_install_open.setVisibility(View.VISIBLE);
- mpb_download_progress.setVisibility(View.GONE);
- } else {
- // 更新进度
- mpb_download_progress.setProgress(typeTask.getProgress());
- if (typeTask.getProgress() == 100) {
- if (AppTool.checkApkExist(getActivity(), typeTask.getAnd_package())) {
- btn_download_install_open.setText("打开");
- btn_download_install_open.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppTool.openAppByPackageName(getActivity(), typeTask.getAnd_package());
- }
- });
- } else {
- btn_download_install_open.setText("安装");
- btn_download_install_open.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppTool.install(getActivity(), typeTask.getGameLocalPath());
- }
- });
- }
- btn_download_install_open.setVisibility(View.VISIBLE);
- mpb_download_progress.setVisibility(View.GONE);
- } else {
- btn_download_install_open.setVisibility(View.GONE);
- mpb_download_progress.setVisibility(View.VISIBLE);
- }
- }
- }
- }
- @Subscribe
- public void onEventMainThread(final InstallInfo installInfo) {
- // 安装完成
- if (plmrv_recommend == null) {
- return;
- }
- for (int i = 0, j = plmrv_recommend.getLayoutManager().getChildCount(); i < j; i++) {
- if (TextUtils.equals(currentTasks.get(i).getAnd_package(), installInfo.getPackageName())) {
- View view = plmrv_recommend.getLayoutManager().findViewByPosition(i);
- Button btn_download_install_open = (Button) view.findViewById(R.id.btn_download_install_open);
- btn_download_install_open.setText("打开");
- btn_download_install_open.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppTool.openAppByPackageName(getActivity(), installInfo.getPackageName());
- }
- });
- if (ConstantUtil.deleteAfterInstall) {
- // 自动删除
- File file = new File(currentTasks.get(i).getGameLocalPath());
- if (file.exists()) {
- file.delete();
- }
- }
- break;
- }
- }
- }
- }
|