Android 드로잉 응용 프로그램
소스를 넣다GitHub.
이 프로그램은 전체 화면을 그릴 수 있는 뷰가 아니라 일부분을 뷰로 만들고 아래에 단추를 설정했다.
따라서 DragwingView 클래스의 실례는Activity의 setContentView()에 맡기는 것이 아니라 Layout에서 DragwingView 클래스를 설정하고 setContentView()에 맡긴다.
Activity에서 DragwingView 클래스에 접근하려면findViewById에서 Layout에서 대상을 끌어당겨 실례에 대입하여 이 실례를 실행하십시오.
이에 따라 Layout에 설정된 단추에서 DragwingView를 조작하면 그림을 지우고 있습니다.
다음은 Activity입니다.
delete 버튼을 클릭하면 deleteDragon이라고 불립니다.
MainActivity.java
package com.general5.drawingapp;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
public class MainActivity extends ActionBarActivity {
private DrawingView drawingView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
this.drawingView = (DrawingView)findViewById(R.id.drawing_view);
findViewById(R.id.delete_button).setOnClickListener(deleteDrawing);
}
View.OnClickListener deleteDrawing = new View.OnClickListener() {
@Override
public void onClick(View view) {
drawingView.delete();
}
};
}
다음은 Layout의 xml입니다.class를 사용하여 DragwingView를 설정하는 view를 구성합니다.
delete 단추를 맨 밑에 놓으세요. 위에는 View입니다.
activity_main.xml
<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"
tools:context=".MainActivity">
<view
android:id="@+id/drawing_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.general5.drawingapp.DrawingView"
android:layout_above="@+id/delete_button"/>
<Button
android:id="@+id/delete_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="delete" />
</RelativeLayout>
다음은 DrawingView 클래스입니다.View 레벨을 상속했습니다.
Layout에서 불렀기 때문에 구조기는 Dragwiview(Context context, AttributeSet attrs)를 실행합니다.
View 섹션을 클릭하면 onTouchEvent()라고 합니다.
따라서 헤더의 위치에서 path를 설정합니다.
그런 다음 invalidate()로 다시 그립니다.
delete 단추를 누르면 delete () 라고 불리며 path를 복원합니다.
DrawingView.java
package com.general5.drawingapp;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class DrawingView extends View {
private Paint paint;
private Path path;
public DrawingView(Context context, AttributeSet attrs) {
super(context, attrs);
this.path = new Path();
this.paint = new Paint();
paint.setColor(Color.RED);
this.paint.setStyle(Paint.Style.STROKE);
this.paint.setAntiAlias(true);
this.paint.setStrokeWidth(10);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
this.path.moveTo(x, y);
break;
case MotionEvent.ACTION_MOVE:
this.path.lineTo(x, y);
break;
case MotionEvent.ACTION_UP:
this.path.lineTo(x, y);
break;
}
invalidate();
return true;
}
public void delete() {
this.path.reset();
invalidate();
}
}
Reference
이 문제에 관하여(Android 드로잉 응용 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/1plus4/items/45773e997f56276aac68텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)