Студента ИТ 14-1 Красовского А.В.
Лабораторная работа 5
Разработка графического редактора
Цель работы: разработать графический редактор
Выполнение задания: Программный код:
Класс Point:
package com.example.abhai.graphiceditor;
import android.graphics.Color;
import android.graphics.Paint;
class Point {
private Paint paint;
private float x;
private float y;
Point(float x, float y, String color) {
paint = new Paint();
paint.setStrokeWidth(2);
this.x = x;
this.y = y;
switch (color) {
case "Red":
paint.setColor(Color.RED);
break;
case "Blue":
paint.setColor(Color.BLUE);
break;
case "Green":
paint.setColor(Color.GREEN);
break;
case "Yellow":
paint.setColor(Color.YELLOW);
break;
default:
paint.setColor(Color.RED);
}
}
Paint getPaint() {
return paint;
}
float getX() {
return x;
}
float getY() {
return y;
}
}
Класс MainActivity:
package com.example.abhai.graphiceditor;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private String color = "Red";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
linearLayout.addView(new DrawView(this));
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonBlue:
color = "Blue";
break;
case R.id.buttonGreen:
color = "Green";
break;
case R.id.buttonRed:
color = "Red";
break;
case R.id.buttonYellow:
color = "Yellow";
break;
}
}
};
Button buttonBlue = (Button) findViewById(R.id.buttonBlue);
buttonBlue.setOnClickListener(onClickListener);
Button buttonGreen = (Button) findViewById(R.id.buttonGreen);
buttonGreen.setOnClickListener(onClickListener);
Button buttonRed = (Button) findViewById(R.id.buttonRed);
buttonRed.setOnClickListener(onClickListener);
Button buttonYellow = (Button) findViewById(R.id.buttonYellow);
buttonYellow.setOnClickListener(onClickListener);
}
private class DrawView extends View {
private ArrayList<Point> previousPoint = new ArrayList<>();
private ArrayList<Point> currentPoint = new ArrayList<>();
private boolean start;
public DrawView(Context context) {
super(context);
start = true;
}
@Override
protected void onDraw(Canvas canvas) {
for (int i = 0; i < previousPoint.size() - 1; i++)
canvas.drawLine(previousPoint.get(i).getX(), previousPoint.get(i).getY(),
currentPoint.get(i).getX(), currentPoint.get(i).getY(), previousPoint.get(i).getPaint());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (start || event.getAction() == MotionEvent.ACTION_DOWN) {
previousPoint.add(new Point(event.getX(), event.getY(), color));
currentPoint.add(new Point(event.getX(), event.getY(), color));
start = false;
} else {
previousPoint.add(currentPoint.get(currentPoint.size() - 1));
currentPoint.add(new Point(event.getX(), event.getY(), color));
postInvalidate();
}
return true;
}
}
}
Результат работы программы:
Вывод: в ходе лабораторной работы были получены практические навыки разработки графического редактора