我想在Android上的画布上有一个按钮,可以弹出一个图像,再次点击图像就会消失。
public class Charts extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new Draw(this));
}
}
private class Draw extends View {
public Draw(Context context) {
super(context);
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
}
上面的代码就是我的代码的开头,之后我使用了一些像涂料这样的小基本工具,如上所示,我已经扩展了视图...我不知道如何放置按钮
答案 0 :(得分:2)
我不知道这是否可行,但我看到两个选项:
您可以在画布上绘制一个按钮,这基本上是Bitmap
图像,然后单击检查以查看指针坐标是否位于位图区域坐标内。
或者,将Canvas
放入RelativeLayout
并添加一个Button控件。由于您位于RelativeLayout
,Button
将显示在Canvas
上。
答案 1 :(得分:1)
Canvas不是View,SurfaceView是一个视图。 您可以将Button(或任何其他视图)放在ViewGroup中。 LinearLayout,RelativeLayout等所有布局都是包含一个或多个View子级的ViewGroup。
我相信你想把一个Button放在SurfaceView中。 你不能在SurfaceView中放置一个按钮,但是你可以做的是设计你的UI,使它在布局中有一个SurfaceView,并且在它附近有一个你想要点击的按钮。
编辑: @Andy Res在2)中建议的可能就是你要找的东西。将SurfaceView放在RelativeLayout中并使用相同布局的按钮。 或者您可以使用FrameLayout并在其中包含SurfaceView和Button。
答案 2 :(得分:0)
我这样做的方法是使用.png图形,然后使用
将其绘制到画布上 canvas.drawbitmap(image, rect1, rect2, paint);
其中image是.png rect1是屏幕上按钮的目标位置 rect2是我想要使用的按钮的一部分 和油漆对象
然后在
@Overide
onTouchEvent(MotionEvent event) {}
我输入代码来检测是否在rect1边界内检测到一个Motion Event Up(其中包含它在屏幕上的目标位置
然后我会打电话给我创建的像
Button1Clicked();
这是我将处理点击的地方。
答案 3 :(得分:0)
我也有类似的要求,并以老式的方式解决了它
答案 4 :(得分:-1)
这就是我的工作方式(对我有用):
我希望这能让你更好地了解如何做到这一点。
<强>更新强>
private class Draw extends View implements OnTouchListener {
Rect button = new Rect(); // Define the dimensions of the button here
boolean buttonClicked;
public Draw(Context context) {
super(context);
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (buttonClicked == true) {
canvas.drawBitmap(source, null, button, null);
// Source will be a that of a clicked button bitmap
} else {
canvas.drawBitmap(source, null, button, null);
// Source will be a that of a non clicked button bitmap
}
}
@Override
public boolean onTouch(View view, MotionEvent event) {
if (button.contains(event.getX(), event.getY())) {
buttonClicked = true;
} else {
buttonClicked = false;
}
return true;
}
}
PS:当代码不起作用时不要吓坏,我还没有测试过。不确定如何渲染视图,我建议您移动SurfaceView并创建渲染线程,这是一个教程:http://www.edu4java.com/androidgame.html