在框架布局中绘制一个圆圈作为叠加层
Draw a circle as an overlay within a frame layout
我有一个框架布局(全屏),它充当显示相机预览的另一个框架布局的容器。现在我想在相机预览顶部显示一个给定半径的圆。半径应根据当前预览图像的某些属性而变化。
我知道我可以添加一些(半透明)布局 "on top" 我用于相机预览的框架布局,但我不确定如何最好地显示这个 "overlay" 圆圈.圆应居中,有实线但不填充,即透明,其背景也应透明。
您可以在现有 Activity class 中创建自己的视图 class。这是我的 class.
class CanvasView extends View {
private Paint paint;
public CanvasView(Context context){
super(context);
//Customize your own properties
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10f);
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
paint.setColor(Color.RED);
canvas.drawCircle(enter coords and radius here);
}
}
您可以通过调用 invalidate() 方法从 class 中调用 onDraw 方法..
这是将其添加到布局中的方法..
假设您声明了一个名为 drawable 的 CanvasView class,并拥有名为 main_layout 的框架布局,您可以通过执行以下操作将其添加到现有的框架布局中...
CanvasView drawable = new CanvasView(getApplicationContext());
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
main_layout.addView(drawable, params);
希望这有效!
我有一个框架布局(全屏),它充当显示相机预览的另一个框架布局的容器。现在我想在相机预览顶部显示一个给定半径的圆。半径应根据当前预览图像的某些属性而变化。
我知道我可以添加一些(半透明)布局 "on top" 我用于相机预览的框架布局,但我不确定如何最好地显示这个 "overlay" 圆圈.圆应居中,有实线但不填充,即透明,其背景也应透明。
您可以在现有 Activity class 中创建自己的视图 class。这是我的 class.
class CanvasView extends View {
private Paint paint;
public CanvasView(Context context){
super(context);
//Customize your own properties
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10f);
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
paint.setColor(Color.RED);
canvas.drawCircle(enter coords and radius here);
}
}
您可以通过调用 invalidate() 方法从 class 中调用 onDraw 方法..
这是将其添加到布局中的方法.. 假设您声明了一个名为 drawable 的 CanvasView class,并拥有名为 main_layout 的框架布局,您可以通过执行以下操作将其添加到现有的框架布局中...
CanvasView drawable = new CanvasView(getApplicationContext());
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
main_layout.addView(drawable, params);
希望这有效!