设置画布大小 - Android

时间:2011-12-27 12:06:51

标签: android view canvas android-linearlayout

我希望为画布保留相同大小的位图,因为当我将自定义视图添加到LinearLayout时,会显示不同大小的画布,我想设置画布的大小,就像位图对象一样。

部分代码:

public class TESTActivity extends Activity {    

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        LinearLayout l = new LinearLayout(this);
        l.setOrientation(1);
        Button b1 = new Button(this);
        Button b2 = new Button(this);
        View mV = new MyView(this);        
        l.addView(b1);
        l.addView(b2);
        l.addView(mV);       
        setContentView(l);

    }


    public class MyView extends View {


        public MyView(Context c) {
            super(c);
            mBitmap = Bitmap.createBitmap(480, 300, Bitmap.Config.ARGB_8888);
            mCanvas = new Canvas(mBitmap);
            ...
        }
        ...
    }
}

2 个答案:

答案 0 :(得分:0)

Canvas类包含“绘制”调用。 Canvas(Bitmap bitmap)使用指定的位图构造一个画布以进行绘制。 canvas将获取绘制对象的大小。所以通过设置位图的大小,你可以设置画布的大小。

答案 1 :(得分:0)

如果要在画布上绘制自定义高度和宽度,则必须在活动类中调用 setContentView(android.view.View yourView,android.view.Viewgroup.LayoutParam yourLayout)。因为默认情况下 setContentView(View view)方法使用全宽和高度。所以你必须使用带有两个参数的重载方法以及你想要的。有关更多信息,请参阅文档。并且不要仅使用LayoutParams()构造函数来创建其对象。通过编写像 android.view.ViewGroup.LayoutParams 这样的完整路径来使用它。因为在Android SDK中有一些其他具有相同名称的类。如果您只使用LayoutParams,Eclipse可能找不到正确的类,因此请使用完整路径。

MyView customView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    customView = new MyView(getApplicationContext());
    android.view.ViewGroup.LayoutParams lp = new android.view.ViewGroup.LayoutParams(100,200);//100 is width and 200 is height
    setContentView(customView, lp);
    customView.setOnClickListener(this);

}`