package com.lzy.okhttpdemo.fragment; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; import com.lzy.okhttpdemo.Bean.ApkInfo; import com.lzy.okhttpdemo.R; import com.lzy.okhttpdemo.activity.DesActivity; import com.lzy.okhttpdemo.activity.DownloadManagerActivity; import com.lzy.okhttpdemo.utils.AppCacheUtils; import com.lzy.okhttpserver.download.DownloadManager; import com.lzy.okhttpserver.download.DownloadService; import com.lzy.okhttputils.OkHttpUtils; import com.lzy.okhttputils.request.GetRequest; import java.util.ArrayList; public class DownloadFragment extends Fragment { private ArrayList<ApkInfo> apks; private MyAdapter adapter; private DownloadManager downloadManager; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_download, container, false); initData(); downloadManager = DownloadService.getDownloadManager(); TextView targetFolder = (TextView) view.findViewById(R.id.targetFolder); targetFolder.setText("下载路径: " + downloadManager.getTargetFolder()); final TextView tvCorePoolSize = (TextView) view.findViewById(R.id.tvCorePoolSize); SeekBar sbCorePoolSize = (SeekBar) view.findViewById(R.id.sbCorePoolSize); sbCorePoolSize.setMax(5); sbCorePoolSize.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { downloadManager.getThreadPool().setCorePoolSize(progress); tvCorePoolSize.setText(String.valueOf(progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); sbCorePoolSize.setProgress(3); ListView listView = (ListView) view.findViewById(R.id.listView); adapter = new MyAdapter(); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(getContext(), DesActivity.class); intent.putExtra("apk", apks.get(position)); startActivity(intent); } }); view.findViewById(R.id.openManager).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(getContext(), DownloadManagerActivity.class)); } }); return view; } /** * 当前 Fragment 显示的时候回调 */ @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) adapter.notifyDataSetChanged(); } /** * 当前Activity显示的回调 */ @Override public void onResume() { super.onResume(); adapter.notifyDataSetChanged(); } private class MyAdapter extends BaseAdapter { @Override public int getCount() { return apks.size(); } @Override public ApkInfo getItem(int position) { return apks.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(getContext(), R.layout.item_download_details, null); } final ApkInfo apk = getItem(position); TextView name = (TextView) convertView.findViewById(R.id.name); ImageView icon = (ImageView) convertView.findViewById(R.id.icon); final Button download = (Button) convertView.findViewById(R.id.download); if (downloadManager.getDownloadInfo(apk.getUrl()) != null) { download.setText("已在队列"); download.setEnabled(false); } else { download.setText("下载"); download.setEnabled(true); } name.setText(apk.getName()); Glide.with(getContext()).load(apk.getIconUrl()).error(R.mipmap.ic_launcher).into(icon); download.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (downloadManager.getDownloadInfo(apk.getUrl()) != null) { Toast.makeText(getContext(), "任务已经在下载列表中", Toast.LENGTH_SHORT).show(); } else { GetRequest request = OkHttpUtils.get(apk.getUrl())// .headers("headerKey1", "headerValue1")// .headers("headerKey2", "headerValue2")// .params("paramKey1", "paramValue1")// .params("paramKey2", "paramValue2"); downloadManager.addTask(apk.getUrl(), request, null); AppCacheUtils.getInstance(getContext()).put(apk.getUrl(), apk); download.setText("已在队列"); download.setEnabled(false); } } }); return convertView; } } private void initData() { apks = new ArrayList<>(); ApkInfo apkInfo1 = new ApkInfo(); apkInfo1.setName("美丽加"); apkInfo1.setIconUrl("http://pic3.apk8.com/small2/14325422596306671.png"); apkInfo1.setUrl("http://download.apk8.com/d2/soft/meilijia.apk"); apks.add(apkInfo1); ApkInfo apkInfo2 = new ApkInfo(); apkInfo2.setName("果然方便"); apkInfo2.setIconUrl("http://pic3.apk8.com/small2/14313175771828369.png"); apkInfo2.setUrl("http://download.apk8.com/d2/soft/guoranfangbian.apk"); apks.add(apkInfo2); ApkInfo apkInfo3 = new ApkInfo(); apkInfo3.setName("薄荷"); apkInfo3.setIconUrl("http://pic3.apk8.com/small2/14308183888151824.png"); apkInfo3.setUrl("http://download.apk8.com/d2/soft/bohe.apk"); apks.add(apkInfo3); ApkInfo apkInfo4 = new ApkInfo(); apkInfo4.setName("GG助手"); apkInfo4.setIconUrl("http://pic3.apk8.com/small2/14302008166714263.png"); apkInfo4.setUrl("http://download.apk8.com/d2/soft/GGzhushou.apk"); apks.add(apkInfo4); ApkInfo apkInfo5 = new ApkInfo(); apkInfo5.setName("红包惠锁屏"); apkInfo5.setIconUrl("http://pic3.apk8.com/small2/14307106593913848.png"); apkInfo5.setUrl("http://download.apk8.com/d2/soft/hongbaohuisuoping.apk"); apks.add(apkInfo5); ApkInfo apkInfo6 = new ApkInfo(); apkInfo6.setName("快的打车"); apkInfo6.setIconUrl("http://up.apk8.com/small1/1439955061264.png"); apkInfo6.setUrl("http://download.apk8.com/soft/2015/%E5%BF%AB%E7%9A%84%E6%89%93%E8%BD%A6.apk"); apks.add(apkInfo6); ApkInfo apkInfo7 = new ApkInfo(); apkInfo7.setName("叮当快药"); apkInfo7.setIconUrl("http://pic3.apk8.com/small2/14315954626414886.png"); apkInfo7.setUrl("http://d2.apk8.com:8020/soft/dingdangkuaiyao.apk"); apks.add(apkInfo7); ApkInfo apkInfo8 = new ApkInfo(); apkInfo8.setName("悦跑圈"); apkInfo8.setIconUrl("http://pic3.apk8.com/small2/14298490191525146.jpg"); apkInfo8.setUrl("http://d2.apk8.com:8020/soft/yuepaoquan.apk"); apks.add(apkInfo8); ApkInfo apkInfo9 = new ApkInfo(); apkInfo9.setName("悠悠导航"); apkInfo9.setIconUrl("http://pic3.apk8.com/small2/14152456988840667.png"); apkInfo9.setUrl("http://d2.apk8.com:8020/soft/%E6%82%A0%E6%82%A0%E5%AF%BC%E8%88%AA2.3.32.1.apk"); apks.add(apkInfo9); ApkInfo apkInfo10 = new ApkInfo(); apkInfo10.setName("虎牙直播"); apkInfo10.setIconUrl("http://up.apk8.com/small1/1439892235841.jpg"); apkInfo10.setUrl("http://download.apk8.com/down4/soft/hyzb.apk"); apks.add(apkInfo10); } }