android view转化为image来实现某些功能

使用的场景:
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! 当然,你如果嫌显示的效果太大或太小,也可以通过这个方法调整图片大小。

Android中Bitmap和Drawable

http://dyh7077063.iteye.com/blog/970672

 

posted on 2016-05-16 11:34  2015xbx  阅读(279)  评论(0编辑  收藏  举报

导航