Анимированная пунктирная граница в Android - PullRequest
15 голосов
/ 25 августа 2010

Как создать анимированную пунктирную или пунктирную границу произвольной формы в Android? В XML (предпочтительно) или программно.

См. Рисунок ниже для примера.

alt text

Ответы [ 3 ]

19 голосов
/ 02 сентября 2010

Вы видели демонстрацию API PathEffects?http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PathEffects.html

Он создает точно анимированную линию, и вы можете просто отрегулировать путь к краю вашего вида, чтобы создать границу.Например:

Определите путь с помощью параметров вашего вида / произвольной формы:

Path path = new Path();
path.addRect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom(), Path.Direction.CW);

Затем создайте пунктирный PathEffect с:

PathEffect pe = new DashPathEffect(new float[] {10, 5, 5, 5}, phase);

Затем установите ассоциированный путьс объектом Paint и рисуйте:

mPaint.setPathEffect(pe);
canvas.drawPath(path, mPaint);

EDIT: анимированный эффект происходит от непрерывного изменения фазы и перерисовки.В демонстрации API он вызывает invalidate () в методе onDraw () (который вызывает onDraw () ...)

0 голосов
/ 25 августа 2010

Не могли бы вы использовать какую-либо форму двух 9-патч-изображений в качестве фоновой рамки вокруг файла изображения, который вы хотите представить, по одному в каждой из двух компоновок. Изображения будут отличаться с точки зрения размещения пунктирных элементов. Быстро поменяйте местами представления (возможно, потребуется задержка), и вы получите желаемый эффект. Не знаю, насколько это было бы эффективно, если бы пользователь мог продолжать использовать приложение и жевать батарею ...

0 голосов
/ 25 августа 2010

XML ... Я думаю, что это невозможно. Но вы можете использовать пользовательский вид или SurfaceView и обрабатывать чертеж самостоятельно. Веселитесь с этим:)

...