안드로이드 개발 질문/답변
(글 수 45,052)
public class activity2 extends Activity {
View page1, page2, page3;
Button btn1,btn2,btn3;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout2);
LinearLayout linear = (LinearLayout)findViewById(R.id.paint);
MyView myview = new MyView(this);
linear.addView(myview);
btn1 = (Button)findViewById(R.id.memoBtn);
btn2 = (Button)findViewById(R.id.diaryBtn);
btn3 = (Button)findViewById(R.id.scheduleBtn);
btn1.setOnClickListener(mClickListener);
btn2.setOnClickListener(mClickListener);
btn3.setOnClickListener(mClickListener);
// TODO Auto-generated method stub
page1 = findViewById(R.id.page1);
page2 = findViewById(R.id.page2);
page3 = findViewById(R.id.page3);
page1.setVisibility(View.VISIBLE);
page2.setVisibility(View.INVISIBLE);
page3.setVisibility(View.INVISIBLE);
}
Button.OnClickListener mClickListener = new Button.OnClickListener()
{
public void onClick(View v) {
page1.setVisibility(View.INVISIBLE);
page2.setVisibility(View.INVISIBLE);
page3.setVisibility(View.INVISIBLE);
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.memoBtn:
page1.setVisibility(View.VISIBLE);
break;
case R.id.diaryBtn:
page2.setVisibility(View.VISIBLE);
break;
case R.id.scheduleBtn:
page3.setVisibility(View.VISIBLE);
break;
}
}
};
}
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip"
android:scrollbars="vertical">
<LinearLayout
android:id="@+id/page1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="메모내용"
/>
<EditText
android:id="@+id/memo_text"
android:layout_width="fill_parent"
android:layout_height="100dip"
android:scrollbars="vertical"
android:paddingLeft="10dip"
android:minLines="3"
android:maxLines="3"
android:textSize="20dip"
android:lineSpacingExtra="5dip"
android:background="@drawable/background"
android:gravity="top"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="그림추가"
/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/paint"
android:layout_width="200dip"
android:layout_height="200dip"
>
</LinearLayout>
<Button
android:id="@+id/erase"
android:layout_toRightOf="@id/paint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="지우개"
/>
</RelativeLayout>
</LinearLayout>
package aa.aa;
import android.app.Activity; import android.os.Bundle; import java.util.ArrayList; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.Menu; import android.view.MotionEvent; import android.view.View;
class MyView extends View
{
Paint mpaint;
Bitmap bitmap;
Canvas canvas;
Paint bitmapPaint;
ArrayList<Vertex> arVertex;
public MyView(Context context)
{
super(context);
arVertex = new ArrayList<Vertex>();
mpaint = new Paint();
mpaint.setColor(Color.BLACK);
mpaint.setStrokeWidth(5.0f);
mpaint.setAntiAlias(true);
bitmap = Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
bitmapPaint = new Paint(Paint.DITHER_FLAG);
}
@Override
protected void onDraw(Canvas canvas)
{
// TODO Auto-generated method stub
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(bitmap, 0,0, bitmapPaint);
for(int i=0; i<arVertex.size(); i++)
{
if(arVertex.get(i).draw)
{
canvas.drawLine(arVertex.get(i-1).x,
arVertex.get(i-1).y,
arVertex.get(i).x,
arVertex.get(i).y,
mpaint);
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
// TODO Auto-generated method stub
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
arVertex.add(new Vertex(event.getX(), event.getY(), false));
return true;
//break;
case MotionEvent.ACTION_MOVE:
arVertex.add(new Vertex(event.getX(), event.getY(), true));
invalidate();
return true;
}
return false;
}
public class Vertex
{
float x;
float y;
boolean draw;
Vertex(float _x, float _y, boolean _d)
{
this.x = _x;
this.y = _y;
this.draw = _d;
}
}
} 위처럼 xml 하나, java파일 두개가 있습니다.
MyView클래스(그림판)을 activity2 클래스에서 사용 하려고 합니다.
그런데 그림판에 지우개 기능도 넣을려고 하는데요..
이것을 넣을려면 myview 클래스를 건드려야 하나요?
또한 레이아웃에는 edittext도 있습니다.
메모장 처럼 할려고 하는데요
edittext에 쓰여진 글자와 그림판에 그려진 그림을 저장 해서 나중에 다시 불러 오려면 어떤 방식으로 저장을 해야 하는지 궁금하네요 ㅜㅜ




질문이 좀 애매모호하네요. 지우개기능은 이미 fingerprint API안에 있습니다. 혹시 그림을 완전히 지워버리는것을 말하시는거라면 캔바스에 그려진 비트맵위에 완전히 새 비트맵으로 덮어버리면 됩니다.
Bitmap 새비트맵 = Bitmap.createBitmap(480, 700, Bitmap.Config.ARGB_8888);
mCanvas.drawBitmap(PicBitmap, null, rt, null);
이렇게 하시면 새비트맵이 캔바스 위에 올라갑니다. 이런식으로하면 사진을 비트맵으로 불러와서 사진추가도 가능하죠
저같은경우는 사진을 저장하는 경우라서 그림을 저장할때 URL 주소만 스트링으로 복사해둔뒤에 DB에넣었습니다.
그림을 저장하실려면 비트맵을 파일로 만드시는형식으로 저장하시면 될껍니다. 검색하면 나와요.
edittext도 db에 넣거나 프리퍼런스 이용하시면되요