Как я могу нарисовать изогнутый путь в Java и Kotlin, как Безье во флаттере - PullRequest
0 голосов
/ 10 ноября 2019

Как я могу создать пользовательскую фигуру в Android с помощью Java или Kotlin, как метод Безье во флаттере? Посмотрите на эти картинки и скажите, можем ли мы создать эти фигуры с помощью Java? Я искал больше раз, но я не могу понять, что это можно сделать или нет, и какой класс использовать для него.

a busy cat! [Две куклы] [1]

a busy cat! [две куклы] [1]

1 Ответ

0 голосов
/ 11 ноября 2019

С помощью CustomPainter и использования path.quadraticBezierTo
вы можете ссылаться на этот документ https://medium.com/@felixblaschke/fancy-background-animations-in-flutter-4163d50f5c37 github https://github.com/felixblaschke/simple_animations_example_app

фрагмент кода из https://github.com/felixblaschke/simple_animations_example_app/blob/master/lib/examples/fancy_background.dart

class CurvePainter extends CustomPainter {
  final double value;

  CurvePainter(this.value);

  @override
  void paint(Canvas canvas, Size size) {
    final white = Paint()..color = Colors.white.withAlpha(60);
    final path = Path();

    final y1 = sin(value);
    final y2 = sin(value + pi / 2);
    final y3 = sin(value + pi);

    final startPointY = size.height * (0.5 + 0.4 * y1);
    final controlPointY = size.height * (0.5 + 0.4 * y2);
    final endPointY = size.height * (0.5 + 0.4 * y3);

    path.moveTo(size.width * 0, startPointY);
    path.quadraticBezierTo(
        size.width * 0.5, controlPointY, size.width, endPointY);
    path.lineTo(size.width, size.height);
    path.lineTo(0, size.height);
    path.close();
    canvas.drawPath(path, white);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return true;
  }
}

enter image description here

...