【Android_View】ImageView源码简析笔记(一)

【Android】ImageView源码简析

引文


这里是【重要声明】:
首先非常非常非常感谢您能阅读这篇文章,重要的谢谢当然是说三遍。
【1】因为Android系统中与View体系相关的内容较为复杂庞大,而一篇文章根本不可能讲述完所有的要点,因此文章中对于某些属性细节仅为介绍,而其实现以及具体的使用与分析等引用了【其它博主】的相应【博文】,借此希望能略微免除读者再额外搜索查阅的烦恼。在此对相应文章的作者表示感谢,由于没有预先与相关博主进行沟通联系,如若侵犯了您的权益,请您联系我,立刻删除相应的链接。再次表示感谢。
【2】文中有些方法内容的简析在可能我们平时编程时基本不会调用,但知其然与知其所以然应该能帮助我们更好的理解ImageView。
【3】作者水平有限,文章会有很多Bug,希望小伙伴们多多批评,我将及时学习改正,我们大家共同学习。


ImageView是Android开发中常用的图像显示控件。网上有很多关于其某某具体属性分析的文章,但是搜索来搜索去都没有发现相应的总结。因此希望借这篇文章将其代码简要的分析一下。站在前人的肩膀上,也不能总是吃老本啊,总归也是要拓展一下的。
本次源码的分析建立在Android API 25的基础上,毕竟截止到写作时传说中Android O(26)还只是beta_4版本啊。
我们先忽略它的直接与间接子类,只看继承关系。首先,通过官网的解释(如下图):
这里写图片描述

可以很清楚看到ImageView直接继承于View。


一、内部成员变量及其枚举类与构造器简析

1、其成员变量(与相应注释)主要如下:
    private Uri mUri; 
    private int mResource = 0;
    //【ImageView】中利用【矩阵】来处理缩放等操作
    private Matrix mMatrix;
    //缩放类型
    private ScaleType mScaleType;
    private boolean mHaveFrame = false;
    private boolean mAdjustViewBounds = false;
    private int mMaxWidth = Integer.MAX_VALUE;
    private int mMaxHeight = Integer.MAX_VALUE;

    //以下变量与显示的Drawable有关
    private ColorFilter mColorFilter = null; //色彩滤镜
    private boolean mHasColorFilter = false;//是否含有色彩滤镜
    private Xfermode mXfermode;//图像混合模式
    private int mAlpha = 255;//透明度
    private final int mViewAlphaScale = 256;
    private boolean mColorMod = false;

    private Drawable mDrawable = null;
    private BitmapDrawable mRecycleableBitmapDrawable = null;
    //注意tint:为图片设置渲染颜色,单独设置时,会覆盖掉原有背景图片
    private ColorStateList mDrawableTintList = null;//着色列表
    private PorterDuff.Mode mDrawableTintMode = null;//图像(渲染)混合
    private boolean mHasDrawableTint = false;
    private boolean mHasDrawableTintMode = false;

    private int[] mState = null;//图像当前的状态
    private boolean mMergeState = false;
    private int mLevel = 0;
    [一篇关于Level的博文](http://blog.csdn.net/zhangphil/article/details/48936209)
    private int mDrawableWidth;
    private int mDrawableHeight;
    private Matrix mDrawMatrix = null
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值