Android加载网络图片

Stella981
• 阅读 654

AndroidManifest.xml文件中加入以下权限设置:

    
    

activity_image.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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.jt.http_01.LoadImage" >
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</RelativeLayout>

HttpLoadImage.java代码

/**
 * 加载网络图片(先下载到本地SD卡,再读取本地文件显示图片)   
 * @author jiatao  
 * @date 2015-5-2  
 * @version 1.0
 */
package com.jt.http_01;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView;
public class HttpLoadImage extends Activity {
 
 private ImageView imageView;
 private Handler handler = new Handler();
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_image);
  initDisplay();
 }
 public void initDisplay() {
  // TODO Auto-generated method stub
  imageView = (ImageView) findViewById(R.id.imageView1);
  new HttpImageThread("http://img31.mtime.cn/pi/2015/02/03/111506.56197775_1000X1000.jpg", imageView, handler).start();
 } 
}

HttpImageThread.java代码

/**
 * 加载网络图片(先下载到本地SD卡,再读取本地文件显示图片)   
 * @author jiatao  
 * @date 2015-5-2  
 * @version 1.0
 */
package com.jt.http_01;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.os.Handler;
import android.widget.ImageView;
public class HttpImageThread extends Thread {
 private String url;
 private ImageView imageView;
 private Handler handler;
 
 public HttpImageThread(String url,ImageView imageView,Handler handler){
  this.url = url;
  this.imageView = imageView;
  this.handler = handler;
 }
 
 @Override
 public void run() {
  // TODO Auto-generated method stub
  super.run();
  try {
   URL httpUrl = new URL(url);
   try {
    HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
    conn.setReadTimeout(5000);
    conn.setRequestMethod("GET");
    conn.setDoInput(true);
    
    //获取字节输入流
    InputStream in = conn.getInputStream();
    FileOutputStream out = null;
    File downloadfile = null;    
    String fileName = String.valueOf(System.currentTimeMillis());
    //判断SD卡是否存在
    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
     File parent = Environment.getExternalStorageDirectory();
     downloadfile = new File(parent,fileName);
     //在SD卡中创建图片输出目录和图片名称
     out = new FileOutputStream(downloadfile);
    }
    
    byte[] b = new byte[2*1024];
    int len;
    if(out != null){
     //如果输出不为空,就循环读取下载到本地
     while((len = in.read(b))!=-1){
      out.write(b, 0, len);
     }
    } 
    
    //BitmapFactory.decodeFile(String pathName)把本地文件转化成Bitmap文件
    final Bitmap bitmap = BitmapFactory.decodeFile(downloadfile.getAbsolutePath());
    //向主线程发送消息,加载Bitmap文件
    handler.post(new Runnable() {
     
     @Override     
     public void run() {
      // TODO Auto-generated method stub
      imageView.setImageBitmap(bitmap);
     }
    });
    
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }   
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
android获取mac地址
1、<usespermissionandroid:name"android.permission.ACCESS_WIFI_STATE"/ 2、privateStringgetLocalMacAddress(){WifiManagerwifi(WifiManager)getSystemSe
Stella981 Stella981
3年前
Android 设置系统闹铃和日历
一、创建定时器 设置权限<usespermissionandroid:name"com.android.alarm.permission.SET_ALARM"/案例https://developer.android.com/reference/android/provider/Alar
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Android版添加phonegap
1.下载插件包。2\.解压所下载的包,从lib目录中得到所需要的所有的库:BaiduSocialShareSDKAndroid2.0.0.jar3\.修改AndroidManifest.xml,增加以下权限:<usespermissionandroid:name"android.permiss
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这