
scaleTypescaleType有8种枚举值按缩放和等比分为三类原尺寸MATRIX、CENTER缩放不等比FIT_XY缩放等比FIT_START、FIT_CENTER、FIT_END、CENTER_CROP、CENTER_INSIDEImageButtonImageButton派生自ImageViewImageButton又派生了一个ZoomButton,ZoomButton可以代表放大和缩小两个按钮。ZoomButton的行为基本类似于ImageButton,只是Android默认提供了btn_minus,btn_plus两个Drawable资源,只要为ZoomButton的android:src属性分别指定btn_minus,btn_plus,即可实现缩小和放大按钮。Android还提供了一个ZoomControls组件,该组件相当于于同时组合了放大和缩小两个按钮,并允许分别为两个按钮绑定不同的事件监听器备。ImageButton还有一个子类:FloatingActionButton,它代表一个悬浮按钮。QuickContactBadge关联联系人QuickContactBadge继承自ImageView,因此它的本质也是图片按钮,也可以通过android:src属性指定它显示的图片。QuickContactBadge额外增加的功能是该图片可以关联到手机中指定联系人当用户单击该图片时系统会打开相应联系人的联系方式界面。tintModeandroid:tintMode是 Android 中用于定义着色混合模式的属性通常与tint属性配合使用决定指定颜色如何与原图Drawable像素进行混合。其底层对应 Porter-Duff 混合算法。核心属性与用法属性名XML 中推荐使用app:tintMode兼容旧版原生为android:tintMode。作用对象主要作用于ImageView的src、View的background/foreground以及TextView的复合 drawable。默认值src_in最常用直接替换原图颜色。适用版本API 21 原生支持低版本需通过DrawableCompat.setTintMode()或AppCompat控件实现。常见混合模式详解假设原图为黑色图标Tint 颜色为红色模式值对应代码效果描述适用场景src_inPorterDuff.Mode.SRC_IN取原图形状填充 Tint 颜色透明区保持透明图标变色首选完全覆盖原色src_atopPorterDuff.Mode.SRC_ATOP在原图不透明处绘制 Tint透明处不变保留原图部分细节叠加颜色multiplyPorterDuff.Mode.MULTIPLY颜色相乘整体变暗模拟阴影、深色滤镜screenPorterDuff.Mode.SCREEN颜色滤色整体变亮模拟高光、浅色滤镜addPorterDuff.Mode.ADD颜色值相加可能过曝发光效果API 29 更稳定src_overPorterDuff.Mode.SRC_OVERTint 颜色覆盖在原图之上半透明叠加效果XML 使用示例xml!-- 将图标变为红色使用默认的 src_in 模式 -- ImageView android:layout_widthwrap_content android:layout_heightwrap_content android:srcdrawable/ic_icon app:tint#FF0000 app:tintModesrc_in /代码动态设置kotlin// 需先 mutate() 避免影响其他引用同一资源的 View val drawable ContextCompat.getDrawable(context, R.drawable.ic_icon)?.mutate() DrawableCompat.setTint(drawable!!, Color.RED) DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN) imageView.setImageDrawable(drawable)注意事项Vector 图标限制Vector XML 文件中不能直接写tintMode必须在引用该 Vector 的控件如 ImageView上设置。Fill Color 冲突若 Vector 内部fillColor非纯黑/透明可能导致着色异常建议 Vector 资源保持单色黑/白。兼容性在 API 21 设备上直接使用android:tintMode无效务必使用app:tintMode配合AppCompatImageView或代码方式。