Урок 151. Рисование. PathEffect
Урок 151. Рисование. PathEffect
В этом уроке:
- рассматриваем PathEffect-объекты
Click here to read this article!
- рассматриваем PathEffect-объекты
Click here to read this article!
Последний раз редактировалось damager82 31 май 2017, 17:27, всего редактировалось 3 раза.
Re: Урок 151. Рисование. PathEffect
"Если вы этот отступ повесите в цикл, то линия оживет и поедет на месте." Как повесить отступ в цикл?
Re: Урок 151. Рисование. PathEffect
До этого урока я ещё не дошёл, пока что на 120.
Но циклы в Андроиде это циклы из Java/
Вот, например, лекция о них: http://kostin.ws/java/java-loops.html
Но циклы в Андроиде это циклы из Java/
Вот, например, лекция о них: http://kostin.ws/java/java-loops.html
Re: Урок 151. Рисование. PathEffect
Как ты попал на 151й урок ?Juki писал(а):"Если вы этот отступ повесите в цикл, то линия оживет и поедет на месте." Как повесить отступ в цикл?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 151. Рисование. PathEffect
p3.setPathEffect(new DashPathEffect(new float[] { 50, 10, 5, 10 }, 25)); если эту строчку впихнуть даже в бесконечный цикл, то ничего не происходит. Хотя за отступ тут отвечает, только второй параметр, но как его повесить в цикл мне не совсем понятно. А это совершенно не означает, что я не умею с циклами работатьdoter.ua писал(а): Как ты попал на 151й урок ?
Re: Урок 151. Рисование. PathEffect
Создай переменную со значением 0 и цикл в котором будешь увеличивать её на 1 и выводить в лог. И проверку в конце если больше 100 - остановить цикл или сбросить переменную присвоив ей 0. Это не запустить полоску, но с циклами познакомишься.Juki писал(а):p3.setPathEffect(new DashPathEffect(new float[] { 50, 10, 5, 10 }, 25)); если эту строчку впихнуть даже в бесконечный цикл, то ничего не происходит. Хотя за отступ тут отвечает, только второй параметр, но как его повесить в цикл мне не совсем понятно. А это совершенно не означает, что я не умею с циклами работатьdoter.ua писал(а): Как ты попал на 151й урок ?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 151. Рисование. PathEffect
С циклами я еще в 6-м классе познакомилась! Ты анимацию по этому уроку сделал?doter.ua писал(а): Создай переменную со значением 0 и цикл в котором будешь увеличивать её на 1 и выводить в лог. И проверку в конце если больше 100 - остановить цикл или сбросить переменную присвоив ей 0. Это не запустить полоску, но с циклами познакомишься.
Re: Урок 151. Рисование. PathEffect
Только читал. "Повесить в цикл" довольно абстрактный совет. Вызов OnDraw прорисует 1 frame. Что норм для статичной картинки, но не анимации. Циклы внутри онДроу юзлес т.к. отрисуется только последний вариант. Один из способов проанимировать: postDelayed + invalidate().Juki писал(а):С циклами я еще в 6-м классе познакомилась! Ты анимацию по этому уроку сделал?doter.ua писал(а): Создай переменную со значением 0 и цикл в котором будешь увеличивать её на 1 и выводить в лог. И проверку в конце если больше 100 - остановить цикл или сбросить переменную присвоив ей 0. Это не запустить полоску, но с циклами познакомишься.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 151. Рисование. PathEffect
Спасибо, можно было сразу так ответить.doter.ua писал(а): Один из способов проанимировать: postDelayed + invalidate().
Re: Урок 151. Рисование. PathEffect
А сейчас в 7м классе ?Juki писал(а):С циклами я еще в 6-м классе познакомилась!.doter.ua писал(а): Один из способов проанимировать: postDelayed + invalidate().
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 151. Рисование. PathEffect
Ха-хаdoter.ua писал(а): А сейчас в 7м классе ?
Re: Урок 151. Рисование. PathEffect
doter.ua писал(а):Один из способов проанимировать: postDelayed + invalidate().
Код: Выделить всё
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new DrawView(this));
}
class DrawView extends SurfaceView implements SurfaceHolder.Callback {
Path path;
Paint p1;
Paint p2;
Paint p3;
private DrawThread drawThread;
public DrawView(Context context) {
super(context);
path = new Path();
path.rLineTo(100, 300);
path.rLineTo(100, -100);
path.rLineTo(100, 300);
p1 = new Paint(Paint.ANTI_ALIAS_FLAG);
p1.setStyle(Paint.Style.STROKE);
p1.setStrokeWidth(3);
getHolder().addCallback(this);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
drawThread = new DrawThread(getHolder());
drawThread.setRunning(true);
drawThread.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
drawThread.setRunning(false);
while (retry) {
try {
drawThread.join();
retry = false;
} catch (InterruptedException e) {
}
}
}
class DrawThread extends Thread {
private long prevTime;
private boolean running = false;
private SurfaceHolder surfaceHolder;
public DrawThread(SurfaceHolder surfaceHolder) {
prevTime = System.currentTimeMillis();
this.surfaceHolder = surfaceHolder;
}
public void setRunning(boolean running) {
this.running = running;
}
@Override
public void run() {
Canvas canvas;
p2 = new Paint(p1);
p2.setColor(Color.GREEN);
p3 = new Paint(p1);
p3.setColor(Color.BLUE);
int i=5;
while (running) {
long now = System.currentTimeMillis();
long elapsedTime = now - prevTime;
if (elapsedTime > 30){
prevTime = now;
p2.setPathEffect(new DashPathEffect(new float[] { 30, 10}, i));
p3.setPathEffect(new DashPathEffect(new float[] { 50, 10, 5, 10 }, i+15));
i++;
}
canvas = null;
try {
canvas = surfaceHolder.lockCanvas(null);
if (canvas == null)
continue;
canvas.drawARGB(80, 102, 204, 255);
canvas.translate(20, 50);
canvas.drawPath(path, p2);
canvas.translate(150, 0);
canvas.drawPath(path, p3);
} finally {
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
}
}
}