AsyncTask的案例 异步下载图片
来源:互联网 发布:js 24小时时间插件 编辑:程序博客网 时间:2024/05/01 19:29
工具类
package com.itcast.douban.util;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;/** * 1.图片下载路径的url 2.下载进度 不显示 Void 3.异步任务执行完毕后的返回值 * */public class LoadImageAsynTask extends AsyncTask<String, Void, Bitmap> {public LoadImageAsynTaskCallBack callback;public LoadImageAsynTask(LoadImageAsynTaskCallBack callback){this.callback = callback;}public interface LoadImageAsynTaskCallBack{public void beforeLoadImage();public void afterLoadImage(Bitmap bitmap);}/** * 当异步任务执行之前调用 */@Overrideprotected void onPreExecute() {//初始化的操作具体怎么去实现 ,LoadImageAsynTask不知道//需要让调用这个LoadImageAsynTask 的人去实现callback.beforeLoadImage();super.onPreExecute();}/** * 异步任务执行之后调用 */@Overrideprotected void onPostExecute(Bitmap result) {// TODO Auto-generated method stubcallback.afterLoadImage(result);super.onPostExecute(result);}/** * 后台任务执行的异步任务 * String... params 可变长度的参数 */@Overrideprotected Bitmap doInBackground(String... params) {try{String path = params[0];URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream is = conn.getInputStream();Bitmap bitmap = BitmapFactory.decodeStream(is);return bitmap;}catch(Exception e){e.printStackTrace();return null;}}}
package com.itcast.douban;import android.graphics.Bitmap;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import com.google.gdata.data.Link;import com.google.gdata.data.TextContent;import com.google.gdata.data.douban.UserEntry;import com.itcast.douban.util.LoadImageAsynTask;import com.itcast.douban.util.LoadImageAsynTask.LoadImageAsynTaskCallBack;public class MyInfoActivity extends BaseActvity implements OnClickListener {private TextView tv_name;private TextView tv_location;private TextView tv_info;private ImageView iv_icon;private String name ;private String location;private String content ;private String iconurl;@Overrideprotected void onCreate(Bundle savedInstanceState) {//保证首先设置contentView 然后在去调用父类的方法setContentView(R.layout.my_info);super.onCreate(savedInstanceState);}@Overridepublic void setupView() {tv_name = (TextView) this.findViewById(R.id.txtUserName);tv_location = (TextView) this.findViewById(R.id.txtUserAddress);tv_info = (TextView) this.findViewById(R.id.txtUserDescription);mRelativeLayoutLoding = (RelativeLayout) this.findViewById(R.id.loading);mTextViewTitle = (TextView) this.findViewById(R.id.myTitle);mImageBack = (ImageButton)this.findViewById(R.id.back_button);iv_icon = (ImageView)this.findViewById(R.id.imgUser);}@Overridepublic void setListener() {mImageBack.setOnClickListener(this);}@Overridepublic void fillData() {showLoading();/** * 实现一个异步的任务 */new AsyncTask<Void,Void,Void>() {/** * onPreExcute 在异步任务执行之前调用的方法 * 运行在主线程里面的 可以做一些初始化UI的操作 */@Overrideprotected void onPreExecute() {showLoading();super.onPreExecute();}/** * 在异步任(后台任务)执行之后调用的方法 * 运行在ui线程中 */@Overrideprotected void onPostExecute(Void result) {hideLoading();super.onPostExecute(result);tv_info.setText(content);tv_location.setText(location);tv_name.setText(name);//设置用户的头像LoadImageAsynTask task = new LoadImageAsynTask(new LoadImageAsynTaskCallBack() {@Overridepublic void beforeLoadImage() {//加载前的默认图标iv_icon.setImageResource(R.drawable.ic_launcher);}@Overridepublic void afterLoadImage(Bitmap bitmap) {if(null != bitmap){iv_icon.setImageBitmap(bitmap);}else{iv_icon.setImageResource(R.drawable.ic_launcher);}}});task.execute(iconurl);}/** * 后台执行的任务 * 运行在一个子线程当中 */@Overrideprotected Void doInBackground(Void... params) {try{//执行耗时的操作UserEntry ue = doubanservice.getAuthorizedUser();name = ue.getTitle().getPlainText();location = ue.getLocation();content = ((TextContent)ue.getContent()).getContent().getPlainText();for(Link link:ue.getLinks()){if("icon".equals(link.getRel())){iconurl = link.getHref();}}}catch(Exception e){e.printStackTrace();}return null;}}.execute();}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.back_button:finish();break;}}}
package com.itcast.douban;import android.app.Activity;import android.content.Context;import android.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.view.animation.AlphaAnimation;import android.view.animation.AnimationSet;import android.view.animation.ScaleAnimation;import android.widget.ImageButton;import android.widget.RelativeLayout;import android.widget.TextView;import com.google.gdata.client.douban.DoubanService;public abstract class BaseActvity extends Activity {public TextView mTextViewTitle;public RelativeLayout mRelativeLayoutLoding;public DoubanService doubanservice;public ImageButton mImageBack;public abstract void setupView();public abstract void setListener();public abstract void fillData();public void showLoading(){mRelativeLayoutLoding.setVisibility(View.VISIBLE);AlphaAnimation aa = new AlphaAnimation(0.0f,1.0f);aa.setDuration(1000);ScaleAnimation sa = new ScaleAnimation(0.0f,1.0f,0.0f,1.0f);sa.setDuration(1000);AnimationSet set = new AnimationSet(false);set.addAnimation(aa);set.addAnimation(sa);mRelativeLayoutLoding.setAnimation(set);mRelativeLayoutLoding.startAnimation(set);}public void hideLoading(){AlphaAnimation aa = new AlphaAnimation(1.0f,0.0f);aa.setDuration(1000);ScaleAnimation sa = new ScaleAnimation(1.0f,0.0f,1.0f,0.0f);sa.setDuration(1000);AnimationSet set = new AnimationSet(false);set.addAnimation(aa);set.addAnimation(sa);mRelativeLayoutLoding.setAnimation(set);mRelativeLayoutLoding.startAnimation(set);mRelativeLayoutLoding.setVisibility(View.INVISIBLE);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);String apiKey = "0c51c1ba21ad8cfd24f5452e6508a6f7";String secret = "359e16e5e5c62b6e";doubanservice = new DoubanService("黑马小瓣瓣", apiKey,secret);//密钥设置给myServiceSharedPreferences sp = getSharedPreferences("config", Context.MODE_PRIVATE);String accesstoken = sp.getString("accesstoken", "");String tokensecret = sp.getString("tokensecret", "");doubanservice.setAccessToken(accesstoken, tokensecret);setupView();setListener();fillData();}}
0 0
- AsyncTask的案例 异步下载图片
- AsyncTask异步下载图片
- AsyncTask异步下载图片
- AsyncTask 异步任务下载文字or图片
- AsyncTask下载图片异步更新UI
- Android异步下载网络图片(其二AsyncTask)
- AsyncTask异步从网上下载图片
- AsyncTask 异步任务下载网络图片
- 使用异步任务-AsyncTask下载远程图片
- 异步处理任务工具类(AsyncTask)实现多张图片的下载(已知url)
- AsyncTask异步线程下载
- android快速响应(二)AsyncTask实例!异步下载图片
- Android异步下载网络图片(其二:AsyncTask)
- 关于AsyncTask异步下载图片带有进度条更新
- 异步操作AsyncTask(一)从网络下载图片
- Android之AsyncTask异步任务下载网络图片
- Android异步下载网络图片(其二:AsyncTask)
- 异步加载图片AsyncTask
- C# 对Word文档进行处理
- Unity3d模型制作规范
- 多线程的创建
- Xcode提示“expression is not assignable”
- Java管道流PipedStream
- AsyncTask的案例 异步下载图片
- Logistic Regression--逻辑回归算法汇总**
- 联想品牌机重装系统的经验总结
- Unity3D 美术资源规范
- 【Leetcode】Word Ladder
- LingPipe使用笔记
- java对象流ObjectStream
- VS2010导入SQL数据库
- 需要阅读的好书