java - 使用循环绘制多个形状 - Android Canvas

标签 java android graphics

我对android开发非常陌生,一直在尝试绘制一个由多个不同颜色的较小矩形组成的正方形......本质上就像马赛克一样。

现在基本上我正在从文件中读取值,该文件将颜色分配给较小的矩形。我正在使用一对嵌套的 for 循环来尝试按顺序逐行绘制小矩形。然而,当程序完成时,只绘制了一个小矩形,它是最后一个绘制的矩形,其颜色对应于从文件中读取的第一个值。

这是我的一些代码,向您展示我的意思:

public SnapshotDraw(Context context) {
    super(context);

    for(int a = 0; a < 63; a++){
        for(int b = 0; b < 63; b++){
            fileName = PREFIX + "2" + EXTENSION;

            try {
                bf = new BufferedReader(new FileReader(fileName));
                tokens = new StringTokenizer(bf.readLine(), " \n");
                weight = Byte.parseByte(tokens.nextToken());

                x_scalar = b*MAG;
                y_scalar = a*MAG;   

                mDrawable = new ShapeDrawable(new RectShape());
                mDrawable.getPaint().setColor(colour.getColour(weight));
                mDrawable.setBounds((X_OFFSET + x_scalar), (Y_OFFSET + y_scalar), ((MAG + X_OFFSET) + x_scalar), ((MAG + Y_OFFSET) + y_scalar));

            } catch (FileNotFoundException ex) {
                Logger.getLogger(NetworkUtilities.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(NetworkUtilities.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}

protected void onDraw(Canvas canvas) {
    mDrawable.draw(canvas);
}

此异常(exception)来自扩展 View 的类,并在 Activity 的 onCreate() 方法内调用。

我将不胜感激任何指导,并提前致谢!!

干杯。

最佳答案

您正在循环内构造 BufferedReader,因此 bf.readLine() 将始终返回同一行。尝试将 bftokens(请注意,不鼓励使用 StringTokenizer)移出循环。

关于java - 使用循环绘制多个形状 - Android Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430824/

相关文章:

java - Ambari-metrics-collector 服务未启动

java - LibGDX 简单的二维 block 图渲染

java - 需要 android 计时器秒数重置为 60

android - 在 Android TextView 中显示进度

jvm - java语法问题

java - 来自 Java API 的 Drools 规则语言

r - 图形未出现在 R : null device? 中

java - 更新 JFrame 中的 JLabel

java - Spring:覆盖父bean

java - 无法从 Mysql 列出我的 Android 应用程序中的数据