2017-02-15 12 views
0

나는 4 줄을 그리는 ImageView을 가지고 있습니다. 이제 사용자가 이미지 위에 그림을 그릴 수있게하려고합니다. 어떻게이 일을 성취 할 수 있습니까?어떻게 이미지 뷰 위에 페인트합니까?

다른 솔루션에서 다른보기 (사용자 지정보기)를 추가해야한다는 것을 알았습니다.이 솔루션은이 시나리오에 적합하지 않습니다.

Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager() 
    .getDefaultDisplay().getWidth(), (int) getWindowManager() 
    .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(bitmap); 
drawingImageView.setImageBitmap(bitmap); 
DisplayMetrics metrics = this.getResources().getDisplayMetrics(); 
int x = metrics.widthPixels; 
int y = metrics.heightPixels; 
Paint paint1 = new Paint() ; 
paint1.setStrokeWidth(10); 
int margin = 100; 
int margin1 = 300; 
int top = 0 + margin; 
int bottom = canvas.getHeight() - margin; 
int left = 0 + margin1; 
int right = canvas.getWidth() - margin1; 
int centerX = x/2; 
int centerY = y/2; 

canvas.drawLine(centerX, top, centerX, bottom,paint1); 

canvas.drawLine(left, centerY, right, centerY,paint1); 

내 레이아웃 XML : Appium의 FingerPaint.java에서

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.amgsoft_pc.flowermenu.MainActivity"> 


    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/button1" 
     android:visibility="invisible" /> 

    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignParentStart="true" 

     android:id="@+id/button2" 
     android:visibility="invisible" /> 

    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/button2" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/button3" 
     android:visibility="invisible" /> 

    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignStart="@+id/button1" 
     android:id="@+id/button4" 
     android:visibility="invisible" /> 
    <Button 
     android:layout_width="25dp" 
     android:layout_height="25dp" 
     android:background="@drawable/round_button" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/circle" /> 
    <ImageView 
     android:id="@+id/DrawingImageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:visibility="invisible"/> 
    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/button1" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="49dp" 
     android:id="@+id/button5" 
     android:visibility="invisible" /> 

    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/button5" 
     android:layout_alignStart="@+id/button3" 
     android:id="@+id/button6" 
     android:visibility="invisible" /> 

    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/button4" 
     android:layout_alignParentStart="true" 
     android:layout_marginBottom="58dp" 
     android:id="@+id/button7" 
     android:visibility="invisible" /> 

    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/button7" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/button8" 
     android:visibility="invisible" /> 

</RelativeLayout> 
+0

그리고 당신은 질문? –

+0

@ToddSewell 어떻게 이미지 뷰를 그릴 수 있습니까? – CamlX

+0

그리고 현재 코드는 무엇을 대신합니까? –

답변

0

을 촬영 태그 :

public class CanvasView extends View { 
    public int widht; 
    public int height; 
    private Bitmap mbitmap; 
    private Canvas mcanvas; 
    private Path path; 
    private Paint paint; 
    private float mX, mY; 
    Context context; 
    private static final float Tolerance = 5; 

    public CanvasView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.context = context; 
     path = new Path(); 
     paint = new Paint(); 
     paint.setColor(Color.BLACK); 
     paint.setAntiAlias(true); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setStrokeJoin(Paint.Join.ROUND); 
     paint.setStrokeWidth(4f); 
    } 

    @Override 
    protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
     super.onSizeChanged(w, h, oldw, oldh); 
     mbitmap = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888); 
     mcanvas = new Canvas(mbitmap); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.drawPath(path,paint); 
    } 

    private void startTouch (float x , float y){ 
    path.moveTo(x,y); 
     mX = x; 
     mY = y ; 
    } 
    public void moveTouche (float x,float y) { 
     float dx = Math.abs(x - mX); 
     float dy = Math.abs(y - mY); 
     if(dx >= Tolerance || dy >= Tolerance){ 
      path.quadTo(mX,mY,(x+mX)/2,(y+mY)/2); 
      mX = x ; 
      mY = y; 

     } 
    } 
    private void upTouch(){ 
     path.lineTo(mX,mY); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     float x = event.getX(); 
     float y = event.getY(); 
     switch (event.getAction()){ 
      case MotionEvent.ACTION_DOWN: 
       startTouch(x,y); 
       invalidate(); 
       break ; 
      case MotionEvent.ACTION_UP: 
       upTouch(); 
       invalidate(); 
       break ; 
      case MotionEvent.ACTION_MOVE: 
       moveTouche(x,y); 
       invalidate(); 
       break ; 

     } 
     return true ; 
    } 
} 

XML

<com.example.amgsoft_pc.flowermenu.CanvasView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/canvas" 
    android:layout_centerHorizontal="true" 
    android:layout_alignParentTop="true"/> 
+0

[FingerPaint.java] (https://github.com/appium/android-apidemos/blob/master/src/io/appium/android/apis/graphics/FingerPaint.java)에서 코드를 가져 왔습니까? 항상 기여하십시오. – Sufian