0

我在没有 xml 的情况下以编程方式制作的主要活动中有两个按钮。按钮应该在surfaceview上移动位图,我该如何实现?

here is one of the Buttons:

    Button1.setOnClickListener(this);
    }

    public void onClick(View v) {


//I want to access variable x and y of surfaceview


             if (x==230)
            x=x +20;

        invalidate();

    }
4

2 回答 2

1

如果您创建了一个SurfaceView包含 x 和 y 变量的子类,则最佳做法是为这些变量创建 setter 和 getter(我将其称为setPositionX()而不是setX(),因为SurfaceView已经有了该方法):

public class MySurfaceView extends SurfaceView {
    private int x;

    private int y;

    public void setPositionX(int x) {
        this.x = x;
    }

    public void setPositionY(int y) {
        this.y = y;
    }

    public int getPositionX() {
        return x;
    }

    public int getPositionY() {
        return y;
    }
}

在您的活动中:

private MySurfaceView mySurfaceView;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    // Create SurfaceView and assign it to a variable.
    mySurfaceView = new MySurfaceView(this);

    // Do other initialization. Create button listener and other stuff.
    button1.setOnClickListener(this);
}

public void onClick(View v) {
    int x = mySurfaceView.getPositionX();
    int y = mySurfaceView.getPositionY();

    if (x == 230) {
        mySurfaceView.setPositionX(x + 20);
    }

    invalidate();
}
于 2013-06-29T17:10:51.993 回答
0

如果要将值传递回原始活动,则应使用 startActivityForResult。

然后您可以在 onActivityResult 回调中访问它们

于 2013-06-23T14:39:53.547 回答