zoukankan      html  css  js  c++  java
  • 3-VIV-Android控件之ImageView

    零、前言

    [1].ImageView地位:直接继承自View,安卓源码1600+,算是个小类,但图片显示基本上都用它
    [2].scaleType有点小烦,不过看图还是挺清晰的
    [3].cropToPadding、adjustViewBounds、tint
    [4].图片设置

    源码中ImageView的自定义属性:

     * @attr ref android.R.styleable#ImageView_adjustViewBounds
     * @attr ref android.R.styleable#ImageView_src
     * @attr ref android.R.styleable#ImageView_maxWidth
     * @attr ref android.R.styleable#ImageView_maxHeight
     * @attr ref android.R.styleable#ImageView_tint
     * @attr ref android.R.styleable#ImageView_scaleType
     * @attr ref android.R.styleable#ImageView_cropToPadding #是否截取指定区域用空白代替,需要与scrollY一起使用
    

    一、剪裁类型:scaleType

    一图抵千言:左边大图,右边小图
    默认:fitCenter
    在xml里matrix表现良好(如图开始),但用代码控制有些奇怪

    9414344-627340b501502622.gif
    ImageView裁剪类型.gif
    fitCenter:按比例扩大或缩小到ImageView的ImageView的高度,居中显示
    fitEnd:按比例扩大(缩小)到ImageView的高度,显示在ImageView的下部分位置
    fitStart:按比例扩大(缩小)到ImageView的高度,显示在ImageView的上部分位置
    fitXY:不保持原比例,填满ImageView
    center:按比例扩大或缩小到ImageView的ImageView的高度,居中显示
    centerCrop:(小图会放大形成模糊版的center,大图同center)
    centerInside:(小图会保持原大小,大图同fitCenter)
    matrix:不改变原图的大小,从ImageView的左上角开始绘制,超过ImageView的裁剪
    

    二、剪裁:cropToPadding:需要与scrollX或scrollY同用,单独无效

    测试时true和false没有区别。
    效果上来看,图片位置偏移了

    9414344-3624bb5a3d9a4792.gif
    cropToPadding.gif
    android:cropToPadding="true"
    android:scrollY="@dimen/sp_30"
    android:scrollX="@dimen/sp_16"
    

    三、adjustViewBounds

    前提:1.保证layout_width、layout_height为wrap_content
    2.设置了maxHeight、maxWidth

    9414344-a47380cfb2a1d2f3.png
    adjustViewBounds.png
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxHeight="50dp"
    android:maxWidth="50dp"
    android:adjustViewBounds="true"
    

    四、tint覆盖色:最好有透明度的颜色,不然图片就全盖住了

    9414344-1443a44b860efe5c.png
    tint.png
    android:tint="#22FF4081"
    

    五、最重要的要数设置图片了

    1.xml设置图片
    android:src="@mipmap/iv_50x40"
    
    2.代码中设置

    Drawable和Bitmap都是安卓中图片显示和处理的重要类,以后会详细论述。

    //通过资源加载
    mIv500.setImageResource(R.mipmap.bg4);
    //通过Drawable对象加载
    mIv500.setImageDrawable(ContextCompat.getDrawable(this, R.mipmap.cup));
    //通过Bitmap对象加载
    mIv500.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.bz));
    

    后记、

    1.声明:

    [1]本文由张风捷特烈原创,转载请注明
    [2]欢迎广大编程爱好者共同交流
    [3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
    [4]你的喜欢与支持将是我最大的动力

    2.连接传送门:

    更多安卓技术欢迎访问:安卓技术栈
    我的github地址:欢迎star
    简书首发,腾讯云+社区同步更新
    张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

    3.联系我

    QQ:1981462002
    邮箱:1981462002@qq.com
    微信:zdl1994328

    4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
    9414344-c474349cd3bd4b82.jpg
    公众号.jpg
  • 相关阅读:
    JavaScript基础知识——异步和单线程
    JavaScript基础知识——作用域和闭包
    JavaScript基础知识——原型和原型链
    JavaScript基础知识——变量类型与计算
    JavaScript 学者必看“new”
    Javascript中颇受诟病的「this错乱」问题
    Python之路
    Python
    Python
    python所遇问题合集(持续更新)
  • 原文地址:https://www.cnblogs.com/toly-top/p/9781906.html
Copyright © 2011-2022 走看看