Android 如何将按钮操作与surfaceview画布绘图功能连接起来?
我的问题是,我不知道如何改变画布的位置可绘制点击 我的按钮,它位于主活动中,而不是surfaceview,所以工作的代码应该在surfaceview上,这就是我得到的Android 如何将按钮操作与surfaceview画布绘图功能连接起来?,android,button,canvas,drawable,surfaceview,Android,Button,Canvas,Drawable,Surfaceview,我的问题是,我不知道如何改变画布的位置可绘制点击 我的按钮,它位于主活动中,而不是surfaceview,所以工作的代码应该在surfaceview上,这就是我得到的 public class JumpOnClick extends Activity implements OnClickListener{ DrawingSurface ds; FrameLayout frm; Button btnC; int color=0xfff00000; @Override public voi
public class JumpOnClick extends Activity implements OnClickListener{
DrawingSurface ds;
FrameLayout frm;
Button btnC;
int color=0xfff00000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ds=new DrawingSurface(this);
setContentView(R.layout.activity_jump_on_click);
frm=(FrameLayout)findViewById(R.id.frameLayout);
frm.addView(ds);
btnC=(Button)findViewById(R.id.buttonColor);
btnC.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// how to connect actions in here for my sprites on my surfaceview
// for example AnimatedSprite a = new AnimatedSprite();
// if(b == null)
//b=BitmapFactory.decodeStream(res.openRawResource(R.drawable.explosion));
// a.Initialize(b, 120, 159, 7, 20, true);
// mSprites.add(a);
}
}
如果我理解正确的话,
在surfaceview类中分别定义两个静态浮点变量x和y,在surfaceview中绘制图形时,只需将这些变量用作surfaceview的draw方法中的位置参数。然后在按钮的onClick方法中返回活动,只需更改这些x,y变量,因为您无需创建对象即可访问它们。我认为您需要向按钮添加布局规则,以将其放置在Surfaceview中(实际上,不能将按钮添加到SurfaceView,您需要在活动中创建带有布局的幻觉,并将按钮放置在此布局中) 您可以在本视频中查看此简单解决方案
也就是说,使用Relativelayout将按钮放置在表面视图的顶部和底部。我的意见是,使用该技术,您将不需要ontouchevent方法,也不需要x、y位置,如果您使用ondraw方法创建按钮,您将需要它(然后将不是按钮,而是位图图像)…如果位置有问题,我的意见是坚持第一种解决方案,这样它就可以充当onclick Listener的按钮。您好,我已经将x和y变量实现为静态浮点x=200;静态浮点y=400;您的解决方案似乎对我的onclick按钮不起作用。我已经在我的surfaceview上实现了触摸,效果很好,但是“我的主要活动”上的按钮不起作用,必须有一种方法来引用我的x和y变量。您的“主要活动”按钮不起作用的原因是;因为surfaceholder是屏幕的主要焦点,所以它接收所有用户触摸。您应该自己在SurfaceView或使用touchlistener的任何地方创建按钮实现:)例如,假设您在(30,40)上有一个宽度和高度为(100100)的按钮,然后在您的触控方法上写一个类似以下的代码:float x=30,y=40,width=100,height=100;如果(userinput.x>x&&userinput.xy&&userinput.yuserinput)无法解析为变量错误,请再次尝试帮助memake确保使用touchlistener获得用户输入,然后onTouchEvent()您可以使用我上面编写的代码使按钮正常工作。