从布局获取位图

我试图膨胀一个布局,并使用它来设置一个图像视图上的位图。 然后,我将imageview添加到线性布局并显示线性布局。 以下是我所尝试的:

public class TestActivity extends Activity { private static Bitmap bitMap; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout l = new LinearLayout(this); bitMap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(), getWindowManager().getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitMap); LayoutInflater inflater = LayoutInflater.from(this); View v1 = inflater.inflate(R.layout.main, null); v1.layout(0, 0, getWindowManager().getDefaultDisplay().getWidth(), getWindowManager().getDefaultDisplay().getHeight()); v1.draw(canvas); ImageView i1 = new ImageView(this); i1.setImageBitmap(bitMap); i1.setAdjustViewBounds(true); i1.setLayoutParams(new FrameLayout.LayoutParams(getWindowManager().getDefaultDisplay().getWidth(), getWindowManager().getDefaultDisplay().getHeight())); l.addView(i1); setContentView(l); } } 

不幸的是,bitMap没有正确创build。 有什么我做错了吗?

Solutions Collecting From Web of "从布局获取位图"

将布局转换为位图。

 FrameLayout view = (FrameLayout)findViewById(R.id.framelayout); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bm = view.getDrawingCache(); 
  /*** * * @param flameLayout/linearLayout... * @param width * @param height * @return */ public static Bitmap viewToBitmap(View view, int width, int height) { Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(canvas); return bitmap; } 

你不能得到位图的意见或布局不被夸大。

布局只会在OnCreate()之后膨胀

1.获取Button_Clicked(View view){}位图Button_Clicked(View view){}

2.或者使用Handle()来延迟你的位图

3.确保使用view.buildDrawingCache();创build绘图cachingview.buildDrawingCache();