有一种方法可以做到这一点。你必须创建一个Bitmap和一个Canvas并调用view.draw(canvas);
这里是代码:
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.draw(c);
return b;
}
,如果它的大小将是零之前的观点并没有显示出来。它可以测量它是这样的:
if (v.getMeasuredHeight() <= 0) {
v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
v.draw(c);
return b;
}
编辑:根据this post,传递WRAP_CONTENT
作为价值makeMeasureSpec()
并没有做任何好的(虽然一些视图类它的工作),以及推荐方法是:
// Either this
int specWidth = MeasureSpec.makeMeasureSpec(parentWidth, MeasureSpec.AT_MOST);
// Or this
int specWidth = MeasureSpec.makeMeasureSpec(0 /* any */, MeasureSpec.UNSPECIFIED);
view.measure(specWidth, specWidth);
int questionWidth = view.getMeasuredWidth();
其实,我能做这个。 – sunil 2011-03-23 11:38:27
我不完全确定,但我认为你将无法做到这一点。问题在于活动是要显示给用户的。您可以启动该活动,然后立即隐藏该活动,但该活动对于用户而言仍然可以在瞬间看到。它显示足够长的时间才能被注意,因此屏幕闪烁几次使得应用看起来不专业。但是,可能有一条命令启动一个活动而不显示它;我只是不知道它是否存在。 – 2010-05-10 09:45:16
你好,如果你得到解决方案,那么你能帮助我吗? – Kalpesh 2012-07-10 12:24:49