在https://github.com/网址上可以下载很多开源项目源代码

smartImageView继承了安卓的ImageView,增强了它的功能,例如直接通过url显示图片(内部使用线程去GET图片)

使用方法

1、把smartImageView的源代码/src/com文件夹拷到自己的代码的src目录中

2、布局文件中添加一个smartImageView控件,注意要写全名(包含包名)

<--包名要写完整--><com.itheima.smartimageview.SmartImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/iv" />

3、获取控件并调用image.setImageUrl(item.getImage())方法加载图片

smartImageView smart_img = (smartImageViewfindViewById(R.id.smart_img);
//直接通过url显示图片
//smart_img.setImagUrl("http://img0.bdstatic.com/img/image/imglog_detailHLT.gif");
//直接通过url显示图片,如果url图片得不到,则显示本地图片
smart_img.setImagUrl("http://img0.bdstatic.com/img/image/imglog_detailHLT.gif",R.drawable.mydefault);

代码示例

package com.itheima.custom.smartimgview;import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.widget.ImageView;/*** 自定义 smartimageview* * @author Administrator**/
public class MySmartImageView extends ImageView {private Bitmap bitmap;//定义一个 handlerprivate Handler handler = new Handler(){//重写handleMessage 方法 public void handleMessage(android.os.Message msg) {int   msgg = msg.what;switch (msgg) {case 0:MySmartImageView.this.setImageBitmap(bitmap);break;case 1:int errorResource = (Integer) msg.obj;MySmartImageView.this.setImageResource(errorResource);default:break;}};};public MySmartImageView(Context context, AttributeSet attrs) {super(context, attrs);}// 设置 图片的url public void setImagUrl(final String path){new Thread(){public void run() {try {URL url = new URL(path);//打开一个url连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection();//设置conn 的参数 conn.setRequestMethod("GET");conn.setConnectTimeout(5000);//获取服务器返回的状态码int code = conn.getResponseCode();if (code == 200) { //200 请求服务器资源全部返回成功     //206 请求部分服务器资源返回成功   InputStream inputStream = conn.getInputStream(); //获取服务器返回的数据 //获取到bitmap bitmap = BitmapFactory.decodeStream(inputStream);handler.sendEmptyMessage(0);  //发送一条消息    }} catch (Exception e) {e.printStackTrace();}};}.start();}// 设置 图片的url public void setImagUrl(final String path,final int errorResource){new Thread(){public void run() {try {URL url = new URL(path);//打开一个url连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection();//设置conn 的参数 conn.setRequestMethod("GET");conn.setConnectTimeout(5000);//获取服务器返回的状态码int code = conn.getResponseCode();if (code == 200) { //200 请求服务器资源全部返回成功     //206 请求部分服务器资源返回成功   InputStream inputStream = conn.getInputStream(); //获取服务器返回的数据 //获取到bit map bitmap = BitmapFactory.decodeStream(inputStream);handler.sendEmptyMessage(0);  //发送一条消息    }else {Message msg = Message.obtain();msg.obj = errorResource;msg.what = 1;handler.sendMessage(msg);}} catch (Exception e) {e.printStackTrace();}};}.start();}}

开源项目smartImageView相关推荐

  1. GitHub上的“金矿”(236个Python开源项目,涵盖了15个领域)

    人生苦短,越来越多的人,都开始用Python了. 但寻找好的项目资源,费时又费力,成了头号难题. 现在,好消息来了.最近,有人在GitHub上放了一座"金矿". 目前里面有236个 ...

  2. 【radar】毫米波雷达相关开源项目代码汇总(工具箱、仿真、2D毫米波检测、融合、4D毫米波检测、分割、SLAM、跟踪)(6)

    [radar]毫米波雷达相关开源项目代码汇总(工具箱.仿真.2D毫米波检测.融合.4D毫米波检测.分割.SLAM.跟踪)(6) Toolbox pymmw https://github.com/m6c ...

  3. 使用git更新github上的开源项目

    以前经常在github上下载一些开源项目,比如crtmpserver, nginx, apache traffic server, ffmpeg等, 一直不知道怎么同步更新到当前的最新源码. 我以前的 ...

  4. OpenDigg前端开源项目月报201704

    由OpenDigg 出品的前端开源项目月报第一期来啦.我们的前端开源月报集合了OpenDigg一个月来新收录的优质前端开源项目,方便前端开发人员便捷的找到自己需要的项目工具. reactide Rea ...

  5. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...

  6. 人工智能和机器学习领域有哪些有趣的开源项目

    人工智能和机器学习领域有哪些有趣的开源项目? 投递人 itwriter 发布于 2014-12-02 11:21 评论(0) 有20人阅读  原文链接  [收藏]  « 本文简要介绍了 10 款   ...

  7. huggingface实操_盘点2018年度GtiHub开源项目TOP 25

    本文作者 Pranav Dar 是 Analytics Vidhya 的编辑,对数据科学和机器学习有较深入的研究和简介,致力于为使用机器学习和人工智能推动人类进步找到新途径.2018 这一年中,作者在 ...

  8. python潜力开源项目_比较了1000多个Python开源项目,精选出这34个

    传智播客博学谷 微信号:boxuegu- get最新最全的IT技能 免费领取各种视频资料 在过去的一年里,Mybridge比较了近1000个的Python开源库,并从中评选出34个最有用的工具来帮助你 ...

  9. python开源库推荐_推荐5个值得关注的Python开源项目

    原标题:推荐5个值得关注的Python开源项目 今天小编看到了五个开源项目,觉得还错,推荐给大家. 1.Wagtail CMS Wagtail是一个基于Django的CMS系统 它拥有优质的用户体验 ...

  10. 中国互联网公司开源项目调研报告

    近年来,开源技术得到越来越多的重视,微软收购GitHub.IBM收购红帽,都表明了开源的价值.国内公司也越来越多的参与开源,加入开源基金会/贡献开源项目.但是,它们到底做得如何呢?为此InfoQ统计了 ...

最新文章

  1. Java高级特性增强-多线程
  2. Nature:新聘“诺奖级泰斗”研究揭示大脑中执行不同认知功能环路之间的协同作用
  3. c++多线程队列 类对象
  4. 经典案例鸢尾花分类, 在Keras中使用sklearn调参
  5. jQuery操作标签--样式、文本、属性操作, 文档处理
  6. Win32ASM学习[23]:RadASM快捷键
  7. 二十三种设计模式详解
  8. java限制一个接口的执行时间_Java 并发编程:任务执行器 Executor 接口
  9. slam无人车清除地图残影
  10. DialogBox和DialogBoxParam函数
  11. VS2019搭建C语言开发环境(图文教程)
  12. laravel 框架使用hdjs 实现富文本编辑器功能
  13. 站群服务器找11火星软件
  14. gpu内存大小 android,Android性能测试(内存、cpu、fps、流量、GPU、电量)——adb篇...
  15. 美国市场数据分析初创公司Simon Data获2000万美元融资
  16. s8 android 8.0变化,三星s8何时能更新android8.0
  17. 金融科技大数据产品推荐:金融魔方 ---专业的金融SaaS服务平台
  18. win10右键菜单发送到的选项为空怎么解决
  19. 如何让win XP实现自动登陆
  20. Windows 上的网络通信编程

热门文章

  1. 小福利,PMP考试真题刷起来,人人都当项目管理大师!
  2. 【PMP】pmp练习题及解析
  3. RTCM1005详解
  4. 只要学会这个PDF压缩方法,压缩PDF不再是难题
  5. 39节点含太阳能算例
  6. adb命令查看手机上的APP包名和启动activity
  7. 计算机四级网络工程师题目,计算机四级网络工程师题库
  8. 实现fashion_minst服装图像分类
  9. zepto.js学习
  10. websocket实现实时直播