`
zhouxiaoli521
  • 浏览: 562271 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AsyncTask--实现从网络下载一张图片的功能

阅读更多

http://tech.it168.com/a2009/0907/675/000000675155_3.shtml
http://blog.sina.com.cn/s/blog_62c194760100ggnu.html~type=v5_one&label=rela_nextarticle
package com.android.AsynctaskTest;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;

public class AsynctaskTest extends Activity {
String imageUrl = "http://hiphotos.baidu.com/baidu/pic/item/7d8aebfebf3f9e125c6008d8.jpg";
String param="";
ProgressBar mypb;
ImageView mimg;
Button btn;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mypb =(ProgressBar)findViewById(R.id.pgb);
        mimg =(ImageView)findViewById(R.id.wallpaper);
        btn=(Button)findViewById(R.id.btn);
        btn.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new myAsynctask().execute(param);
}
       
        });
       
       
    }
   
   
    Bitmap getImageFromNetwork() {
URL myFileUrl = null;
Bitmap bitmap = null;
try {
myFileUrl = new URL(imageUrl);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl
.openConnection();
conn.setDoInput(true);

conn.connect();
InputStream is = conn.getInputStream();

bitmap = BitmapFactory.decodeStream(is);

is.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(bitmap==null);
System.out.println(myFileUrl.toString());

return bitmap;
}
   
    class myAsynctask extends AsyncTask<String ,Integer  ,Bitmap >{

@Override
protected Bitmap doInBackground(String... params) {
// TODO Auto-generated method stub
Bitmap bitmap=getImageFromNetwork();
return bitmap;
}



@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
if(result!=null){
mimg.setImageBitmap(result);
}
else
mimg.setBackgroundResource(R.drawable.icon);
super.onPostExecute(result);
mypb.setVisibility(View.GONE);

}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
mypb.setProgress(values[0]);
super.onProgressUpdate(values);
}

   @Override
protected void onPreExecute() {
// TODO Auto-generated method stub

mypb.setVisibility(View.VISIBLE);

mypb.setProgress(0);
super.onPreExecute();
}
   
    }
}

 

 

http://aijiawang-126-com.iteye.com/blog/592643

 

分享到:
评论

相关推荐

    Android AsyncTask 下载图片

    为了支持图片的左右切换,可以创建一个图片队列,每次点击切换时启动一个新的`AsyncTask`实例去下载下一张图片。注意在切换过程中,确保取消当前正在执行的任务,避免不必要的资源浪费和可能的并发问题。 在实际...

    安卓图片轮播广告轮播自动滚屏相关-支持显示网络图片及下载图片至SD后再显示switchPicDemo.zip

    这个名为"switchPicDemo.zip"的压缩包文件提供了一个实现自动滚屏的图片轮播器示例,支持从网络加载图片以及将图片下载到SD卡上再进行显示。 首先,我们来详细探讨图片轮播广告轮播自动滚屏的关键知识点: 1. **...

    安卓Gallery实现异步加载网络图片源代码

    这个标题"安卓Gallery实现异步加载网络图片源代码"暗示我们将会探讨如何在Android的Gallery视图中实现从网络异步加载图片,提高用户体验,避免阻塞主线程。描述进一步指出,该实现会优化性能,仅在用户停止滚动时...

    kotlin实现的自动播放图片浏览器,点击下一张、上一张、暂停

    本项目是一个基于Kotlin实现的自动播放图片浏览器,它提供了用户点击切换图片(下一张、上一张)以及暂停/继续播放的功能。下面将详细探讨这个项目中涉及的核心知识点。 1. **Kotlin基础**: - **变量声明**:...

    android之实现图片左右滑动 点击放大功能.zip

    在Android应用开发中,实现图片左右滑动以及点击放大的功能是常见的需求,尤其是在设计相册、图片浏览器或者产品展示类应用时。这个压缩包文件"android之实现图片左右滑动 点击放大功能.zip"可能包含了一个示例项目...

    android Gallery实现异步加载网络图片 并只加载当前停止页面图.zip

    然而,直接从网络加载图片会消耗大量资源并可能导致应用性能下降,用户体验不佳。为了解决这个问题,开发者通常采用异步加载策略,将图片加载工作放在后台线程中进行,同时只加载用户当前查看到的页面,这种技术被...

    Android应用源码 Gallery实现异步加载网络图片

    Android提供了AsyncTask、Handler、Loader等机制来执行耗时操作,这里通常会使用`AsyncTask`来加载网络图片,它可以在后台线程中执行任务,然后在UI线程更新结果,避免阻塞用户界面。 3. **图片缓存**:为了提高...

    Android程序从网络上获取一张图片【代码】

    在Android开发中,从网络获取图片是一项常见的任务,特别是在构建涉及用户界面的应用中。这个程序示例展示了如何在Android平台上实现这一功能。我们将探讨以下几个关键知识点: 1. **URL和HttpURLConnection**: ...

    android Gallery实现异步加载网络图片 并只加载当前停止页面图.rar

    4. **图片库库使用**:Android有许多开源的图片加载库,如Glide、Picasso、Universal Image Loader等,它们已经实现了异步加载和缓存功能。这些库可以简化代码,提高性能,但在这个项目中,可能需要自定义实现以满足...

    Android使用GridView异步加载(弱引用)网络图片(支持点击查看)Demo

    在这个Demo中,可能会使用其中的一种,它们都能有效地处理图片的缩放、裁剪以及缓存,避免了每次都从网络加载图片,提高用户体验。 点击图片查看大图的实现,通常会弹出一个全屏的`Dialog`或者一个新的`Activity`,...

    类似微信的图片展示viewpage,可放大缩小拖动,网络加载及本地缓存,带点点集成超方便

    在移动应用开发中,我们经常需要实现类似微信的图片浏览功能,这通常涉及到图片的展示、缩放、拖动以及网络加载与本地缓存。"类似微信的图片展示viewpage"是一个这样的组件,它提供了丰富的交互体验,让用户可以像在...

    天气预报app android studio

    8. **UI设计与网络图片加载**:设计用户界面,实现网络图片的加载。 #### 二、技术细节与实现方案 ##### 1. 跨设备适配 - **实现原理**:通过检测屏幕尺寸(宽度和高度)来决定使用哪种布局。例如,当屏幕宽度较...

    ViewPager实现网络图片轮播

    在本案例中,我们将讨论如何利用`ViewPager`来实现一个从网络加载图片并自动轮播的功能,类似于淘宝首页的图片展示。 首先,`ViewPager`的核心在于它可以与适配器(如`PagerAdapter`或`FragmentPagerAdapter`)配合...

    关于 图片 缓存 下载

    在图片加载场景中,如果用户已经访问过某张图片,再次访问时就可以从缓存中直接读取,而不是重新下载,这样大大减少了网络带宽消耗和加载时间。常见的缓存策略有强缓存(基于HTTP的Expires或Cache-Control头)和协商...

    Android图片上传,可以选择多张图片,缩放预览,拍照上传等

    `ACTION_PICK`可以让用户从图库中选择一张或多张图片,而自定义选择器则可以提供更定制化的用户体验,比如设置选择数量限制、图片质量筛选等。 2. **多选图片**: 要支持多选图片,通常会用到`Intent.EXTRA_ALLOW_...

    多线程图片下载

    例如,Glide库就提供了强大的图片加载功能,包括自动缓存、多线程下载、占位符显示、加载失败图等特性,只需简单的几行代码就能实现高效的图片加载。 ```java Glide.with(context) .load(imageUrl) .placeholder...

    Android 下载网络图片并显示到本地

    在Android开发中,下载网络图片并将其显示到本地是一个常见的需求。这个过程涉及到网络请求、数据解析、异步处理以及用户界面的更新。以下是对标题和描述中涉及的知识点的详细说明: 1. **网络请求**: - Android...

    安卓Android源码——图片轮播(Viwepager)+(读取网络图片)+点击图片(WebView)展示.zip

    总的来说,这个项目涵盖了Android UI设计、网络请求、图片加载优化和Web视图的综合运用,是学习Android开发中实用功能实现的一个良好实践。通过深入理解并实现这些技术,开发者可以提升自己在Android应用开发中的...

    Android 图片加载类 图库效果

    可以使用诸如RecyclerView结合GridLayoutManager来实现网格布局,同时结合Glide的预加载功能,确保用户在滚动时能快速看到下一张图片。 8. **错误处理和加载占位图** 在图片加载失败时,提供错误处理回调和加载...

    GridView图片墙,ListView中嵌入GridView,图片异步下载

    在实现图片墙时,我们通常会将每个单元格设为一张图片,通过设置GridView的列数和间距,创建出美观的图片展示效果。要实现GridView的高度自适应,我们需要在Adapter中动态计算每个单元格的高度,这通常涉及到图片的...

Global site tag (gtag.js) - Google Analytics