如何制作一个按钮做多件事?

时间:2017-02-02 20:59:33

标签: android

我有一个关于android开发的问题。我正在尝试制作一个应用程序,将屏幕颜色从红色变为蓝色,然后变为绿色。我已将onClickListener赋予relativeLayout,将屏幕从白色变为红色。我如何使同样的onClickListener按顺序执行多项操作,这样当我点击屏幕后将其变为红色,当我再次单击它时,它会将屏幕变为蓝色等。

到目前为止,这是我的代码:

final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view);

    layout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            layout.setBackgroundColor(Color.parseColor("#ff0000"));
        }
    });

2 个答案:

答案 0 :(得分:2)

将所需颜色的列表存储在数组中。每次点击后跟踪当前颜色索引和增量,如下所示:

final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view);

layout.setOnClickListener(new View.OnClickListener() {
    String[] colors = new String[]{"#ff0000", "#00ff00", "#0000ff"};
    int colorIndex = 0;

    @Override
    public void onClick(View view) {
        String color = colors[colorIndex];
        colorIndex = colorIndex++ % colors.length;
        layout.setBackgroundColor(Color.parseColor(color));
    }
});

模运算符(%)确保我们不会在数组末尾进行索引。

答案 1 :(得分:1)

跟踪您的点击状态。喜欢这个

private int colorState =0;

    final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view);

        layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
    switch(colorState){
        case 0:
          layout.setBackgroundColor(Color.parseColor("#ff0000"));
            break;
        case 1:
          layout.setBackgroundColor(Color.parseColor("#000000"));
            break;
        case 2:
          layout.setBackgroundColor(Color.parseColor("#FFFFFF"));
            break;

        colorState++;
    }