我正在尝试在android studio中进行凝视跟踪。我试图在屏幕上画一个矩形到相应的凝视点。但是我的方法不起作用。我在android studio中没有任何绘画经验。 这是我的绘画课
let toggleMenu = (e) => {
e.preventDefault();
if (menu.classList.contains('slideup')) {
menu.className = menu.className.replace('slideup', '');
menu.className += ' slidedown';
bottom.style.height = '440px';
} else {
menu.className = menu.className.replace('slidedown', '');
menu.className += ' slideup';
bottom.style.height = 'inherit';
}
};
这是我找到viewbyid(“ Draw”)并更新var的方法:
public class drawMargins extends View {
Paint paint;
private volatile Margin margin;
public drawMargins(Context context) {
super(context);
init(null);
}
public drawMargins(Context context, AttributeSet attrs)
{
super(context, attrs);
init(attrs);
}
public drawMargins(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(attrs);
}
public void updateMargin(Margin margin2) {
margin = margin2;
postInvalidate();
}
private void init(@Nullable AttributeSet set)
{
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
if (margin==null)
return;
paint = new Paint();
paint.setColor(Color.GREEN);
canvas.drawRect(
(float)((canvas.getWidth()/8)*margin.getX()),
(float)((canvas.getHeight()/8)*margin.getY()),
(float)((canvas.getWidth()/8)*margin.getX()+canvas.getWidth()/8),
(float)((canvas.getHeight()/8)*margin.getY()+canvas.getHeight()/8),paint);
}
}
我应该调用draw方法吗?用什么帆布?
答案 0 :(得分:0)
尝试调用invalidate()
中的postInvalidate()
而不是updateMargins()
。这将调用draw()
并应绘制矩形。
答案 1 :(得分:0)
我建议您一次执行一个步骤。我不确切地知道您如何设置“活动”或“片段”,所以我也要经历一下。
为简单起见,让我假设只有活动,没有片段。您需要两个Java类来实现目标:DrawMarginsActivity
和DrawMargins
。
DrawMargins
是Custom View
。自定义视图可帮助您创建自己的自定义工程图。请参阅此以获取更多详细信息:https://developer.android.com/training/custom-views/custom-drawing。您需要覆盖onDraw(Canvas canvas)
方法。此方法具有canvas
参数,您将在此画布上绘图。
现在,您需要将DrawMargins
视图添加到DrawMarginsActivity
中。您可以通过将此视图添加到DrawMarginsActivity
的布局文件中来实现。然后,您可以通过DrawMargins
获得对findViewById()
视图的引用。
默认情况下,创建“活动”时,将调用DrawMargins
的{{1}}方法并将其呈现。但是,如果要再次调用onDraw()
,则必须调用onDraw()
方法。这将使视图无效并为您调用DrawMargins.invalidate()
方法。
我不确定您要对视图进行哪种操作。基于此,您需要调用onDraw()
方法。