>source

캔버스를 사용하여 View에 그래프를 그리려고 합니다. 지금까지는 다음 이미지와 같이 올바르게 플롯됩니다.

여기에 이미지 설명 입력

private List<Float> xPosList, yPosList;
    private List<Path> pathList;
    private Path path;
    private Paint paint;
    private final Paint clearPaint= new Paint();
    public Plotter(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        this.xPosList= new ArrayList<>();
        this.yPosList= new ArrayList<>();
        this.pathList= new ArrayList<>();
        this.paint= new Paint();
        this.paint.setStrokeWidth(20);
        this.paint.setColor(Color.GREEN);
        this.clearPaint.setColor(Color.BLACK);
        generateData();
    }
    private void generateData() {
        int min= 5;
        int max= 100;
        double random= 0;
        float xPos= 0;
        float yPos= 0;
        for (int i= 1; i <= 20; i++) {
            random= min + Math.random() * (max -min);
            xPos= 50 * i;                   //50 pixels
            yPos= (float)random;
            this.xPosList.add(xPos);
            this.yPosList.add(yPos);
            path= new Path();         //Create path
            path.moveTo(xPos, yPos);   //Add values to path
            this.pathList.add(path);   //Add path to pathList
        }
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                generateData();
                break;
            case MotionEvent.ACTION_UP:
                //invalidate();
                break;
        }
        //invalidate();                               //Refresh canvas
        return true;                                //Activate event
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint p= new Paint();
        canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
        p.setColor(Color.GREEN);
        p.setStrokeWidth(10);
        p.setStyle(Paint.Style.FILL);
        /***
         * Better use 50 by 50 pixels
         */
        float startX= 0;
        float startY= canvas.getHeight();                            //Start at the bottom (max height)
        float nextX= 0;
        float nextY= 0;
        for (int i= 0; i < this.xPosList.size(); i++){
            nextX= this.xPosList.get(i);
            nextY= canvas.getHeight() -(this.yPosList.get(i) * 10);                    //Add 50 offset
            canvas.drawLine(startX, startY, nextX, nextY, p);
            startX= nextX;
            startY= nextY;
        }
    }
}

화면을 제대로 지우려면 어떻게 해야 하나요?

나는 시도했다

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

다른 질문에서 보았지만 작동하지 않습니다.

  • 이전 java : 승급 진행 로직
  • 다음 Java에서 하위 디렉토리의 이름을 바꾸는 방법은 무엇입니까?