ImageView学习

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();
    }
}
时间: 2024-10-16 22:47:19

ImageView学习的相关文章

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

理论基础 显示图片的小控件,继承自 Widget . 代码实践 static ImageView * create()创建一个空的ImageView static ImageView * create(const std::string &imageFileName, //纹理的文件名字.TextureResType texType=TextureResType::LOCAL)根据图片名字创建一个ImageView. void loadTexture (const std::string &

ImageView的学习

学习安卓时我还是习惯看懂手册,虽然是英文但是可以获得的东西必然也是更多的,否则自己只能停留在拾人牙缝的水平,虽然我是初学,但是还是分享一些自己的学习过程及方法. 从手册中我们看以知道,ImageView继承自View组件,它的类概述中说到:它可以显示任意图象,例如一个图标. ImageView的类可以装载从各种来源的图像(诸如资源或内容提供者),获取从图像计算它的测量,以便它可以在任何布局管理器使用的护理,并提供了不同的显示选项诸如缩放和着色.除此之外,我们还知道它派生了ImageButton.

Cocostudio学习笔记(3) ImageView + Slider

这篇记录了两个控件的使用流程:ImageView 和 Slide. ---------------------------------------------------------------------------------------------------------------------------- ImageView ---------------------------------------------------------------------------------

第三方类库学习笔记:CustomShapeImageView 自定义形状的ImageView

一个两年前出来的第三方类库,具有不限于圆形ImageView的多种形状ImageView,项目开发必备 github下载地址:https://github.com/MostafaGazar/CustomShapeImageView 1.首先源码中有一个第三方类库 :library 先要把Library导入到项目中, 不会的可以看下导入方法:关于Eclipse 和 IDEA 导入library库文件 的步骤 2.源码中res文件夹下有一个raw文件夹 复制到自己的项目中(选择性复制,是一些特殊的图

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

今天学习了一些控件的使用方法,包括TextView,EditView,ImageView 1.TextView,输出一个文本呗 主要属性有 android:id 标志 android:layout_width 宽度 android:layout_height 高度 android:text  文本内容 android:textsize  文本大小 android:textcolor 文本颜色 android:background  背景 2.EditView,输入一个文本呗 主要属性相同 另外有

android学习笔记:ImageView

在学习ImageView时遇到的问题: 将图片置于drawable下,通过如下代码引用: android:src="@drawable/scenery1" 在真机上调试无法显示 后将图片置于mipmap下,通过如下代码引用: android:src="@mipmap/scenery1" 可正常显示,不明白原因,暂做记录

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

1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. 2.下面我们是自定义一个SmartImageView继承自ImageView,扩展了ImageView的功能:     步骤: • 新建一个SmartImageView类,让继承自ImageView(放置特定的包下): • 实现SmartImageView类下的构造方法,最好全部实现,这个不容易出

Android学习笔记_S01_E04 ImageView及其子类(一)

一.基本定义 ImageView继承自View组件,它的主要功能是用于显示任何Drawable对象,派生出了ImageButton.ZoomButton等组件. 二.属性和方法 1.ImageView的xml属性和方法 xml属性 相关方法 说明 android:adjustViewBounds setAdjustViewBounds(boolean) 设置该属性为真可以在 ImageView 调整边界时保持图片的纵横比例.(需要与maxWidth.MaxHeight一起使用,否则单独使用没有效

Android学习笔记-ImageView(图像视图)

原文来自:http://www.runoob.com/w3cnote/android-tutorial-imageview.html 本节引言: 本节介绍的UI基础控件是:ImageView(图像视图),见名知意,就是用来显示图像的一个View或者说控件! 官方API:ImageView;本节讲解的内容如下: ImageView的src属性和blackground的区别: adjustViewBounds设置图像缩放时是否按长宽比 scaleType设置缩放类型 最简单的绘制圆形的ImageVi