Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将按钮操作与surfaceview画布绘图功能连接起来?_Android_Button_Canvas_Drawable_Surfaceview - Fatal编程技术网

Android 如何将按钮操作与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

我的问题是,我不知道如何改变画布的位置可绘制点击 我的按钮,它位于主活动中,而不是surfaceview,所以工作的代码应该在surfaceview上,这就是我得到的

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()您可以使用我上面编写的代码使按钮正常工作。