【问题标题】:How to connect button actions with surfaceview canvas drawables?如何将按钮操作与surfaceview画布drawables连接起来?
【发布时间】:2013-04-17 18:28:41
【问题描述】:

我的问题是我不知道如何在单击时更改可绘制画布的位置 我的按钮位于主要活动中而不是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);


}


}

【问题讨论】:

    标签: android button canvas drawable surfaceview


    【解决方案1】:

    如果我理解正确, 在你的surfaceview类中分别定义两个静态浮点变量x和y,当你在你的surfaceview中绘图时,只需在你的surfaceview的draw方法中使用这个变量作为位置参数。然后在按钮的 onClick 方法中返回活动,只需更改这些 x,y 变量,因为您无需创建对象即可访问它们。

    【讨论】:

    • 嗨,我已经将 x 和 y 变量实现为 static float X =200;静态浮点 Y = 400;看来您的解决方案不适用于我的 onclick 按钮。我已经在我的表面视图上实现了触摸并且工作正常,但我的主要活动上的按钮没有,必须有一种方法来引用我的 x 和 y 变量
    • mainactivity 按钮不起作用的原因是;因为surfaceholder是屏幕的主要焦点,所以它接收所有的用户触摸。您应该在 SurfaceView 或使用 touchlistener 的任何地方自己创建一个按钮实现 :) 例如,假设您在 (30,40) 上有一个宽度和高度为 (100,100) 的按钮,然后在您的触摸方法上编写这样的代码 float x= 30,y=40,宽度=100,高度=100; if(userinput.x>x && userinput.xy && userinput.y
    • 用户输入无法解析为变量错误,请再努力帮助我
    • 确保你使用 touchlistener 获得用户输入,然后 onTouchEvent() 你可以把我上面写的代码让按钮工作。
    【解决方案2】:

    相信你需要给你的按钮添加布局规则才能放到SurfaceView中(其实一个按钮是不能添加到SurfaceView的,你需要在你的Activity中用一个Layout创建一个错觉,然后把按钮放到这个布局)。

    你可以在这个视频https://www.youtube.com/watch?v=8qE9TQjQ5no&t=31s查看这个简单的解决方案

    使用Relativelayout将按钮放置在顶部和底部的SurfaceView。我的观点是使用该技术,您既不需要 ontouchevent 方法,也不需要 x,y 位置,如果您在 ondraw 方法中创建一个按钮(那么不会是按钮而是位图图像),您将需要它......我的意见是如果位置是问题,请坚持第一个解决方案,以便它可以作为 onclicklistener 的按钮。

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      相关资源
      最近更新 更多