1. 程式人生 > >Android:佈局中的view存成圖片

Android:佈局中的view存成圖片

新浪部落格轉載地址 http://blog.sina.com.cn/s/blog_6854b8350101qila.html

android可以將佈局中的view存成圖片。這個問題雖然不常見,但是有還是會應用到。來看下面一段程式碼

View view = getLayoutInflater().inflate(R.layout.activity_main, null);
//開啟影象快取
view.setDrawingCacheEnabled(true);
//測量view的大小
view.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
);
//傳送位置和尺寸到view及其所有的子view
view.layout (0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

Bitmap bp = view.getDrawingCache();//獲得可視元件的截圖

這樣寫根據解析的佈局的不同,view.measure()方法可能會報空指標異常,檢視原始碼這樣翻譯的:The actual mesurement work of a view is performed in
* {@link #onMeasure(int, int)}, called by this method. Therefore, only
* {@link #onMeasure(int, int)} can and must be overriden by subclasses.
*
也就是說想view在呼叫measure的時候必須重寫他的onMeasure()方法。但是我沒有重寫也有成功的情況。檢視佈局發現有的佈局跟標籤是 有的是
將RelativeLayout 把他換為LinearLayout 就好了。究其原因,原來是 Linearlayout重寫了onmeasure方法,其他的佈局檔案沒有重寫onmeasure,所以在呼叫listItem.measure(0, 0);
會報空指標異常,如果想用這個東東,就必須用linearlayout佈局或者重寫onMeasure()方法了。。