Android--异步加载图片
来源:互联网 发布:api数据接口 编辑:程序博客网 时间:2024/05/17 19:21
/* * Android 异步任务AsyncTask * AsyncTask定义了三种泛型类,Params,Progress,Result */ package rw.ansync; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; public class AsynaTask_TestActivity extends Activity { /** Called when the activity is first created. */ private EditText editText; private Button button; private ProgressBar progressBar; private ImageView imageView; private static final String URL_STRING="http://photocdn.sohu.com/20110927/Img320705637.jpg"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); editText=(EditText) findViewById(R.id.editText1); editText.setText(URL_STRING); button=(Button) findViewById(R.id.button1); progressBar=(ProgressBar) findViewById(R.id.progressBar1); imageView=(ImageView) findViewById(R.id.imageView1); button.setOnClickListener(new ButtonListener()); } class ButtonListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub MyAsynaTask mTask=new MyAsynaTask(imageView, progressBar,button); mTask.execute(URL_STRING); } } }
package rw.ansync; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.R.integer; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.widget.Button; import android.widget.ImageView; import android.widget.ProgressBar; public class MyAsynaTask extends AsyncTask<String, Integer, Bitmap>{ private ImageView imageView; private ProgressBar progressBar; private Button button; public MyAsynaTask( ImageView imageView, ProgressBar progressBar,Button button) { super(); this.imageView = imageView; this.progressBar = progressBar; this.button=button; } @Override protected void onPreExecute() { // TODO Auto-generated method stub /* * 改方法在执行实际的后台操作时被UI线程调用,可以在该方法中做一些准备工作,比如 * Toast.makeText(context, "准备下载", Toast.LENGTH_LONG).show(); */ super.onPreExecute(); } @Override protected Bitmap doInBackground(String... params) {//输入编变长的可变参数 和UI线程中的Asyna.execute()对应 // TODO Auto-generated method stub /* * 该方法在OnpreExecute执行以后马上执行,改方法执行在后台线程当中,负责耗时的计算,可以调用publishProcess方法来实时更新任务进度 */ Bitmap bitmap=null; try { URL url=new URL(params[0]); HttpURLConnection connection=(HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); progressBar.setMax(connection.getContentLength()); InputStream inputStream=connection.getInputStream(); bitmap=BitmapFactory.decodeStream(inputStream); // inputStream.close(); /* * 以下完全为了演示进度条,如果为了显示进度条可以把这个去掉 */ /* byte []buf=new byte[1024*4]; inputStream=connection.getInputStream(); int len=0; while ((inputStream.read(buf))!=-1) { len+=buf.length; publishProgress(len); } */ inputStream.close(); } catch (Exception e) { // TODO: handle exception } return bitmap; } @Override protected void onProgressUpdate(Integer... values) { // TODO Auto-generated method stub /* * 当publichProcess 呗调用以后,UI线程将调用这个有方法在界面上展示任务的情况,比如一个额进度条。这里是更新进度条 */ int value=values[0]; progressBar.setProgress(value); super.onProgressUpdate(values); } @Override protected void onPostExecute(Bitmap result) { // TODO Auto-generated method stub /* * 在doInbackground执行完成以后,onPostExecute将被调用,后台的结果将返回给UI线程,将获得图片显示出来 */ imageView.setImageBitmap(result); button.setText("下载完成"); super.onPostExecute(result); } }
阅读全文
0 0
- android异步加载图片
- android 异步加载图片
- android异步加载图片
- android异步加载图片
- Android 异步加载图片
- Android 异步加载图片
- Android图片异步加载
- Android图片异步加载
- Android图片异步加载
- Android异步加载图片
- android异步加载图片
- Android图片异步加载
- Android 图片异步加载
- android异步加载图片
- 异步图片加载 Android
- Android 图片异步加载
- Android 图片异步加载
- Android 异步加载图片
- EasyDSS RTMP流媒体服务器搭建直播集群
- Thinking in java-36 Regular expression正则表达式
- C输入与输出
- Linux下TCP协议的C/S架构实现
- java多线程之yeild学习
- Android--异步加载图片
- 模拟实现sleep函数——mysleep()
- 服务器主动断开连接异常
- JAR、WAR、EAR的使用和区别
- 【java】数组的12个最佳方法
- Codeforces 822B Crossword solving
- python的协程简单示例
- window下MySQL、PHP、Apache配置记录
- 80C51串行口