Есть ли какие-либо векторные приложения для рисования, которые генерируют собственный код для iOS и Android? Мне нужен инструмент для создания элементов управления и кнопок пользовательского интерфейса для iOS и Android (в Xamarin). Я могу создавать большие динамические объекты с PaintCode для iOS, но затем для версии Android мне придется воссоздать ее с помощью какого-либо другого инструмента для Android, поэтому я в основном делая все дважды. Мне бы хотелось найти способ создать некоторые динамические элементы управления/кнопки, которые можно использовать как в Xamarin iOS, так и в Xamarin Android.
Поиск "PaintCode" для Android
Ответ 1
Новая версия PaintCode (версия 3, по состоянию на ноябрь 2016 года) теперь экспортирует совместимый с Android код.
Ответ 2
Один общий подход многих организаций (включая мой) для решения кросс-платформенного дизайна - использование значков.
Как это работает,
- создайте SVG версию вашего значка/дизайна
- создать пользовательский шрифт с символом svg/vector как символ юникода
Преимущество:
- Он работает с большим количеством платформ, включая Android, ios, windows phone, а также в Интернете.
- иконки являются векторными, следовательно масштабируемыми
недостатки:
- Знаки
- не могут иметь градиенты Значки
- не могут иметь несколько цветов (могут быть решены путем компоновки значка в несколько компонентов svg и их разбиения на код)
Ответ 3
У меня есть небольшой проект, который может решить ваши проблемы:
https://github.com/almosr/android-svg-code-render
Это инструмент, который преобразует SVG файлы в инструкции по рисованию Android и сохраняет их как исходный файл Java. Затем вы можете просто вызвать метод из этого источника с параметром Canvas, а содержимое SVG будет показано непосредственно на холсте.
Это намного быстрее, чем использование SVG файла в качестве входного файла во время выполнения, потому что ему не нужно разбирать SVG файл (который является внутренним XML). Также съедает значительно меньше памяти.
Однако существуют некоторые ограничения и недостатки, поэтому они могут или не подходят для ваших нужд. Взаимодействие не может отображаться на выходе (пока).