ImageSpan使用时的坑(绘制出来图片大小不对的问题)

最近项目中用到图片加文字作为文本插入edittext中,删除添加时最为一个整体.就自然想到了ImageSpan的做法,但是使用new ImageSpan(Bitmap b)的时候遇到了很蒙蔽的问题,就是Bitmap放进去的时候老是发生缩放,刚开始尝试手动缩放,但是适配不了所有机型.就尝试看了下ImageSpan的内部处理方法.

 

public ImageSpan(Context context, Bitmap b, int verticalAlignment) {
    super(verticalAlignment);
    mContext = context;
    mDrawable = context != null
            ? new BitmapDrawable(context.getResources(), b)
            : new BitmapDrawable(b);
    int width = mDrawable.getIntrinsicWidth();
    int height = mDrawable.getIntrinsicHeight();
    mDrawable.setBounds(0, 0, width > 0 ? width : 0, height > 0 ? height : 0); 
}

最后3行就是主要思路了,这里面回得到传进来的Bitmap(这里会转化成Drawable)的固有值,再去查找方法

 

public int getScaledWidth(int targetDensity) {
    return scaleFromDensity(getWidth(), mDensity, targetDensity);
}

这个方法返回值就是上边获取的结果,这个方法里面看到2个参数 mDensity跟tarGetDensity就猜到了系统已经帮我们进行了缩放,tarGetDensity系统使用了默认值160,mDensity没有设置的话系统就会自动获取对应手机的mDensity,所以这里就可以将要作为ImageSpan的Bitmap设置setDensity(160),就不会发生缩放了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值