handler从网络获取图片

利用 Handler 读取图片数据流并且直接显示在页面上 直接在项目中加载此项然后调用就可以了 获取数据的方法看看你们怎么改了! 立即下载
package com.smalltown.day18_handlerimag;

import com.smalltown.day18_handlerimag.utils.HttpUtils;

import android.app.Activity;
import android.app.ProgressDialog;
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;

public class MainActivity extends Activity {
    
    private ImageView iv;
    
    private static final String imagPath = "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superplus/img/logo_white_ee663702.png";

    private ProgressDialog progressDialog;
    
    private static  final  int  OK = 1;
    private static  final  int  ERROR = OK+1;
    
    
    
    private Handler handler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            
            switch (msg.what) {
            case OK:
                Bitmap bp = (Bitmap) msg.obj;
                iv.setImageBitmap(bp);
                break;
            case ERROR:
                String str = (String) msg.obj;
                Toast.makeText(MainActivity.this, str, 0).show();
                break;

            default:
                break;
            }
            
            progressDialog.dismiss();
        };
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        iv = (ImageView) findViewById(R.id.iv);
        
        progressDialog = new ProgressDialog(MainActivity.this);
        progressDialog.setMessage("正在下载数据");
    }

    //点击按钮下载图片
    public void OnclickBtn(View v){
        
        
        
        switch (v.getId()) {
        case R.id.btn:
            
            progressDialog.show();
            
            new Thread(){
                public void run() {
                    if(HttpUtils.isNetWork(MainActivity.this)){
                        byte[] buffer = HttpUtils.getData(imagPath);
                        if(buffer!=null && buffer.length>0){
                            Bitmap bp = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
                            Message msg = handler.obtainMessage();
                            msg.obj = bp;
                            msg.what  = OK;//下载成功
                            handler.sendMessage(msg);
                        }
                    }else{
                        //无网络
                        Message msg = handler.obtainMessage();
                        msg.obj = "网络异常,请检测";
                        msg.what  = ERROR;//下载失败
                        handler.sendMessage(msg);
                        
                    }
                    
                };
                
            }.start();
        
            
            break;

        default:
            break;
        }
        
    }


}





package com.smalltown.day18_handlerimag.utils;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class HttpUtils {
    /**
     * 判断是否有网络
     * @param context
     * @return
     */
    public static boolean isNetWork(Context context){
        //得到网络的管理者
        ConnectivityManager manager = (ConnectivityManager)
                context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = manager.getActiveNetworkInfo();
        
        if(info!=null){
            return true;
                    
        }else{
            return false;
        }
        
    }

    
    /**
     * 获取数据
     * @param path
     * @return
     */
    public static byte[] getData(String path) {
        HttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(path);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        try {
            HttpResponse response = httpClient.execute(httpGet);
            if (response.getStatusLine().getStatusCode() == 200) {
                InputStream inputStream = response.getEntity().getContent();
                byte[] buffer = new byte[1024];
                int temp = 0;
                while ((temp = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, temp);
                    outputStream.flush();
                }

            }
            return outputStream.toByteArray();

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;

    }

}


布局文件



<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"
    >

    <ImageView
        android:id="@+id/iv"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="#ff00ff"
        android:layout_centerInParent="true"
        android:src="@drawable/ic_launcher"
         />
    
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:onClick="OnclickBtn"
        android:text="下载图片"
        
        />

</RelativeLayout>


Handler实现图片播放 使用Handler实现的图片播放小功能,代码简单易懂,适合初学者 立即下载

相关推荐

Android 用handler机制联网获取图片.zip

Android 用handler机制联网获取图片能在实体机和虚拟机上运行,无广告,多次点击会造成主线程阻塞,出现anr;未实现联网获取图片的功能。

android中Handler简单用法

Android中Handler类的简单使用,实现图片切换 分类: Android 2013-06-19 01:41 359人阅读 评论(0) 收藏 举报 AndroidHandler图片切换Bundle Handler类主要有两个作用:在新启动的线程中发送消息。在主线程中获取、处理消息。当新启动的线程发送消息时,Handler类中处理消息的方法会被自动回调。Han

wwp_love_biancheng的专栏 747

PFC胶结模型实战:从线性到平行粘结的力学行为解析

本文深入解析了PFC中线性接触与平行粘结(pb模型)的核心差异与应用。平行粘结模型通过模拟胶结层的力学行为,能够有效传递拉力和抵抗弯矩,是模拟岩石、混凝土等胶结材料的关键。文章详细介绍了其变形与强度参数的设置、法向与切向行为的验证方法,并揭示了全量与增量力计算中易出现的“幽灵力”问题及其解决方案,为复杂模型的构建与调试提供了实用策略。

weixin_29230773的博客 1208

Handler消息传输机制(实例)—— 获取网络图片

Handler消息传输机制是基于一句话:在哪个线程中创建的视图,那么就只能在哪个线程中去更改界面(一般是主线程即UI线程)。 本文通过子线程去获取网络中的某张图片,借此熟悉Handler的使用。activity_main.xml文件如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns

believe646875970的博客 620

用Keil5给CH552G编程:手把手配置8051开发环境+LED闪烁实战

本文详细介绍了如何使用Keil5为CH552G单片机配置8051开发环境,并完成LED闪烁实战。从获取必要软件、安装WCH器件库到创建工程、编写程序及烧录,手把手指导开发者避开常见陷阱,特别适合从STC转向CH552G的开发者。

weixin_30733003的博客 539

lammps多晶正弦粗糙界面建模

其中,30可以理解为正弦曲线的幅度,150为正弦曲线的基准坐标值,80控制周期,改变参数多试试就能找到规律。很久之前介绍过lammps粗糙界面建模,主要是在lammps中进行一维和二维的正弦粗糙面建模。运行完成后,会生成final.data,这个模型即为上表面为正弦波动的粗糙界面。新建1.py文件,粘贴下面内容后,运行:python 1.py。多晶需要在atomsk中进行,因此上述的方法就不再适用。最近有学员咨询多晶模型的正弦粗糙界面建模应该如何实现。在cmd窗口按顺序运行以下命令创建多晶模型。

lammps_jiayou的博客 390

Handler+thread 加载网络图片

本文来自 http://blog.youkuaiyun.com/manymore13  关于Android多线程处理UI-我在网上查了下资料发现有好几种,本次学习只是其中一种,主要是利用handler结合Thread更新UI。 下面是我写的小Demo:             Handler+thread 加载网络图片,我在网上随便找了三张图片,分别开三个线程加载他们,然后在Activity中显示。

manymore13 的个人专栏 1万+

DeerFlow 系列教程 第三篇 | 核心技术深度剖析:Skills、Memory 与 Context Engineering

摘要化是 Context Engineering 中最关键的组件——它直接决定了长对话的可用性。Skills 技能系统通过渐进式加载的三层模型,在保持系统提示词轻量的同时,支持无限数量的技能扩展。从发现到执行的 10 个生命周期阶段,配合 AI 驱动的安全扫描和多层缓存,构成了一个生产级的技能管理框架。Memory 长期记忆系统通过文件系统持久化、LLM 驱动的信息提取和防抖动异步更新,实现了跨会话的认知持久化。六类事实分类体系和修正信号检测机制,让 Agent 能够从交互中持续学习和改进。

weixin_43674738的博客 280

Handler机制通过位图工厂类获取网络上的图片

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

a_sid的博客 344

西门子PLC编程之⑦编程开始之点位配置及注释

紧接上篇,点位梳理后,进入PLC编程。1、新建工程,配置系统模块2、配置I点并做中文符合,直接上中文,smart支持中文点位编程,用起来很方便。3、配置Q点并做中文符合5、配置AIW模拟量输入点,配置AQW模拟量输出点并做中文符合6、配置手动启动辅助触点,并做中文符合7、 配置自动启动辅助触点,并做中文符合8、 配置传感器浮点型数据变量点位,并做中文符合9、配置系统运行参数设置区点位,做中午符合,做掉电保持.....................

学技术,人生不误——谁也是寂寞宇宙里的流星,只是你的坚持决定了你划过的痕迹。而且,铸造了普遍里的你的唯一。 4890

★教程2:fpga学习教程入门100例目录【含程序操作讲解视频】

★基础入门 1.FPGA开发软件安装

FPGA/MATLAB学习教程/源码/项目合作开发 7万+

Android 多线程:使用Thread和Handler (从网络上获取图片)

当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分发到对应的组件进行处理。所以主线程通常又被叫做UI线程。  比如说从网上获取一个图片,在一个ImageView中将其显示出来,这种涉及到网络操作的程序一般都是需要开一个线程完成网络访问,但是在获得图

chaozhung的专栏 2680

廉价却有效?ESD防护中的电容

摘要:在成本敏感型电子产品设计中,多层陶瓷电容(MLCC)可作为TVS二极管的替代方案用于静电放电(ESD)防护。其工作原理是通过电容充放电特性吸收静电能量,而非电压钳位。计算表明100nF/50V MLCC可有效缓冲8kV静电冲击,但存在吸收能量有限、无自恢复等局限。建议将MLCC作为一级缓冲措施,配合TVS等器件形成多级防护,并优先选择X7R材质、100nF容值、50V耐压的0402/0603封装MLCC。该方案在低速信号和电源引脚防护中具有显著成本优势,但不能完全替代专业ESD抑制器。

硬核科技 431

Android GET+Handler获取网络图片及建造者模式Builder的简单应用

文章目录运行效果实现步骤创建GetPicThread类在MainActivity类中完成图片显示Builder建造者模式实现步骤 运行效果 实现步骤 新建一个布局文件,在布局中添加相应控件并设置参数 设置网络请求权限 新建一个类GetPicThread实现Runnable接口 定义一个handler用于将数据传送到主线程中 使用建造者模式完成属性赋值 在run()方法中完成网络图片的获取 在MainActivity中完成图片显示 图片的链接: https://img2.mukewang.co

苹果是我咬的的博客 367

Python爬虫实战:基于Scrapy和Playwright的深交所数据采集

本文将详细介绍如何使用Python最新技术栈(Scrapy框架结合Playwright浏览器自动化)爬取深圳证券交易所(www.szse.cn)的公开数据。文章包含完整项目搭建、反爬策略应对、数据解析存储等全流程实现,并附详细代码示例和性能优化建议。python复制下载# 上市公司基本信息# 财务数据revenue = scrapy.Field() # 营业收入net_profit = scrapy.Field() # 净利润eps = scrapy.Field() # 每股收益。

2201_76125261的博客 951

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android语言基础教程(222)Android Handler消息传递机制范例之开启新线程获取网络图片并显示到ImageView中:别再让APP卡成PPT!Android Handler消息传递

当你在Android开发中遇到“网络图片加载导致界面卡死”的经典翻车现场,别急着砸键盘!这其实是消息传递机制在作祟。本文用最接地气的方式剖析Handler的底层逻辑,带你理解为何子线程不能直接更新UI,并手把手教你用Handler+Thread组合拳实现“后台偷图,前台炫图”的丝滑操作。文末附赠可直接粘贴的完整代码,以及避免内存泄漏的骚操作提示,让你从此告别ANR弹窗噩梦!

jxf_jxfcsdn的博客 352

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android Handler使用案例:通过网络路径获取图片并显示(GET请求)

效果图: 布局略,使用网络请求记得在manifest里添加INTERNET权限: <uses-permission android:name="android.permission.INTERNET"/> 活动类代码: package com.example.threadpractice; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import andr

qq_50909707的博客 2289

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

查看网络图片

1、android:id="@+id/picturepagh"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:text="@string/hello_world" />   android:id="@+id/btn"   android:layout_widt

u013300375的博客 331

Android--消息机制--handler--getImageFromUrl--网络上获取图片

package com.jiangge.imageviewer; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.graphics.Bitmap; import android.graph

xiaowanggedege的专栏 2243

android通过http协议获得图片

android通过图片网址获得图片并显示在imageView中。 下面就简单的来说明操作过程: 首先必须在布局文件中声明imageView控件: <ImageView android:id="@+id/image" android:layout_width="fill_parent" android:layout

yehui18sui的专栏 1518

Android获取网络图片并显示的方法

本文实例为大家分享了Android获取网络图片并显示的具体代码,供大家参考,具体内容如下 使用 HttpURLConnection 获得连接,再使用 InputStream 获得图片的数据流,通过 BitmapFactory 将数据流转换为 Bitmap,再将 Bitmap 通过线程的 Message 发送出去,Handler 接收到消息就会通知 ImageView 显示出来。 记...

疯流人物 9647

安卓day28网络编程 handler 引用 网络文件获取 缓存图片 smartimageview框架 xml文件下载显示 网站验证密码 get post...

一、排坑 static Handler handler;Handler内存泄漏 Handler要解决的根本问题是Android线程并发,如果没有相应的机制约束各线程的协作并发,很容易导致开发上和运行上的混乱。Android处理多线程的方式也不是传统上的加锁机制(性能因素吧),而是MessageQueue,即消息队列,开发者可以直接控制消息队列的显示顺序和方式,这样就不会产生数据的同步混乱的问题...

weixin_30788731的博客 204

ImageView 的handler切换循环

activity_main.xml xml version="1.0" encoding="utf-8"?> RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layou

zj462136的博客 297
上一篇: 随机生成验证码
下一篇: 拼图最后两张图片异位问题的解决
Evan_Jhon
博客等级 码龄11年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值