java - canvas2Draw - 如何将视图类连接到 canvas2
问题描述
完整代码我是android studio 的新手,我在绘图时遇到问题。执行后它不起作用
公共类 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 以传递给 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 问题,您可以使用工具/布局检查器来帮助确定原因(尺寸不正确)。这是一个关于测量自定义视图的好教程。
最快的解决方法是在 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);
推荐阅读
- javascript - 为什么在使用 vee 验证表单关闭模式时出现 attach() 错误
- node.js - 异步/等待中的文件写入问题
- c# - 使用selectman时删除实体框架引用约束错误
- angular - 如何在星云中获取主菜单点击值(不是子菜单点击)
- javascript - 使用 get() 允许 Firestore 文档查询,但使用 where() 拒绝查询
- acumatica - 我们如何在 Acumatica 中有条件地为特定列字段值设置颜色
- javascript - React 中的黑客等级克隆
- regex - 如何使用正则表达式将零填充到字符串中 - 仅使用 regex101.com
- python - 使用 pyspark 对多个文件进行排名
- java - 处理程序错误:在 JSONArray (JAVA) 中插入 JSONObject 时