我有一种方法可以创建一个由小小的彩色方块组成的大网格,我注意到这会对CPU使用率产生很大影响。
请注意,此方法只调用一次,问题仍然存在,即使方法完成也不会结束。如果未执行此方法,则cpu使用率仍然很低。
// regionLayout is a vertical LinearLayout
// gridHorizontalSize and gridVerticalSize determines the size of the grid
regionLayout.removeAllViews();
regionLayout.setWeightSum(gridVerticalSize);
ImageView cell = null;
LinearLayout row;
int color;
for(int i=0; i<gridVerticalSize; i++) {
row = new LinearLayout(context);
row.setWeightSum(gridHorizontalSize);
regionLayout.addView(row, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1f));
for(int j=0; j<gridHorizontalSize; j++) {
cell = new ImageView(context);
color = /* color is chosen somehow */
cell.setBackgroundColor(color);
row.addView(cell, new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1f));
}
}
我使用了两个LinearLayout制作网格,因为我不熟悉GridLayout,并且不知道如何为水平和垂直尺寸设置weightSum。 我没有特别使用ImageViews,我只需要一些可以设置颜色的东西。
网格通常是30x30左右,因此可以制作900个小彩色方块,我知道它很多,但是没有办法解决它,我需要在屏幕上同时拥有900个时间。
我可以改变哪些方面有所改进?感谢。
答案 0 :(得分:0)
您应该使用自定义视图,而不是嵌套的线性布局。您在一个屏幕上创建了900个视图对象。这是一个巨大的性能影响。
我有一个网格板视图,我为一个你可以查看参考的项目 https://github.com/shmuelr/ConwaysGame/blob/master/app/src/main/java/com/shmuelrosansky/conwaysgame/views/Board.java