我正在尝试使用foreach循环为ArrayList中的每个字符串绘制一个矩形,但它似乎只绘制了最后一个矩形。

我看过类似的问题,但他们遇到的问题包括矩形底部高于顶部并调用drawPaint - 但我没有这些问题。

MainActivity.java

public class MainActivity extends AppCompatActivity {

ArrayList ideas = new ArrayList<>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// set the icon

ActionBar actionBar = getSupportActionBar();

assert actionBar != null;

actionBar.setDisplayShowHomeEnabled(true);

actionBar.setIcon(R.drawable.actionbarfull);

//Use API in future to GET all ideas

ideas.add("Idea 1");

ideas.add("Idea 2");

ideas.add("Idea 3");

setContentView(new IdeaRectangle(this, ideas));

}

}

IdeaRectangle.java

public class IdeaRectangle extends View {

Rect rectangle = new Rect();

Paint mBlue = new Paint();

Paint textPaint = new Paint();

ArrayList ideasToDraw = new ArrayList<>();

int gap = 50;

int sidegap = 30;

int right = 0;

int height = 250;

int top = 0;

int bottom = 0;

int counter = 0;

public IdeaRectangle(Context context) {

super(context);

}

public IdeaRectangle(Context context, ArrayList ideas) {

super(context);

ideasToDraw = ideas;

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

// Setting colour of rectangle and text

mBlue.setARGB(255, 0, 183, 255);

textPaint.setTextSize(50);

textPaint.setARGB(255, 0, 0, 0);

ArrayList rectangles = drawIdea(canvas, ideasToDraw);

for (Rect rectangle : rectangles) {

// Draw rectangle

canvas.drawRect(rectangle, mBlue);

canvas.drawText("This is an idea. There were " + rectangles.size() + " rectangles.", rectangle.left, rectangle.centerY(), textPaint);

}

}

private ArrayList drawIdea(Canvas canvas, ArrayList ideas) {

ArrayList rectangles = new ArrayList<>();

right = canvas.getWidth() - sidegap;

for (String idea : ideas) {

// Setting location of rectangle

top = gap + (counter * (gap + height));

bottom = top + height;

counter++;

System.out.println(sidegap + "," + top + "," + right + "," + bottom);

rectangle.set(sidegap, top, right, bottom);

rectangles.add(rectangle);

}

return rectangles;

}

打印出矩形尺寸的控制台日志打印出来:

04-23 12:47:44.920 11005-11005/? I/System.out: 30,50,1050,300

04-23 12:47:44.920 11005-11005/? I/System.out: 30,350,1050,600

04-23 12:47:44.920 11005-11005/? I/System.out: 30,650,1050,900

android canvas drawrect画图,为什么在android中调用canvas.drawRect时只绘制一个矩形?相关推荐

  1. 在canvas(画布)上绘制一个矩形盒子并使用按键移动这个盒子

    思路 1.在画布上创建一个2d画笔,并用这个画笔在画布上绘制一个矩形. 2.设置一个边界判断使这个盒子不能移出画布之外,只能在画布中移动. 注意: 不能直接在style中设置canvas的大小 直接设 ...

  2. C#中调用Windows API时的数据类型对应关系

    C#中调用Windows API时的数据类型对应关系 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE ...

  3. 『飞秋』在.NET 4中调用GDAL库时遇到的问题及解决方法

    『飞秋』在.NET 4中调用GDAL库时遇到的问题及解决方法 最近需要在.NET 4的环境中调用GDAL库.GDAL本身是一套非托管类库,不过还好提供了用SWIG做的托管的Wrapper. 可以在FW ...

  4. html页面画一个矩形,使用HTML5 canvas绘制一个矩形的方法

    使用HTML5 canvas绘制一个矩形的方法 发布时间:2020-08-29 11:23:12 来源:亿速云 阅读:102 作者:小新 这篇文章将为大家详细讲解有关使用HTML5 canvas绘制一 ...

  5. ppt图片在word中不能正常显示,只显示为矩形框的解决方法

    ppt图片在word中不能正常显示,只显示为矩形框的解决方法 参考文章: (1)ppt图片在word中不能正常显示,只显示为矩形框的解决方法 (2)https://www.cnblogs.com/ga ...

  6. ndk c调用java_使用NDK将Android转换为C,然后在C中调用Java函数

    因此,我正在重新创建Palm Pilot程序以在Android中运行.我必须继续使用C编写的库,但我正在重写应用程序的UI组件和蓝牙组件以在Android中运行.要在蓝牙连接的另一端初始化设备,我从C ...

  7. 如何在MDI中相同的子窗体只保留一个实例

    为什么80%的码农都做不了架构师?>>>    阅读: 107 评论: 1 作者: blackcore 发表于 2009-11-16 14:24 原文链接 很明显,在一个MDI窗体中 ...

  8. 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)

    之前在将 Memcached 客户端 EnyimMemcached 迁移 .NET Core 时被这个"坑"坑的刻骨铭心(详见以下链接),当时以为只是在构造函数中调用异步方法(注: ...

  9. Java中调用FTP服务时inputStream获取一直为null

    问题描述:Java调用FTP服务时,已成功登录到了FTP服务中,文件路径中无中文字符,当根据文件路径获取 输入流inputStream时,inputStream一直为null BufferedRead ...

最新文章

  1. 短信接口在本地调试正常_Pivotal实践:腾讯云短信小应用
  2. 读书记:asp.net2.0电子商务开发实战
  3. php mysql 双条件排序,PHP-MySQL联合查询,按2个变量排序
  4. mysql怎样dao出数据库_mysql怎么导出数据库?
  5. Web前端笔记(10)Grid布局
  6. 记录——《C Primer Plus (第五版)》第七章编程练习第八题
  7. Elasticsearch 不属于 Elastic
  8. 为什么Linux CFS调度器没有带来惊艳的碾压效果? | CSDN博文精选
  9. 利用HTML5开发Android笔记(中篇)
  10. HDU6383 p1m2
  11. InstallShield教程-打包.NET程序
  12. linux svn 查看忽略文件,linux下SVN忽略文件/文件夹的方法
  13. android 禁止获得焦点,防止EditText自动获取焦点
  14. 有趣的游戏-猜黑白纸
  15. 不讲周期长短不足以谈牛熊
  16. 域账户登录本地计算机用户名,如何实现域账户domain/user登陆时自动添加到本地计算机poweruser用户组...
  17. 前端开发通过图片编码实现拍照身份证正反面上传功能
  18. AttributeError: module ‘tensorflow_core.compat.v1‘ has no attribute ‘contrib‘
  19. 狼人杀暂时未连接到语音服务器,狼人杀连接服务器失败 连接不上网络怎么办...
  20. 《剑侠情缘网络版》开发回顾

热门文章

  1. sql 中 FROM_UNIXTIME 使用方法
  2. switch(String)语法糖解析
  3. 偏度和峰度描述什么_什么是偏度和峰度
  4. [转]亿级Web系统搭建——单机到分布式集群
  5. 数字图像处理(九)双边滤波
  6. Cesium雷达效果
  7. 洛谷P1011 车站
  8. 【React】1课 react框架小白入门使用教程
  9. html中纵向分块的代码,html标签 —— 块级元素
  10. vps远程桌面linux,vps一键安装桌面及远程桌面