您的位置:首页 > 移动开发 > Android开发

Android:AysncTask异步加载

2015-10-05 23:04 429 查看
以下是链接:

/article/3659499.html

http://keeponmoving.iteye.com/blog/1515611

/article/6413480.html

http://blog.csdn.net/lanjianhun/article/details/8675299

http://blog.csdn.net/alex0203/article/details/7646973

http://www.cnphp6.com/archives/58164

http://blog.csdn.net/weihan1314/article/details/8045993

转:

package com.wyl.myasyctask;

import java.io.InputStream;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {
private static final String sImageUrl = "http://fashion.qqread.com/ArtImage/20110225/0083_13.jpg";
private Button mLoadButton;
private ImageView mImageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Log.i("UI thread", " >> onCreate()");

mImageView = (ImageView) this.findViewById(R.id.ImageVivew);

mLoadButton = (Button) this.findViewById(R.id.LoadButton);
mLoadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoadImageTask task = new LoadImageTask(v.getContext());
task.execute(sImageUrl);// 源码中得知,会调用onPreExecute()...方法
}
});

}

class LoadImageTask extends AsyncTask<String, Integer, Bitmap> {
private ProgressDialog mProgressBar;

LoadImageTask(Context context) {
mProgressBar = new ProgressDialog(context);
mProgressBar.setCancelable(true);
mProgressBar.setMessage("setMessage()...");
mProgressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressBar.setMax(100);
}

@Override
protected Bitmap doInBackground(String... params) {
System.out.println("doInBackground()...");

Bitmap bitmap = null;

try {
publishProgress(10);
Thread.sleep(1000);

InputStream in = new java.net.URL(sImageUrl).openStream();
publishProgress(60);
Thread.sleep(1000);

bitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}

publishProgress(100);
return bitmap;
}

@Override
protected void onCancelled() {
super.onCancelled();
}

@Override
protected void onPreExecute() {

mProgressBar.setProgress(0);
mProgressBar.setMessage("Image downloading ... 0%");
mProgressBar.show();
System.out.println("onPreExecute()...");
}

@Override
protected void onPostExecute(Bitmap result) {
System.out.println("onPostExecute()...");
if (result != null) {
mProgressBar.setMessage("Image downloading success!");
mImageView.setImageBitmap(result);
} else {
mProgressBar.setMessage("Image downloading failure!");
}

mProgressBar.dismiss();
}

@Override
protected void onProgressUpdate(Integer... values) {
System.out.println("onProgressUpdate()...");
mProgressBar.setMessage("Image downloading ... %" + values[0]);
mProgressBar.setProgress(values[0]);
}
}

}


main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/AbsoluteLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
android:id="@+id/LoadButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Load">
</Button>

<ImageView
android:id="@+id/ImageVivew"
android:layout_width="match_parent"
android:layout_height="400dip"
android:scaleType="centerInside"
android:padding="2dp">
</ImageView>

</LinearLayout>




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: