我对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() 将始终返回同一行。尝试将 bf
和 tokens
(请注意,不鼓励使用 StringTokenizer)移出循环。
关于java - 使用循环绘制多个形状 - Android Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430824/