6

我正在教几位同事 Java,目的是进入 Android 游戏编程。有没有办法在屏幕上显示一个框,当你触摸它时它会改变颜色,而无需创建 Activity(这是在 Eclipse 中)并潜入丑陋的 XML 世界?

4

3 回答 3

3

这是根据您的要求以编程方式在 Android 中创建 UI 的示例

public class MyActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Button changeColor = new Button(this);
        changeColor.setText("Color");
        changeColor.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));

        changeColor.setOnClickListener(new View.OnClickListener() {
            int[] colors = {Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW};
            @Override
            public void onClick(View view) {
                final Random random = new Random();
                view.setBackgroundColor(colors[random.nextInt(colors.length - 1) + 1]);
            }
        });
        setContentView(changeColor);
    }

但是,我强烈建议您在布局中使用 XML。一旦您理解了 XML,使用它就会变得更加容易和快捷,所以这里有一个教程供您使用。

于 2012-07-29T03:56:08.720 回答
2

您可以通过编程方式创建小部件并将它们添加到您在 onCreate 中设置为内容视图的布局。类似这样的东西会起作用:

RelativeLayout layout = new RelativeLayout(this);
Button btnChangeColour = new Button(this);
btnChangeColour.setText("Change Colour");
btnChangeColour.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        v.setBackgroundColor(...);
    }
});
layout.addView(btnChangeColour);
setContentView(layout);
于 2012-07-29T03:08:15.520 回答
2

我听到你在说什么,是的——虽然我同意当你只想在 android 中编写游戏时 XML 很无聊——我可以说 XML 是 android 的一个必要的邪恶。至少将 ViewStubs 放在 XML 中,然后在代码中扩充它们。

或者,如果您希望它们的格式正确,请习惯于调用许多“新的 LayoutParams”调用。

但是,如果您希望它在 Android 上运行,您的课程确实需要覆盖 Activity。

于 2012-07-29T03:56:51.810 回答