当前位置: 首页 > news >正文

记录网站建设的基本步骤网络营销推广策划的步骤是什么

记录网站建设的基本步骤,网络营销推广策划的步骤是什么,周浦高端网站建设公司,网络营销公司策划方案背景 ImageView的scaleType默认显示图片是这样,但是有时候设计稿需求希望图片左右能紧贴着ImageView左右边缘,又不破坏图片的比例,用自带的matrix,centerCrop等都可以满足 但是都会造成图片的某些区域被裁剪了,如果设…

背景

在这里插入图片描述
ImageView的scaleType默认显示图片是这样,但是有时候设计稿需求希望图片左右能紧贴着ImageView左右边缘,又不破坏图片的比例,用自带的matrix,centerCrop等都可以满足
在这里插入图片描述
但是都会造成图片的某些区域被裁剪了,如果设计稿只能接受底部被裁剪,其他边区域正常显示,那系统自带的scaleType则无法满足需求。这时需要自定义新的scaleType来满足设计要求

源码解析

  • 以宽度为基准,计算图片与ImageView的缩放比例
scale = viewWidth.toFloat() / drawableWidth.toFloat()
  • 根据自定义的scale_type,算出图片显示区域,viewHeight / scale为图片显示高度
        var drawableRect: RectF? = nullif (mCropType == FROM_TOP) {drawableRect = RectF(0f, 0f, drawableWidth.toFloat(), viewHeight / scale)} else if (mCropType == FROM_BOTTOM) {drawableRect = RectF(0f,drawableHeight - viewHeight / scale,drawableWidth.toFloat(),drawableHeight.toFloat())}
  • 使用setImageMatrix设置图片绘制边界
val viewRect = RectF(0f, 0f, viewWidth.toFloat(), viewHeight.toFloat())
matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.FILL)
setImageMatrix(matrix)

完整源码

class MatrixImageView @JvmOverloads constructor(context: Context,attrs: AttributeSet? = null,defStyleAttr: Int = 0
) : AppCompatImageView(context, attrs, defStyleAttr) {companion object {const val DEFAULT = 0const val FROM_TOP = 1const val FROM_BOTTOM = 2}private var mCropType = DEFAULTinit {val ta = context.obtainStyledAttributes(attrs, R.styleable.MatrixImageView, 0, 0)mCropType = ta.getInt(R.styleable.MatrixImageView_scale_type, DEFAULT)if (mCropType != DEFAULT) {setScaleType(ScaleType.MATRIX)}ta.recycle()}override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {super.onSizeChanged(w, h, oldw, oldh)if (mCropType != DEFAULT) {setupImageMatrixRect()}}private fun setupImageMatrixRect() {if (getDrawable() == null) {return}val matrix = getImageMatrix()val scale: Floatval viewWidth = width - paddingLeft - paddingRightval viewHeight = height - paddingLeft - paddingRightval drawableWidth = getDrawable().intrinsicWidthval drawableHeight = getDrawable().intrinsicHeightscale = viewWidth.toFloat() / drawableWidth.toFloat()var drawableRect: RectF? = nullif (mCropType == FROM_TOP) {drawableRect = RectF(0f, 0f, drawableWidth.toFloat(), viewHeight / scale)} else if (mCropType == FROM_BOTTOM) {drawableRect = RectF(0f,drawableHeight - viewHeight / scale,drawableWidth.toFloat(),drawableHeight.toFloat())}val viewRect = RectF(0f, 0f, viewWidth.toFloat(), viewHeight.toFloat())matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.FILL)setImageMatrix(matrix)}fun setCropType(@CropType cropType: Int) {if (mCropType != cropType) {mCropType = cropTypesetupImageMatrixRect()invalidate()}}@IntDef(FROM_TOP, FROM_BOTTOM)@Retention(AnnotationRetention.SOURCE)annotation class CropType
}
    <declare-styleable name="MatrixImageView"><attr name="scale_type"><enum name="matrix_top" value="1" /><enum name="matrix_bottom" value="2" /></attr></declare-styleable>

最终效果

在这里插入图片描述

http://www.ds6.com.cn/news/69252.html

相关文章:

  • 摄影网站功能设计游戏推广员平台
  • 建设积分商城网站seo系统源码
  • 网站开发研究论文关键词你们都搜什么
  • 网站开发攻克时间深圳海外推广
  • 如何做购物网站推广百度竞价点击一次多少钱
  • 网站导航条用什么做济南网站建设制作
  • 网站怎么做海外推广方案注册网站域名
  • 政府网站群建设的意义百度如何投放广告
  • 网站大型网页游戏富阳seo关键词优化
  • 流量套餐网站登封网站建设公司
  • 广州模板建站多少钱搜索引擎公司排名
  • 希腊网站后缀上海网站快速排名优化
  • 广州专业网站制作哪家专业营销传播服务
  • 网站建设推广怎么做福州百度推广优化排名
  • 网站建设空间是指什么软件建立网站需要什么条件
  • 重庆网站制作的网站软文推广代写代发
  • 微网站样式seo美式
  • 普陀区建设工程质检网站各大搜索引擎入口
  • 网站(建设)安全自查报告汽车网站建设
  • discuz论坛 整合到网站关键词热度
  • 公司网站服务商北京官网seo
  • 企业信用信息公示系统查询武汉seo顾问
  • 低价网站制作顺德seo网络培训机构
  • 将网站的字体设计成百分比的形式要怎样定义杭州网站推广与优化
  • 权威的手机网站建设百度站长平台链接提交
  • 免费自助建站自助建站平台企业营销推广怎么做
  • 蛋糕行业网站建设方案seo优化网站
  • wordpress 手机注册插件广州网站设计专注乐云seo
  • 长春做公司网站的seo发帖工具
  • 聊城集团网站建设seo快速排名多少钱