android-使用AsyncTask做下载进度条
来源:互联网 发布:sql server 实训报告 编辑:程序博客网 时间:2024/05/20 07:15
效果:
代码:
package com.example.android_asynctask_download2;import android.support.v7.app.ActionBarActivity;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends ActionBarActivity {private Button button;private ImageView imageView;private ProgressDialog dialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button1);imageView = (ImageView) this.findViewById(R.id.imageView1);dialog = new ProgressDialog(MainActivity.this);dialog.setCancelable(false);// 让dialog不能失去焦点,一直在最上层显示button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 执行异步任务的操作new MyAsynTask().execute("http://c.hiphotos.baidu.com/zhidao/pic/item/730e0cf3d7ca7bcb48f80cb9bc096b63f724a8a1.jpg");}});}/** * 使用异步任务的规则: 1、生命一个集成AsyncTask标注三个参数的类型 2、第一个参数标识要执行的任务通常是网络的路径 * 3、第二个参数表示进度的刻度 4、第三个参数表示任务执行的结果 */public class MyAsynTask extends AsyncTask<String, Integer, Bitmap> {// 表示任务执行之前的操作@Overrideprotected void onPreExecute() {super.onPreExecute();dialog.setTitle("进度条");dialog.setMessage("正在加载图片,请稍后...");dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);dialog.show();}// 主要完成耗时操作@Overrideprotected Bitmap doInBackground(String... params) {Bitmap bitmap = null;InputStream inputStream = null; try {URL url = new URL(params[0]);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setConnectTimeout(3000);connection.setRequestMethod("GET");connection.setDoInput(true);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();if (connection.getResponseCode() == 200) {int file_length = connection.getContentLength();inputStream = connection.getInputStream();int len = 0;byte[] data = new byte[1024];int total_length = 0;while ((len = inputStream.read(data)) != -1) {total_length += len;outputStream.write(data, 0, len);int value = (int) ((total_length / (float) file_length) * 100);publishProgress(value);// 通过publishProgress将进度传递到onProgressUpdate中对进度更新}bitmap = BitmapFactory.decodeByteArray(outputStream.toByteArray(), 0, outputStream.size());}} catch (Exception e) {e.printStackTrace();}finally{if(inputStream!=null)try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}return bitmap;}// 更新进度条操作@Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);dialog.setProgress(values[0]);}// 主要更新UI操作@Overrideprotected void onPostExecute(Bitmap result) {super.onPostExecute(result);imageView.setImageBitmap(result);dialog.dismiss();}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}
0 0
- Android中使用AsyncTask做下载进度条
- android-使用AsyncTask做下载进度条
- android AsyncTask异步下载并更新进度条
- Android 异步AsyncTask下载 含有进度条
- Android AsyncTask下载图片和ProgressBar进度条
- 使用AsyncTask下载图片并显示进度条
- android使用AsyncTask来实现更新进度条
- android AsyncTask下载并更新进度条运用例子
- Android自定义圆形进度条,结合AsyncTask下载显示进度
- Android带进度条的文件上传,使用AsyncTask异步任务
- Android 使用 AsyncTask 来下载图片
- Android使用AsyncTask下载显示图片
- (androidStudio)AsyncTask+进度条实现网络下载图片
- AsyncTask 牛刀小试,实现下载进度条更新,ProgressBar
- Android 多线程AsyncTask 之二。异步下载网络图片带有进度条、
- android:异步任务asyncTask介绍及异步任务下载图片(带进度条)
- 使用AsyncTask弹出进度条ProgressDialog,利用网上的某音乐地址下载歌曲
- AsyncTask 的简单使用,给定一个uri地址下载图片,并显示进度条
- 简单自定义Toast
- 14.IntelliJ IDEA 项目相关的几个重要概念介绍 - IntelliJ IDEA 使用教程
- poj3041 最小点覆盖即最大匹配(匈牙利算法)(模板)
- 15.Hello World 项目创建与项目配置文件介绍 - IntelliJ IDEA 使用教程
- Android开发使用的常见第三方框架汇总
- android-使用AsyncTask做下载进度条
- EF框架—Code-First
- windows程序消息处理流程
- iOS开发中nil、Nil、NULL和[NSNull null]的区别
- 直接选择排序
- 第九周-不定工资数
- 16.版本控制的使用 - IntelliJ IDEA 使用教程
- 关于javaWeb的Filter过滤器
- C语言中如何避免野指针