博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AsyncTask 异步 URL请求加载图片并保存到本地sd卡
阅读量:5304 次
发布时间:2019-06-14

本文共 2404 字,大约阅读时间需要 8 分钟。

xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

 

import android.os.Bundle;

import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.ImageView;
对应java文件:
public class MainActivity extends Activity {
    ImageView img;
    Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;
        img = (ImageView) findViewById(R.id.img);
        Aysnctask as = new Aysnctask(img);
        as.execute("http://www.crazyit.org/attachments/month_1008/20100812_7763e970f822325bfb019ELQVym8tW3A.png");
    }
}

新建xx.java文件做为异步:

import java.io.File;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Environment;
import android.widget.ImageView;
public class Aysnctask extends AsyncTask<String, Integer, Bitmap> {
    ImageView imageview;
    public Aysnctask(ImageView imageview) {
        super();
        this.imageview = imageview;
    }
    @Override
    protected Bitmap doInBackground(String... params) {
        Bitmap bitmap;
        try {
            URL url = new URL(params[0]);
            InputStream is = url.openStream();
            String filestr = Environment.getExternalStorageDirectory()
                    .getPath();
            if (Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED)) {
                File file = new File(filestr + "/imgs.jpg");
                FileOutputStream fos = new FileOutputStream(file);
                byte byt[] = new byte[1024];
                while (is.read(byt) > 0) {
                    fos.write(byt, 0, byt.length);
                }
                fos.flush();
                fos.close();
            }
            InputStream is1 = url.openStream();
            bitmap = BitmapFactory.decodeStream(is1);
            return bitmap;
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(Bitmap result) {
        imageview.setImageBitmap(result);
    }
}

 

转载于:https://www.cnblogs.com/zhangpf19880329/p/4431923.html

你可能感兴趣的文章
C#中使用Split分隔字符串的技巧
查看>>
eclipse的调试方法的简单介绍
查看>>
加固linux
查看>>
IPSP问题
查看>>
(转)Java中的String为什么是不可变的? -- String源码分析
查看>>
HNU 10362 A+B for Input-Output Practice (II)
查看>>
十. 图形界面(GUI)设计9.列表和组合框
查看>>
10.17动手动脑
查看>>
js index of()用法
查看>>
WPF中Image显示本地图片
查看>>
Windows Phone 7你不知道的8件事
查看>>
脚本删除文件下的文件
查看>>
实用拜占庭容错算法PBFT
查看>>
java b组 小计算器,简单计算器..
查看>>
java的二叉树树一层层输出,Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历...
查看>>
php libevent 定时器,PHP 使用pcntl和libevent实现Timer功能
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
Node 中异常收集与监控
查看>>
七丶Python字典
查看>>
Excel-基本操作
查看>>