ViewTreeObserver vto = container.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override public void onGlobalLayout() {
container.getViewTreeObserver() .removeGlobalOnLayoutListener(this);
width = container.getWidth();
heigh = container.getHeight();
int[] xy = new int[2];
container.getLocationOnScreen(xy);
x = xy[0];
y = xy[1];
} });
/**
* 根据view 返回drawable 对象
* @param view
* @return
*/
public Drawable getDrawable(View view){
int w = screenWidth /2;
int h = screenHeight /2;
Bitmap b = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
// c.translate(-view.getScrollX(), -view.getScrollY());
view.draw(c);
view.setDrawingCacheEnabled(true);
Bitmap viewBmp = b.copy(Bitmap.Config.ARGB_8888, true);
view.destroyDrawingCache();
return new BitmapDrawable(this.getResources(), viewBmp);
// return new BitmapDrawable(viewBmp);
}
本文介绍如何使用ViewTreeObserver监听View布局变化,获取View的尺寸,并将其转换为drawable对象。通过代码实现,详细步骤包括初始化ViewTreeObserver、添加全局布局监听器、获取View的宽度和高度,以及通过Canvas绘制View内容到Bitmap中,最终返回BitmapDrawable。
183

被折叠的 条评论
为什么被折叠?



