从布局中获取位图

Ock*_*zor 10 android

我正在尝试给布局充气并使用它来在图像视图上设置位图.然后,我将该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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Raj*_*ddy 26

将布局转换为位图.

FrameLayout view = (FrameLayout)findViewById(R.id.framelayout);
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bm = view.getDrawingCache();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.但是,这会在第二行代码上产生nullpointer异常. (2认同)