마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

색칠, 또는 표시하는 앱을 만드려고합니다!

0 추천

layout을 이용하여 이미지뷰를 띄었습니다.

이미지뷰 안에 drawable을 이용 밑그림 사진을 넣어놓았습니다.

--->layout activity_main.xml 파일

 

액티비티에 layout화면을 띄우고, 그 위에 밑그림 사진 크기와 맞는 canvas를 띄워서

(1) 밑그림 사진에서 어떤 곳을 터치하면 터치한 곳에 동그라미가 그려지게 하고싶습니다.

또는 (2) 밑그림 사진에서 터치하면 터치한 영역을 빨간색으로 색칠하고 싶습니다.

onCreate에서 setContentView(R.id.activity_main)

onDraw함수를 만들어 Canvas 생성하고 그 위에 그림을 그릴 수 있게 표시하고싶었는데

하다가 잘 안되서 일단 이미지 위에 빨간 동그라미를 나타내자 라는 생각으로 코딩을 하였습니다.

빌드에 에러는 없고, 애뮬레이터를 통해서 구동하면 화면이 잘 나옵니다.

거기까지 되고 onDraw는 아예 보이지가 않습니다.

한번 보시고 어떤 부분이 잘못되서 onDraw가 안 먹히는지 봐주세요.

 

[activity_main.xml]

<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android

xmlns:tools=http://schemas.android.com/tools

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.example.testcanvas.MainActivity">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content">

<ImageView

android:id="@+id/ImageView1"

android:layout_width="match_parent"

android:layout_height="350sp"

android:background="@drawable/image1" />

</LinearLayout>

~~사이에 LinearLayout으로 버튼 두개 존재(앞 뒤 액티비티를 오가는 버튼코딩(ex) 이전, 다음)

</LinearLayout>

 

[res/drawable]

image1.png 파일 존재

 

[MainActivity.java]

package com.example.testcanvas;

import~~; 필요한 것들

public class MainActivity extends Activity{

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

protected void onDraw(Canvas canvas){

Bitmap newImage=Bitmap.createBitmap(200,200,Bitmap.Config.ARGB_8888);

Canvas c=new Canvas(newImage);

c.drawCircle(100,100,40,new Paint());

canvas.drawBitmap(newImage,10,10,new Paint());

}

}

 

 

 

도와쥬세요ㅠ 님이 2017년 1월 18일 질문

1개의 답변

0 추천

실컷 그려놓고 화면에 뿌려주질 않았네요

이미지뷰도 안가져왔으니 가져와서  onDraw에서 처리완료된 비트맵을 이미지뷰에 적용시켜보세요

onDraw에서 테스트로 아래코드 추가하고 한번 해보세요

ImageView iv = (ImageView)findViewById(R.id.ImageView1);

iv.setImageBitmap(newImage);

라쎄린드 (25,460 포인트) 님이 2017년 1월 18일 답변
아래코드 추가해도 화면은 그대로네요ㅠ.ㅠ....
setContentView(R.layout.activity_main);
요부분이 문제인건가요... 커스텀뷰를 만들어서 진행해야하나요ㅠㅠ...?
...