实现OnClick和setOnClick方法的java Android类
我正在创建一个实现onclick的可重用类和一个设置onclick的方法。该类将表示在画布上绘制的“按钮”。我知道使用x和y位置来评估按钮是否按下
如果查看代码,您可以看到一个isPressed实现,它只返回这个值(这只适用于澄清)
我需要的是能够为画布上绘制的每个项目提供一种独特的行为,这就是为什么我要实现onclick侦听器
public class CanvasButton extends CanvasItem implements View.OnClickListener {
private View.OnClickListener ClickListener;
public CanvasButton(float x, float y, int width, int height){
super(x, y, width, height);
}
public boolean isPressed(float x, float y){
return isTouched(x, y);
}
public void setOnClickListener(View.OnClickListener listener){
this.ClickListener = listener;
}
@Override
public void onClick(View v) {
}
}
我似乎不知道该怎么做
更新:我想我从提供的代码中给人的印象是错误的。我试着看风景。但那只是我认为我有的一个选择。任何行为类似于上述onclick侦听器的方法都可以
# 1 楼答案
多亏了@mdtuyen's answer我才能够装配出适合我的东西。 我实现了一个基础CanvasItem类,现在可以继承它来实现这个技巧(我省略了不相关的类方法)
实现后,我使用了CanvasItem的ArrayList或继承CanvasItem的类,该类运行以确定isHit()
一旦项目被删除,if语句中就不需要任何东西。激发isHit(),然后激发onClick
是的,这实现了与正常操作类似的功能,但使用onClick I可以在触摸屏上执行特定操作,而无需管理和跟踪画布上的项目,这对于画布上可拖动的项目来说是一项更大的任务
# 2 楼答案
只能将onClick侦听器和onClick方法添加到视图中。画布和其中的任何东西都不是视图,不可单击。让画布内部有可点击按钮的唯一方法是将整个画布放在一个视图或一个扩展视图的类中,重写onTouch方法,并在该方法中获取触摸的位置,查看它们是否在任何按钮的边界内,以便运行一些代码。以下是一些其他问题的链接
onClickListener in Canvas
及
add touch event listener to android canvas
想得到挖掘机的徽章
# 3 楼答案
OnClick需要有如下格式: