安卓中异步任务实现带下载进度的根据图片地址下载图片
来源:互联网 发布:三季稻知乎 编辑:程序博客网 时间:2024/05/23 10:56
点击下载后将图片显示出来:
布局文件:
<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="center" > <ImageView android:id="@+id/img" android:layout_width="300dp" android:layout_height="300dp" android:src="@drawable/liu" android:background="#00ff00" /> <Button android:id="@+id/bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载图片" android:onClick="download"/> <Button android:id="@+id/cancle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取消下载" android:onClick="cancle"/></LinearLayout></span>
逻辑代码文件:
<span style="font-size:18px;">package mars.day7_download;import java.io.ByteArrayOutputStream;import java.io.InputStream;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.app.Activity;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.widget.ImageView;public class DownloadP extends Activity {ImageView img;DownloadTask downloadtask;String imgurl="http://www.guaiwei.com/uploads/allimg/150326/28-150326141503.png";ProgressDialog progressdialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.download_picture);img=(ImageView) findViewById(R.id.img);}public void download(View v){downloadtask=new DownloadTask();downloadtask.execute(imgurl);}public void cancle(View v){downloadtask.cancel(true);}//异步类public class DownloadTask extends AsyncTask<String,Integer,byte[]>{//首次调用加载@Overrideprotected void onPreExecute() {super.onPreExecute();progressdialog=new ProgressDialog(DownloadP.this);progressdialog.setTitle("下载图片");progressdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressdialog.setMessage("正在下载...");progressdialog.show();}//下载@Overrideprotected byte[] doInBackground(String... params) {if(!this.isCancelled()){//创建请求客户端HttpClient hclient=new DefaultHttpClient();//请求 imgurl=params[0]HttpGet request=new HttpGet(params[0]);//字节输出流存放要下载的文件ByteArrayOutputStream bo=new ByteArrayOutputStream();try {//得到客户端执行请求的结果HttpResponse response=hclient.execute(request);//请求成功执行的操作if(response.getStatusLine().getStatusCode()==200){//得到请求的实体内容InputStream in = response.getEntity().getContent();byte b[]=new byte[1024];int count=0;//得到文件的长度long file_length = response.getEntity().getContentLength();//每次读取的长度int current_length = 0;while((count=in.read(b))!=-1){//当前下载的长度current_length+=count;//当前下载进度的百分比int progress = (int)((current_length/(float)file_length)*100);//发送刻度单位到ui线程,onProgressUpdate里进行更新进度,显示到进度条publishProgress(progress);bo.write(b,0,count);bo.flush();}}//流转换成数组返回return bo.toByteArray();} catch (Exception e) {e.printStackTrace();}}return null;}//下载完成执行,更新ui@Overrideprotected void onPostExecute(byte[] result) {super.onPostExecute(result);//下载的内容传过来后解码放到位图工厂bo.toByteArray()=resultBitmap bm = BitmapFactory.decodeByteArray(result, 0, result.length);//显示到图片控件img.setImageBitmap(bm);progressdialog.dismiss();}//更新进度@Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);//progress=values[0]progressdialog.setProgress(values[0]);}@Overrideprotected void onCancelled() {super.onCancelled();progressdialog.dismiss();downloadtask.cancel(true);}}}</span>
0 0
- 安卓中异步任务实现带下载进度的根据图片地址下载图片
- 异步任务下载图片,带进度条
- 异步下载图片的任务
- 利用异步任务类AsyncTask下载图片,并且带进度对话框
- 异步任务下载网络图片
- 使用异步任务下载图片~
- 根据 url地址 下载图片
- 异步操作AsyncTask(二)从网络下载图片(带下载进度数据)
- java根据图片的url地址下载图片到本地
- android:异步任务asyncTask介绍及异步任务下载图片(带进度条)
- Android - 异步下载图片的简单实现
- 安卓多线程编程系列2:异步任务的使用之使用异步任务带有进度的横向滚动条下载网络图片
- AysncTask实现异步下载图片
- AsyncTask 异步任务下载文字or图片
- Android有进度条异步任务下载图片
- AsyncTask 异步任务下载网络图片
- 使用异步任务-AsyncTask下载远程图片
- Android使用异步任务下载图片
- poj 2377 最小生成树(kruskal算法)
- HDU 5437 Alisha’s Party
- hdu 5024 Wang Xifeng's Little Plot(搜索)
- 猜商品价格
- ios开发-新浪微博12-(标题按钮的箭头上下翻转)
- 安卓中异步任务实现带下载进度的根据图片地址下载图片
- Python学习资料与博客推荐
- Yii2.0 邮件配置
- PHP中文乱码的三个原因及解决方法
- 2199 Can you solve this equation?
- 南山南原版G调
- 《深入理解计算机系统》读书笔记6---各种echo服务器的实现
- LeetCode(74) Search a 2D Matrix
- 算法 学习