网络加载图片

xiaoxiao2021-02-28  95

1.编写页面布局代码:

<LinearLayout 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:orientation="vertical"     tools:context=".MainActivity" >     <ImageView         android:id="@+id/iv"         android:layout_width="fill_parent"         android:layout_height="fill_parent"         android:layout_weight="1" />     <EditText         android:id="@+id/et_path"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:hint="请输入图片路径"         android:text="http://b.hiphotos.baidu.com/image/w=310/sign=a439f5b24510b912bfc1f0fff3fdfcb5/83025aafa40f4bfb92c52c5d014f78f0f73618a5.jpg"         android:maxLines="1" />     <Button         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:onClick="click"         android:text="浏览" /> </LinearLayout>

2.编写页面交互代码:

package cn.edu.bzu.imageviewdemo; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends AppCompatActivity {     protected static final int CHANGE_UI = 1;     protected static final int ERROR = 2;     private EditText et_path;     private ImageView iv;     // 主线程创建消息处理器     private Handler handler = new Handler(){         public void handleMessage(android.os.Message msg) {             if(msg.what == CHANGE_UI){                 Bitmap bitmap = (Bitmap) msg.obj;                 iv.setImageBitmap(bitmap);             }else if(msg.what == ERROR){                 Toast.makeText(MainActivity.this, "显示图片错误", 0).show();             }         };     };     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         et_path = (EditText) findViewById(R.id.et_path);         iv = (ImageView) findViewById(R.id.iv);     }     public void click(View view) {         final String path = et_path.getText().toString().trim();         if (TextUtils.isEmpty(path)) {             Toast.makeText(this, "图片路径不能为空", Toast.LENGTH_SHORT).show();         } else {             //子线程请求网络,Android4.0以后访问网络不能放在主线程中             new Thread() {                 public void run() {                     // 连接服务器 get 请求 获取图片.                     try {                         URL url = new URL(path);       //创建URL对象                         // 根据url 发送 http的请求.                         HttpURLConnection conn = (HttpURLConnection) url                                 .openConnection();                         // 设置请求的方式                         conn.setRequestMethod("GET");                         //设置超时时间                         conn.setConnectTimeout(5000);                         // 得到服务器返回的响应码                         int code = conn.getResponseCode();                         //请求网络成功后返回码是200                         if (code == 200) {                             //获取输入流                             InputStream is = conn.getInputStream();                             //将流转换成Bitmap对象                             Bitmap bitmap = BitmapFactory.decodeStream(is);                             //iv.setImageBitmap(bitmap);                             //TODO: 告诉主线程一个消息:帮我更改界面。内容:bitmap                             Message msg = new Message();                             msg.what = CHANGE_UI;                             msg.obj = bitmap;                             handler.sendMessage(msg);                         } else {                             //返回码不是200  请求服务器失败                             Message msg = new Message();                             msg.what = ERROR;                             handler.sendMessage(msg);                         }                     } catch (Exception e) {                         e.printStackTrace();                         Message msg = new Message();                         msg.what = ERROR;                         handler.sendMessage(msg);                     }                 };             }.start();         }     } }

3.在清单文件下添加如下代码:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

转载请注明原文地址: https://www.6miu.com/read-20436.html

最新回复(0)