2014-03-30 7 views
1

캔버스에 직사각형을 그리고 TextView와 같은 액티비티에 쉽게 표시 할 수 있습니까? 캔버스를 뷰로 처리하여 직사각형 그리기

내가 이렇게 내 사각형을 그리려고 노력 :

Paint paint = new Paint(); 
paint.setStyle(Paint.Style.FILL); 
paint.setColor(Color.MAGENTA); 
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(b); 

Rect locationrect = new Rect(10, 10, 200, 100); 
c.drawRect(locationrect, paint); 

View locationpic = (View)findViewById(R.id.locationview); 
locationpic.draw(c); 

을 내 XML에서이 분명히 (이 충돌하지 않고 사각형이 표시되지 않습니다) 작동하지 않습니다

<View 
    android:id="@+id/locationview" 
    android:layout_width="520dp" 
    android:layout_height="489dp" 
    android:layout_marginLeft="40dp" 
    android:layout_marginTop="220dp" /> 

.. 어떤 도움을 주시면 감사하겠습니다! 감사합니다.

+0

xml 레이아웃에서보기를 확장하려면 사용자 정의보기를 만들어야합니다. – playmaker420

+0

내 게시물을 편집 했습니까? :) – Diletante

답변

1

자바 파일을 만들고 다음과 같이 작성하십시오.

패키지 com.samplecanvas;

import java.util.ArrayList; 

import android.app.Activity; import android.content.Context; android.graphics.Bitmap; 가져 오기 android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; import android.graphics.RectF; import android.os.Bundle; import android.view.MotionEvent; 가져 오기 android.view.SurfaceHolder; 가져 오기 android.view.SurfaceView; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; 가져 오기 android.widget.FrameLayout;

import android.content.Context; 가져 오기 android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View;

 public class SampleCanvasActivity extends View { 
     vPaint paint = new Paint(); 

      public SampleCanvasActivity(Context context) { 
       super(context); 
      } 

@Override 
public void onDraw(Canvas canvas) { 
    paint.setColor(Color.BLACK); 
    paint.setStrokeWidth(3); 
    canvas.drawRect(130, 130, 180, 180, paint); 
    paint.setStrokeWidth(0); 
    paint.setColor(Color.CYAN); 
    canvas.drawRect(133, 160, 177, 177, paint); 
    paint.setColor(Color.YELLOW); 
    canvas.drawRect(133, 133, 177, 160, paint); 

} 

}

사용 하시다면 XML이 같이

이 파일.

<com.samplecanvas.SampleCanvasActivity 
android:id="@+id/widthView" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_marginLeft="30dp" 
android:layout_marginTop="150dp" 
/> 
+0

나는 이것을 확실히 시도 할 것이다! 하지만 내가하기 전에 내 코드가 작동하지 않는 이유를 설명 할 수 있습니까 (내 게시물을 편집 했습니까?). – Diletante