2017-01-04 5 views
0

나는 PaintCanvas을 사용하고 싶습니다. publishProgress을 사용할 때 기본적으로 무언가를 페인트합니다.백그라운드에서 Android Studio의 그림판

내 코드에 무엇이 잘못되었으며 무엇이 그림에 그려져 있지 않은지 알려주는 것이 좋을 것입니다.

참고. 이 모두가 AsyncTaskActivity 클래스

@Override 
    protected void doInBackground(Void... params) { 

      publishProgress(); // Run onProgressUpdate() method 
     } 

    } 

@Override 
    protected void onProgressUpdate(Void... params) { 
     // Here you can access the UI thread 
     Canvas canvas = new Canvas(); 
     Paint pa1= new Paint(); 
     pa1.setColor(Color.RED); 
     pa1.setStyle(Paint.Style.FILL); 
     pa1.setStrokeWidth(50); 

     canvas.drawLine(0, 0, 100, 100, pa1); 
    } 
+1

캔버스가 화면의 어떤 것과도 연결되어 있지 않습니다. 'onProgressUpdate'가 진행 상황을 표시하는 데 사용할 수있는 사용자 정의보기를 만들고 싶을 것입니다. –

+0

자, 이제'extends view'로 새로운 클래스를 만들고'onProgressUpdate()'에서'ondraw()'를 호출하려고합니다. 그거야? – difegui

+1

뷰가 뷰 계층 구조의 일부 여야하거나 여전히 화면에 나타나지 않습니다. 따라서 새로운 뷰를 만들고 싶지 않습니다. 활동의 레이아웃에서보기를 정의한 다음보기를 찾아야합니다. 뷰의'onDraw' 메쏘드에 실제 드로잉을 넣어 [@Vova suggests] (http://stackoverflow.com/a/41469887/535871). –

답변

2

새로운 캔버스 인스턴스에 그리기 때문에 귀하의 코드가 그려하지 않습니다이다. 화면에 그림을 그리려면 사용자 지정보기를 만들고 onDraw 메서드를 재정의해야합니다. 이 방법에는 캔버스가 있습니다. 그려 보아라.

https://developer.android.com/training/custom-views/custom-drawing.html

2

캔버스 비트 맵 또는 도면 중 그릴 필요가있다. 비트 맵에 그리려면 비어있는 비트 맵을 만든 다음 생성자의 Canvas로 전달할 수 있습니다. 뷰에 그리려면 사용자 정의 뷰를 만들고 Canvas에 전달 될 onDraw 함수를 재정의합니다.

일부보기가 비트 맵을 자체 캔버스로 그려야 만 비트 맵 그리기가 실제로 화면에 표시되지 않습니다.