android利用消息机制获取网络图片
发布时间 - 2026-01-11 00:25:15 点击率:次在前面都写到用AsyncTask来获取网络中的图片。其实利用消息机制也能获取网络中的图片,而且本人感觉用消息机制还是挺简单的。

消息机制的图解:
下面就用看代码来理解上面的图片。
布局:activity_main.xml
<FrameLayout 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="cn.edu.huse.handle.MainActivity" >
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/iv_image" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="getImage"
android:text="获取网络图片"
android:layout_gravity="bottom|center"
android:layout_marginBottom="20dp"/>
</FrameLayout>
MainActivity.java
package cn.edu.huse.handle;
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.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
/**
* @author Lenovo
*
*/
public class MainActivity extends Activity {
protected static final int LOAD_SUCCESS = 0;
private static final int LOAD_ERROR = 1;
private ImageView iv_image;
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case LOAD_SUCCESS: //加载图片成功
Bitmap bitmap = (Bitmap) msg.obj; //获取消息里面的数据
iv_image.setImageBitmap(bitmap);
break;
case LOAD_ERROR: //加载失败
Toast.makeText(MainActivity.this, "图片加载失败", 0).show();
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_image = (ImageView) findViewById(R.id.iv_image);
}
public void getImage(View v){
new Thread(new Runnable() {
@Override
public void run() {
String path = "http://p2.so.qhimgs1.com/bdr/_240_/t01666725c7200ad5ae.jpg";
try {
//1、获取URL
URL url = new URL(path);
//2、得到连接对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置连接时长
conn.setConnectTimeout(5000);
//设置请求方式
conn.setRequestMethod("GET");
//判断是否响应成功
if(conn.getResponseCode() == 200){
//3、获取输入流
InputStream inputStream = conn.getInputStream();
//4、获得图片资源Bitmap
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
//消息对象
Message msg = new Message();
msg.what = LOAD_SUCCESS; //唯一标识
msg.obj = bitmap; //消失里面写在的数据
mHandler.sendMessage(msg); //发送消失给Handle
}else{
alertUses();
}
} catch (Exception e) {
e.printStackTrace();
alertUses();
}
}
}).start();
}
/**
* 土司提醒用户,图片加载失败
*/
public void alertUses(){
mHandler.sendEmptyMessage(LOAD_ERROR);
}
}
添加权限:
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android利用消息机制获取网络图片
# android获取网络图片
# android消息机制获取图片
# android异步消息机制 从源码层面解析(2)
# android异步消息机制 源码层面彻底解析(1)
# 代码分析Android消息机制
# Android异步消息机制详解
# android线程消息机制之Handler详解
# Android 消息机制详解及实例代码
# Android的消息机制
# Android消息机制Handler的工作过程详解
# 深入剖析Android消息机制原理
# Android 消息机制以及handler的内存泄露
# 从源码角度分析Android的消息机制
# 加载
# 也能
# 写到
# 就用
# 在前面
# 写在
# 时长
# 大家多多
# 判断是否
# layout_gravity
# getImage
# onClick
# bottom
# dp
# layout_marginBottom
# handle
# ImageView
# gt
# MainActivity
# id
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Swift开发中switch语句值绑定模式
千库网官网入口推荐 千库网设计创意平台入口
如何有效防御Web建站篡改攻击?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
JS实现鼠标移上去显示图片或微信二维码
BootStrap整体框架之基础布局组件
网站制作价目表怎么做,珍爱网婚介费用多少?
移动端脚本框架Hammer.js
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel怎么实现验证码(Captcha)功能
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
如何在IIS服务器上快速部署高效网站?
Python进程池调度策略_任务分发说明【指导】
jQuery 常见小例汇总
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Android中AutoCompleteTextView自动提示
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
常州企业网站制作公司,全国继续教育网怎么登录?
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel模型事件有哪些_Laravel Model Event生命周期详解
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
如何在阿里云香港服务器快速搭建网站?
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
微信小程序 wx.uploadFile无法上传解决办法
香港服务器选型指南:免备案配置与高效建站方案解析
如何在Tomcat中配置并部署网站项目?
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
香港服务器如何优化才能显著提升网站加载速度?
浅谈redis在项目中的应用
高防服务器:AI智能防御DDoS攻击与数据安全保障
在线制作视频网站免费,都有哪些好的动漫网站?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel如何使用Sanctum进行API认证?(SPA实战)
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Swift中switch语句区间和元组模式匹配
,在苏州找工作,上哪个网站比较好?
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel如何实现数据库事务?(DB Facade示例)
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?

