Ваш браузер устарел. Рекомендуем обновить его до последней версии.




 


 

 

 

 

Построение первых приложений для устройств на базе Android

Рисование пальцем на canvas   _22_

В этом приложении для рисования пальцем задействованы два события. Первое - палец на экране используется для определения координат прикосновения. Второе - палец движется по экрану для рисования линии за меняющимися координатами. Когда приложение запустите экран будет черным, коснитесь его и фон рисования станет белым. В программе можете изменить цвет фона.

Второй вариант приложения немного усложнен. В верхней половине экрана цвет рисования фиолетовый. При переходе в нижнюю половину цвет всего рисунка изменяется на малиновый. Программно можете установить свои цвета. Попробуйте самостоятельно изменить код так, что бы цвет изменялся при переходе с левой половины экрана в правую и наоборот.

_______________MainActivity.java_______________  1 вариант
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.WindowManager;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(new MySurfaceView(this));
// скрыть панель уведомлений
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

class MySurfaceView extends SurfaceView {

SurfaceHolder surfaceHolder;
private Paint paint = new Paint();
private Path path = new Path();
public MySurfaceView(Context context) {

super(context);
surfaceHolder = getHolder();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
paint.setAntiAlias(true); // режим сглаживания
paint.setColor(Color.rgb(150,20,250));
}

@Override
public boolean onTouchEvent(MotionEvent event) {

Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawColor(Color.WHITE);
canvas.drawPath(path, paint);
surfaceHolder.unlockCanvasAndPost(canvas);

if (event.getAction() == MotionEvent.ACTION_DOWN) {
path.moveTo(event.getX(), event.getY());
}
else if (event.getAction() == MotionEvent.ACTION_MOVE) {
path.lineTo(event.getX(), event.getY());
}
return true;
}
}
}
_______________MainActivity.java_______________  2 вариант
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.WindowManager;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(new MySurfaceView(this));

// скрыть панель уведомлений
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

// класс SurfaceView предоставляет отдельную область для рисования
// действия в которой вынесены в отдельный поток приложения
class MySurfaceView extends SurfaceView {

SurfaceHolder surfaceHolder; // объект surfaceHolder дает canvas для отрисовки
private Paint paint = new Paint(); // создание экземпляра класса Paint
private Path path = new Path();

public MySurfaceView(Context context) {

super(context);
surfaceHolder = getHolder(); // метод getHolder()
paint.setStyle(Paint.Style.STROKE); // стиль рисования
paint.setStrokeWidth(20); // ширина кисти
paint.setAntiAlias(true); // режим сглаживания включен
}

@Override
public boolean onTouchEvent (MotionEvent event) {

Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawColor(Color.WHITE); // закрашивание холста белым цветом
canvas.drawPath(path, paint); // кисть рисует на холсте
surfaceHolder.unlockCanvasAndPost(canvas); // вывод на холст результата отрисовки

if (event.getY() > 1000) // условие смены цвета
paint.setColor(Color.rgb(255,0,100));
else paint.setColor(Color.rgb(150,0,250));

// если палец на экране
if (event.getAction() == MotionEvent.ACTION_DOWN) {
path.moveTo(event.getX(), event.getY()); // определение координат пальца
}
// если палец движется по экрану
else if (event.getAction() == MotionEvent.ACTION_MOVE) {
path.lineTo(event.getX(), event.getY()); // рисование линии по координатам
}
return true;
}
}
}

Flag Counter
200stran.ru: показано число посетителей за сегодня, онлайн, из каждой страны и за всё время
Яндекс.Метрика
Besucherzahler russain brides
счетчик посещений

Выбери лучшее!

allbest