Files
assistant-android/app/src/main/java/com/gh/gamecenter/adapter/FileReceiverAdapter.java
2017-03-07 09:46:54 +08:00

182 lines
8.5 KiB
Java

package com.gh.gamecenter.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Environment;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.gh.common.util.DisplayUtils;
import com.gh.common.util.PackageUtils;
import com.gh.common.util.SpeedUtils;
import com.gh.gamecenter.FileReceiverActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.KcSelectGameViewHolder;
import com.gh.gamecenter.kuaichuan.FileInfo;
import java.text.DecimalFormat;
import java.util.List;
/**
* Created by khy on 2017/1/22.
*/
public class FileReceiverAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private List<FileInfo> mFileInfos;
private long lastProgress;
private OnReceiverCancelListener cancelListener;
public FileReceiverAdapter(FileReceiverActivity activity, List<FileInfo> infos) {
this.mContext = activity;
this.cancelListener = activity;
mFileInfos = infos;
}
/**
* 更新数据
*/
public void update(){
// mFileInfos = (List<FileInfo>) AppController.get("FileInfo", false);
notifyItemRangeChanged(0, getItemCount());
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.kc_game_select_item, parent, false);
return new KcSelectGameViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
final FileInfo fileInfo = mFileInfos.get(position);
if (holder instanceof KcSelectGameViewHolder) {
final KcSelectGameViewHolder viewHolder = (KcSelectGameViewHolder) holder;
viewHolder.gameNameAndSize.setText(fileInfo.getName());
viewHolder.downloadStatus.setVisibility(View.VISIBLE);
viewHolder.sendOverIcon.setVisibility(View.GONE);
viewHolder.gameProgressbar.setMax(100);
viewHolder.gameProgressbar.setVisibility(View.VISIBLE);
viewHolder.gameLlInfo.setVisibility(View.VISIBLE);
viewHolder.gameSize.setVisibility(View.GONE);
viewHolder.gameNameAndSize.setPadding(0, 0, 0, DisplayUtils.dip2px(mContext, 5));
if (fileInfo.getBitmap() != null) {
viewHolder.gameThumb.setImageBitmap(fileInfo.getBitmap());
} else {
viewHolder.gameThumb.setImageResource(R.drawable.ocupy);
}
viewHolder.downloadSpeed.setText("等待中");
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.content));
viewHolder.gameProgressbar.setProgress(0);
viewHolder.sendOverIcon.setVisibility(View.GONE);
viewHolder.downloadStatus.setText("取消");
viewHolder.downloadStatus.setTextColor(mContext.getResources().getColor(R.color.content));
viewHolder.downloadStatus.setBackgroundResource(R.drawable.kuaichuan_cancel_bg);
int percent = (int)(fileInfo.getProgress() * 100 / fileInfo.getSize());
viewHolder.downloadPercentage.setText(percent + "%");
if (fileInfo.getResult() == FileInfo.FLAG_SUCCESS || fileInfo.getResult() == FileInfo.FLAG_INSTALLED) { // 传输完成...
viewHolder.gameProgressbar.setProgress(100);
viewHolder.downloadPercentage.setText("100%");
if (fileInfo.getResult() == FileInfo.FLAG_SUCCESS) {
viewHolder.downloadStatus.setText("安装");
viewHolder.downloadStatus.setTextColor(Color.WHITE);
viewHolder.downloadStatus.setBackgroundResource(R.drawable.game_item_btn_download_style);
} else {
viewHolder.downloadStatus.setText("已安装");
viewHolder.downloadStatus.setTextColor(mContext.getResources().getColor(R.color.theme));
viewHolder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0));
}
double size = (((float)fileInfo.getSize()/1024)/1024);
DecimalFormat df = new DecimalFormat("0.00");
String sizeName = df.format(size) + "MB";
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.content));
viewHolder.downloadSpeed.setText(sizeName + "/" + sizeName);
} else if (fileInfo.getResult() == FileInfo.FLAG_FAILURE || fileInfo.getResult() == FileInfo.FLAG_NO_MEMORY) { // 传输失败...
double sizeMb = (((float)fileInfo.getSize()/1024)/1024);
double curSizeMb = (((float)fileInfo.getProgress()/1024)/1024);
DecimalFormat df = new DecimalFormat("0.00");
String sizeName = df.format(sizeMb) + "MB";
String curSizeName = df.format(curSizeMb) + "MB";
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.content));
viewHolder.downloadSpeed.setText(curSizeName + "/" + sizeName);
viewHolder.downloadStatus.setTextColor(mContext.getResources().getColor(R.color.type_huodong));
viewHolder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0));
viewHolder.gameProgressbar.setProgress(percent);
// viewHolder.downloadPercentage.setText(percent + "%");
if (fileInfo.getResult() == FileInfo.FLAG_FAILURE) {
viewHolder.downloadStatus.setText("传输失败");
} else {
viewHolder.downloadStatus.setText("空间不足");
}
} else if (fileInfo.getResult() == FileInfo.FLAG_CANCEL) { // 取消传输
double sizeMb = (((float)fileInfo.getSize()/1024)/1024);
double curSizeMb = (((float)fileInfo.getProgress()/1024)/1024);
DecimalFormat df = new DecimalFormat("0.00");
String sizeName = df.format(sizeMb) + "MB";
String curSizeName = df.format(curSizeMb) + "MB";
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.content));
viewHolder.downloadSpeed.setText(curSizeName + "/" + sizeName);
viewHolder.downloadStatus.setText("已取消");
viewHolder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0));
viewHolder.gameProgressbar.setProgress(percent);
// viewHolder.downloadPercentage.setText(percent + "%");
} else if (fileInfo.getResult() == FileInfo.FLAG_DEFAULT){ // 传输中...
viewHolder.gameProgressbar.setProgress(percent);
viewHolder.downloadStatus.setText("取消");
viewHolder.downloadStatus.setTextColor(mContext.getResources().getColor(R.color.content));
viewHolder.downloadStatus.setBackgroundResource(R.drawable.kuaichuan_cancel_bg);
long speed = (fileInfo.getProgress() - lastProgress) / 1024;
if (speed < 0) {
speed = 0;
}
// viewHolder.downloadPercentage.setText(percent + "%");
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.theme));
viewHolder.downloadSpeed.setText(String.format("%s(剩%s)",
SpeedUtils.getSpeed(speed),
SpeedUtils.getRemainTime(fileInfo.getSize(), fileInfo.getProgress(), speed * 1024)));
lastProgress = fileInfo.getProgress();
}
viewHolder.downloadStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = viewHolder.downloadStatus.getText().toString();
if ("取消".equals(s)) {
cancelListener.OnCancelPosition(position);
} else if ("安装".equals(s)) {
PackageUtils.launchSetup(mContext, Environment.getExternalStorageDirectory() + "/GH-KC/" + fileInfo.getName() + ".apk");
}
}
});
}
}
@Override
public int getItemCount() {
if (mFileInfos == null) {
return 0;
}
return mFileInfos.size();
}
public interface OnReceiverCancelListener {
void OnCancelPosition(int position);
}
}