Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 优化渲染画布_Java_Android_Canvas_Drawing - Fatal编程技术网

Java 优化渲染画布

Java 优化渲染画布,java,android,canvas,drawing,Java,Android,Canvas,Drawing,我努力解决代码(渲染)优化的问题。 我在屏幕上有650个六边形,我需要将它们一起移动并自由缩放。 据我所知,我有2d地图,它存储六边形对象,其中包含一些参数,如顶点、中心点等。 我的onDraw方法如下所示: @Override public void onDraw(final Canvas canvas) { if(hexMap == null || hexMap.length <= 0) { populateHexMap();

我努力解决代码(渲染)优化的问题。 我在屏幕上有650个六边形,我需要将它们一起移动并自由缩放。 据我所知,我有2d地图,它存储六边形对象,其中包含一些参数,如顶点、中心点等。 我的onDraw方法如下所示:

 @Override
    public void onDraw(final Canvas canvas) {
        if(hexMap == null || hexMap.length <= 0) {
            populateHexMap();
        }
        if(radiusChanged) {
            changeRadius();
        }
        for(int i = 0; i < hexMap.length; i++) {
            for(int j = 0; j < hexMap[i].length; j++) {
                if(hexMap[i][j] != null && hexMap[i][j].isToDraw()) {
                    paint.setColor(hexMap[i][j].getColor());
                    drawPath.rewind();
                    drawPath.moveTo(hexMap[i][j].getPoint(0).x, hexMap[i][j].getPoint(0).y);
                    drawPath.lineTo(hexMap[i][j].getPoint(1).x, hexMap[i][j].getPoint(1).y);
                    drawPath.lineTo(hexMap[i][j].getPoint(2).x, hexMap[i][j].getPoint(2).y);
                    drawPath.lineTo(hexMap[i][j].getPoint(3).x, hexMap[i][j].getPoint(3).y);
                    drawPath.lineTo(hexMap[i][j].getPoint(4).x, hexMap[i][j].getPoint(4).y);
                    drawPath.lineTo(hexMap[i][j].getPoint(5).x, hexMap[i][j].getPoint(5).y);
                    drawPath.lineTo(hexMap[i][j].getPoint(0).x, hexMap[i][j].getPoint(0).y);
                    canvas.drawPath(drawPath, paint);

                }
            }
        }
    }
@覆盖
公共空白onDraw(最终画布){

如果(hexMap==null | | hexMap.length drswLines应该比一次又一次地创建路径快是的,我尝试过绘制线,虽然速度更快,但仍然不够快。绘制线的另一个问题是,我需要用颜色填充我的十六进制,但我不知道如何实现。将“绘制样式”设置为“填充”不起作用。