package liu.roundimagedemo.view;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
import android.util.AttributeSet;
import android.widget.ImageView; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL; /**
* Created by 刘楠 on 2016/8/31 0031.22:14
*/
public class NetImageView extends ImageView { Bitmap mBitmap; /**
* 是否为圆形
*/
private boolean isRound = false; public void setRound(boolean round) {
isRound = round;
} Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
//super.handleMessage(msg);
if(!isRound){
setImageBitmap(mBitmap);
return;
} Drawable drawable =createRoundBitmap(mBitmap); setImageDrawable(drawable); }
}; /**
* 建立圆形图片
* @param src
* @return
*/
private Drawable createRoundBitmap(Bitmap src) { Bitmap dst; if(src.getWidth()>src.getHeight()){
dst = Bitmap.createBitmap(src,src.getWidth()/2-src.getHeight()/2,0,src.getHeight(),src.getHeight());
}else {
dst = Bitmap.createBitmap(src,0,src.getHeight()/2-src.getWidth()/2,src.getWidth(),src.getWidth());
} RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(),dst); roundedBitmapDrawable.setAntiAlias(true); roundedBitmapDrawable.setCornerRadius(dst.getWidth()/2); return roundedBitmapDrawable;
} public NetImageView(Context context) {
super(context);
} public NetImageView(Context context, AttributeSet attrs) {
super(context, attrs);
} /**
* 设置本地文件的图片
* @param url
*/
public void setLocalImage(String url){ FileInputStream fis =null;
try {
fis = new FileInputStream(url); mBitmap = BitmapFactory.decodeStream(fis); mHandler.sendEmptyMessage(0x1324);
//setImageBitmap(decodeStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} /**
* 设置资源文件
* @param resId
*/
public void setResourceImage(int resId){ mBitmap = BitmapFactory.decodeResource(getResources(), resId);
mHandler.sendEmptyMessage(0x133);
// setImageBitmap(bitmap);
} public void setUrlImage(final String url){
new Thread(){
@Override
public void run() {
try {
URL uri = new URL(url); HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); // conn.setConnectTimeout(100);
// conn.setDoInput(true); // conn.setReadTimeout(100);
int responseCode = conn.getResponseCode(); if(responseCode==200){
InputStream is = conn.getInputStream(); mBitmap = BitmapFactory.decodeStream(is);
mHandler.sendEmptyMessage(0x343);
is.close();
} } catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally { }
}
}.start();
}
}

ImageView学习的更多相关文章

  1. cocos代码研究(19)Widget子类ImageView学习笔记

    理论基础 显示图片的小控件,继承自 Widget . 代码实践 static ImageView * create()创建一个空的ImageView static ImageView * create ...

  2. Android Studio 之 ImageView 学习笔记

    •参考资料 [1]:菜鸟教程 [2]:bilibili视频教程 •src和blackground的区别 background通常指的都是背景,而src指的是内容 当使用 src 填入图片时,是按照图片 ...

  3. Android学习笔记⑥——UI组件的学习ImageView相关

    ImageView是集成了View的组件,它的主要工作就是显示一些图片啊,虽然他的用法一句话概括了,但是我觉得学起来应该不会太简单,正所谓 短小而精悍么 :) ImageView 派生了 ImageB ...

  4. Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...

  5. ImageView的学习

    学习安卓时我还是习惯看懂手册,虽然是英文但是可以获得的东西必然也是更多的,否则自己只能停留在拾人牙缝的水平,虽然我是初学,但是还是分享一些自己的学习过程及方法. 从手册中我们看以知道,ImageVie ...

  6. Android(java)学习笔记147:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1. 有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高 ...

  7. 安卓开发学习日记 DAY3——TextView,EditView,ImageView

    今天学习了一些控件的使用方法,包括TextView,EditView,ImageView 1.TextView,输出一个文本呗 主要属性有 android:id 标志 android:layout_w ...

  8. iOS学习-UIButton的imageView和titleLabel

    UIButton的imageView和titleLabel的位置设置通过setImageEdgeInsets和setTitleEdgeInsets来设置 参考:http://blog.csdn.net ...

  9. android学习笔记之ImageView的scaleType属性

    我们知道,ImageView有一个属性叫做scaleType,它的取值一共有八种,分别是:matrix,fitXY,fitStart,fitCenter,fitEnd,center,centerCro ...

随机推荐

  1. Restore Volume 操作 - 每天5分钟玩转 OpenStack(60)

    前面我们 backup 了 voluem,今天我们将讨论如何 restore volume. restore 的过程其实很简单,两步走: 在存储节点上创建一个空白 volume. 将 backup 的 ...

  2. Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)

    上一节我们讨论了 Cinder 创建 Volume 的第一部分,cinder-api 的操作,本节继续第二部分,cinder-scheduler 调度工作. cinder-scheduler 执行调度 ...

  3. Web APi之Web Host消息处理管道(六)

    前言 我们知道Web API本身是无法提供请求-响应的机制,它是通过Web Host以及Self Host的寄宿的宿主方式来提供一个请求-响应的运行环境.二者都是将请求和响应抽象成HttpRespon ...

  4. (第七天)DOM练习一

    动态删除元素 给定一个ul列表,点击ul中子节点进行删除 window.onload = function() { ].childNodes; () console.log(list.length); ...

  5. css:图标与文字对齐的两种方法

    (好久没写博客了,这几个月的积累比较零碎,记在本子上,现在开始整理归类) 在平时写页面的过程中,常遇到要把小图标与文字对齐的情况.比如: 总结了两种方法,代码量都比较少. 第一种 对img设置竖直方向 ...

  6. RESTful API URI 设计: 判断资源是否存在?

    相关的一篇文章:RESTful API URI 设计的一些总结. 问题场景:判断一个资源(Resources)是否存在,URI 该如何设计? 应用示例:判断 id 为 1 用户下,名称为 window ...

  7. 改写yii2的listview功能

    在vendor\yiisoft\yii2\widgets路径下新增文件ListViewtest,将下列代码粘贴并保存 <?php namespace yii\widgets; use Yii;u ...

  8. iOS chart 图表完美解决方案 基于swift

    如果打算在app中使用图标功能,这个框架基本能够满足90%的需求 下边是作者的框架的下载地址 ,基于swift2.0 https://github.com/danielgindi/ios-charts ...

  9. 基于Angularjs实现分页

    前言 学习任何一门语言前肯定是有业务需求来驱动你去学习它,当然ng也不例外,在学习ng前我第一个想做的demo就是基于ng实现分页,除去基本的计算思路外就是使用指令封装成一个插件,在需要分页的列表页面 ...

  10. Android动画的理解

    基础知识 在我们开始讲Android动画这个知识点之前,我们了解下相应的基础知识点. Shape篇 一般用Shape定义的XML文件是存放在Drawable目录下,广泛应用于在Button.TextV ...