Каковы лучшие практики использования значков SVG на Android? - PullRequest
70 голосов
/ 10 марта 2012

Я собираюсь создать свое первое приложение для Android native (поэтому не основанное на браузере) и ищу некоторые полезные рекомендации по созданию и обеспечению значков.Поскольку он должен поддерживать несколько устройств / разрешений, я подумал, что для их создания лучше всего использовать SVG.По крайней мере, есть эта библиотека: http://code.google.com/p/svg-android/, которая обещает предложить поддержку SVG на Android.

До сих пор я не нашел ресурсов, описывающих использование этой или другой библиотеки в качестве средства визуализации.Иконки SVG на устройстве, поэтому я немного неохотно им пользуюсь.Лучшее, что я видел до сих пор, - это использование SVG в качестве исходного формата для предварительного рендеринга значков на основе png в разных разрешениях.

Поэтому мои вопросы таковы: являются ли значки SVG хорошим вариантом для использования непосредственно на устройстве безpng этап предварительного рендеринга (работает ли он вообще), и если, почему никто не использует этот подход?

Ответы [ 12 ]

0 голосов
/ 14 января 2016

svg - это круто. кто хочет использовать svg:

щелкните правой кнопкой мыши на нарисованном «новом / векторном активе», выберите «значок материала» для значков по умолчанию и «файл локали SVG» для вашего файла на жестком диске вашего компьютера и в «имени ресурса» введите имя для файла SVG, затем нажмите «» Следующая кнопка и «Готово»

и вы можете использовать это в drawable. Цвет заливки должен быть жестким кодом.

простой пример

navigation_toggle.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FFFFFF"
        android:pathData="M3,18h18v-2H3v2zm0,-5h18v-2H3v2zm0,-7v2h18V6H3z"/>
</vector>
0 голосов
/ 09 октября 2015

Мне никогда не удавалось запустить сценарии оболочки Linux в Cygwin под Windows.Итак, вот пакетный файл, который делает то, что делает bash-скрипт Nacho Coloma.Небольшое отличие состоит в том, что этот пакетный файл требует ввода и имени выходного файла, как в "svg2png -w24 input.svg output.png".

Установите папку "svg" в src вашего проекта/ main и скопируйте ваши SVG-файлы и этот пакетный файл в эту папку, следуя инструкциям Стефана.Запустите пакетный файл из папки svg.Если вы используете 32-разрядную версию Windows, вам, вероятно, потребуется изменить путь к Inkscape, чтобы использовать «Program Files (x86)».

@echo off
echo Convert an SVG file to a PNG resource file with multiple resolutions.

rem Check the arguments
set temp=%1
set switch=%temp:~0,2%
set pixels=%temp:~2%
if not "%switch%"=="-w" (
if not "%switch%"=="-h" (
echo Error:  Invalid image width or height switch.  Use -w or -h, with target image size in dp appended.
goto :error
))
echo %pixels%| findstr /r /c:"^[1-9][0-9]*$" >nul
if errorlevel 1 (
echo Error:  Invalid numeric image size.  Image size must be a positive integer.
goto :error
)
if "%3"=="" (
echo Error:  Not enough arguments.
goto :error
)
if not "%4"=="" (
echo Error:  Too many arguments.
goto :error
)

call :export %1 %2 %3 mdpi
call :export %1 %2 %3 hdpi
call :export %1 %2 %3 xhdpi
call :export %1 %2 %3 xxhdpi
call :export %1 %2 %3 xxxhdpi
exit /b

:export
rem parameters: <width/height> <input-file> <output-file> <density>

set temp=%1
set switch=%temp:~0,2%
set pixels=%temp:~2%

if %4==mdpi set /a size=%pixels%
if %4==hdpi set /a size=%pixels%*3/2
if %4==xhdpi set /a size=%pixels%*2
if %4==xxhdpi set /a size=%pixels%*3
if %4==xxxhdpi set /a size=%pixels%*4

echo %size% pixels ../res/drawable-%4/%3
"C:\Program Files\Inkscape\inkscape.exe" %switch%%size% --export-background-opacity=0 --export-png=../res/drawable-%4/%3 %2
exit /b

:error
echo Synopsis: svg2png -w^<width-pixels^>^|-h^<height-pixels^> ^<input-file^> ^<output-file^>
echo Example:  svg2png -w24 "wifi white.svg" wifi_connect_24dp.png
exit /b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...