我希望为画布保留相同大小的位图,因为当我将自定义视图添加到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);
...
}
...
}
}
答案 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);
}`