一旬盯、需求
微信分享模板圖片
二、做法
創(chuàng)建layout.xml并做布局調(diào)整缘挽,采用view轉(zhuǎn)bitmap的形式分享該圖片
通用的做法:
view.setDrawingCacheEnabled(true)
Canvas canvas = new Canvas(bmp);
view.draw(canvas);
三北发、疑問
view是不可見的,是否生成的圖片也是黑乎乎的一張呢盔腔? 如果不做處理結(jié)果就是黑乎乎腌巾!
好在我們還有measure、layout兩個工具
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),? ? ? ? ? ? ? ? View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view .layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
測量和位置調(diào)整完后铲觉,就可以看到生成的結(jié)果了澈蝙。
四、應(yīng)用
ScrollView包裹下如何生成Bitmap撵幽?
ScrollView下生成Bitmap需要稍作處理:
① 對ScrollView進行measure測量灯荧,layout布局調(diào)整
scrollView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
scrollView.layout(0,0, scrollView.getMeasuredWidth(), scrollView.getMeasuredHeight());
② layout內(nèi)容填充
fillShareContent(scrollView?, shareContentParams);
這一步必須提前完成,否則layout中的控件可能會有截斷的問題
③ 重新對ScrollView進行measure測量盐杂,layout布局調(diào)整
int measuredWidth = View.MeasureSpec.makeMeasureSpec(scrollView.getMeasuredWidth(), View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(scrollView.getChildAt(0).getHeight(), View.MeasureSpec.AT_MOST);
scrollView.measure(measuredWidth, measuredHeight);
scrollView.layout(0, 0,?scrollView.getMeasuredWidth(), scrollView.getMeasuredHeight());
④ 網(wǎng)絡(luò)圖片
⑤ 生成Bitmap