标签:
使用的场景:
1、生成自定义的图片。
2、自定义可点击的ImageSpan,意思是自定义一个动态生成的图片。
等等
View view = LayoutInflater.from(mContext).inflate(R.layout.xxxxxxxxx, null); ((ImageView)view.findViewById(R.id.xxxxxxxxx)).setImageBitmap(result.iconBitmap); ((TextView) view.findViewById(R.id.xxxxxxxxx)).setText(result.equip_name); // 测量View的大小 int spec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); view.measure(spec, spec); // 调用view的布局 view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); // 创建画图来绘制界面 Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); c.translate(-view.getScrollX(), -view.getScrollY()); view.draw(c); view.setDrawingCacheEnabled(true); // 获取位图的缓存并且复制一份 Bitmap cacheBmp = view.getDrawingCache(); Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true); // 释放绘图的缓存 view.destroyDrawingCache(); BitmapDrawable bd=new BitmapDrawable(mContext.getResources(), viewBmp); bd.setBounds(0, 0, bd.getIntrinsicWidth(), bd.getIntrinsicHeight()); // 放入缓存 BitmapCache cache = mBitmapCache.get(source); if (cache != null && cache.bitmap != null) { cache.bitmap.clear(); } cache = new BitmapCache(); cache.bitmap = new WeakReference<Bitmap>(bd.getBitmap()); cache.scale = 1.0f; mBitmapCache.put(source, cache); if (mListener != null) { mListener.onLoadingComplete(null, null, viewBmp); }
1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象
2、Canvas画布,绘图的目的区域,用于绘图
3、Bitmap位图,用于图的处理
setBounds(),这个方法是决定图片的大小,如果不设置,那么图片长宽都为0! 当然,你如果嫌显示的效果太大或太小,也可以通过这个方法调整图片大小。
http://dyh7077063.iteye.com/blog/970672
标签:
原文地址:http://www.cnblogs.com/xbx2015/p/5497520.html