1

我有一个GridLayout16 个点,它们是ImageViewsShapeDrawables. 如何在不创建新的情况下设置这些颜色ShapeDrawable

这是我的大部分代码:

for (int i = 0; i < dotNumWidth * dotNumWidth; i++) {
        ShapeDrawable redShape = new ShapeDrawable(new OvalShape());
        redShape.getPaint().setColor(Color.RED);
        redShape.setIntrinsicHeight(width / dotNumWidth - dotNumWidth * padding);
        redShape.setIntrinsicWidth(width / dotNumWidth - dotNumWidth * padding);

        // Put Cyan Shape into an ImageView
        ImageView redView = new ImageView(getApplicationContext());
        redView.setImageDrawable(redShape);
        redView.setPadding(padding, padding, padding, padding);

        grid.addView(redView);
    }

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            grid.getChildAt(child).setAlpha(100); // I want to change this line

            child = (new Random()).nextInt(dotNumWidth * dotNumWidth);

            grid.getChildAt(child).setAlpha(0); // and this one

            handler.postDelayed(this, 1000);
        }
    }, 1000);

这是在 中运行的onCreate(),我希望更改上面标记的行以更改视图的颜色而不是 alpha。我知道如果我用新视图替换视图是可能的,但有没有更好的方法来做到这一点?

这是点网格的图片:

在此处输入图像描述

4

0 回答 0