canvas2Draw - 如何将视图 class 连接到 canvas2
canvas2Draw - how to connect view class to the canvas2
full code 我是 android 工作室的新人,我在绘画方面遇到了问题。
执行后它不起作用
public class MainActivity 扩展 AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View eissa=new eissa(this);
setContentView(eissa);
}
}
class eissa extends View {
private Canvas canvas2;
private Bitmap backingbitmap;
public eissa(Context context) {
super(context);
backingbitmap=Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);
canvas2= new Canvas(backingbitmap);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(0,50,100,null);
canvas2.drawCircle(0,50,100,null);
canvas.drawBitmap(backingbitmap,0,0,null);
}
}
2.
canvas.drawCircle() 有问题,因为没有 Paint 参数(最后一个)。 drawCircle 文档说:“Paint:用于绘制圆圈的颜料此值不能为空。”
因此您可以在构造函数中创建一个 Paint 以传递给 drawCircle 方法:
class eissa extends View {
private Canvas canvas2;
private Bitmap backingbitmap;
Paint viewPaint;
public eissa(Context context) {
super(context);
backingbitmap=Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);
canvas2= new Canvas(backingbitmap);
viewPaint = new Paint();
viewPaint.setColor(0xFFFF0000); // set your desired color here context.getColor(R.color....);
viewPaint.setStrokeWidth(4);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(0, 50, 100, viewPaint);
canvas2.drawCircle(0, 50, 100, viewPaint);
canvas.drawBitmap(backingbitmap, 0, 0, null);
}
}
1.
视图的尺寸未在任何地方指定,导致平台使用默认的 LayoutParams,其中 layout_width 和 layout_height 等于 WRAP_CONTENT,因此视图不可见。要解决 ui 问题,您可以使用工具/布局检查器,这有助于确定原因(尺寸不正确)。
这是关于 measuring custom views.
的一个很好的教程
quickest 修复是使用 setContentView 中的 LayoutParams 指定尺寸:
// replace setContentView() in onCreate() with this
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
setContentView(eissa, lp);
full code 我是 android 工作室的新人,我在绘画方面遇到了问题。 执行后它不起作用
public class MainActivity 扩展 AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View eissa=new eissa(this);
setContentView(eissa);
}
}
class eissa extends View {
private Canvas canvas2;
private Bitmap backingbitmap;
public eissa(Context context) {
super(context);
backingbitmap=Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);
canvas2= new Canvas(backingbitmap);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(0,50,100,null);
canvas2.drawCircle(0,50,100,null);
canvas.drawBitmap(backingbitmap,0,0,null);
}
}
2.
canvas.drawCircle() 有问题,因为没有 Paint 参数(最后一个)。 drawCircle 文档说:“Paint:用于绘制圆圈的颜料此值不能为空。”
因此您可以在构造函数中创建一个 Paint 以传递给 drawCircle 方法:
class eissa extends View {
private Canvas canvas2;
private Bitmap backingbitmap;
Paint viewPaint;
public eissa(Context context) {
super(context);
backingbitmap=Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);
canvas2= new Canvas(backingbitmap);
viewPaint = new Paint();
viewPaint.setColor(0xFFFF0000); // set your desired color here context.getColor(R.color....);
viewPaint.setStrokeWidth(4);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(0, 50, 100, viewPaint);
canvas2.drawCircle(0, 50, 100, viewPaint);
canvas.drawBitmap(backingbitmap, 0, 0, null);
}
}
1.
视图的尺寸未在任何地方指定,导致平台使用默认的 LayoutParams,其中 layout_width 和 layout_height 等于 WRAP_CONTENT,因此视图不可见。要解决 ui 问题,您可以使用工具/布局检查器,这有助于确定原因(尺寸不正确)。 这是关于 measuring custom views.
的一个很好的教程quickest 修复是使用 setContentView 中的 LayoutParams 指定尺寸:
// replace setContentView() in onCreate() with this
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
setContentView(eissa, lp);