Я получаю только пустой белый экран при использовании svg-android

назначение: Я хочу отобразить файл изображения SVG, используя предпочтительно ImageView.

Попытка 1:

  • Я использую svg-android библиотека для этого.

  • Я после учебник слово в слово. Я просто скопировал их код в свой onCreate, прокомментировал мой код приложения из onCreate.

    I у вас есть заставка перед этим, но я сомневаюсь, что это будет все равно вмешивайся. В любом случае, я просто изменю запуск намерений и после обновления.

  • Я добавил их банку в папку libs и сослался на нее.

результат 1:

Я тестирую на Samsung galaxy I93000 (международная версия)

все, что я получаю, это белый экран.

нет ошибок компиляции или выполнения.

вывод Logcat выглядит следующим образом:

01-13 01:22:11.755: D/dalvikvm(24889): GC_FOR_ALLOC freed 52K, 7% free 12198K/12995K, paused 17ms, total 17ms
01-13 01:22:11.765: I/dalvikvm-heap(24889): Grow heap (frag case) to 17.000MB for 4642816-byte allocation
01-13 01:22:11.810: D/dalvikvm(24889): GC_CONCURRENT freed 1K, 5% free 16730K/17543K, paused 15ms+2ms, total 43ms
01-13 01:22:12.080: D/dalvikvm(24889): GC_FOR_ALLOC freed <1K, 5% free 16731K/17543K, paused 13ms, total 13ms
01-13 01:22:12.100: I/dalvikvm-heap(24889): Grow heap (frag case) to 21.928MB for 5168972-byte allocation
01-13 01:22:12.125: D/dalvikvm(24889): GC_CONCURRENT freed <1K, 4% free 21779K/22599K, paused 12ms+2ms, total 25ms
01-13 01:22:12.560: D/libEGL(24889): loaded /system/lib/egl/libEGL_mali.so
01-13 01:22:12.595: D/libEGL(24889): loaded /system/lib/egl/libGLESv1_CM_mali.so
01-13 01:22:12.600: D/libEGL(24889): loaded /system/lib/egl/libGLESv2_mali.so
01-13 01:22:12.605: D/(24889): Device driver API match
01-13 01:22:12.605: D/(24889): Device driver API version: 10
01-13 01:22:12.605: D/(24889): User space API version: 10 
01-13 01:22:12.605: D/(24889): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012 
01-13 01:22:12.670: D/OpenGLRenderer(24889): Enabling debug mode 0

обновление 1:

Я попытался сделать действие, которое показывает графику SVG в качестве основного действия из манифеста. Результаты не меняются.

обновление 2:

пробуем другой библиотеки/способ сделать это - ImageView с поддержкой SVG. Опубликует результаты.

обновление 3:

чтобы вы знали, я уже посмотрел на поддержка SVG на Android. Ответы там на самом деле не предоставляют собственного решения. Одним из обходных путей было бы создание статических html-страниц, по одной для каждого svg, ссылаясь на библиотеку SVG js. Это вообще не кажется возможным. Я был бы тем человеком, которого люди проклинают, когда смотрят на наследие. код.

Как вы могли догадаться, вышеупомянутая пробная версия не сработала достаточно хорошо.

2 ответов


вы, вероятно, уже нашли решение, но для дальнейшего использования:

Я тестирую на Samsung galaxy I93000 (международная версия)

все, что я получаю, это белый экран.

нет ошибок компиляции или выполнения.

вероятно, вам нужно отключить аппаратное ускорение для ImageView, который вы используете:

imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

У меня была такая же проблема с вилкой svg-android, и это было исключительно из-за аппаратное ускорение.


хорошо, после одной полной бессонной ночи, это то, что у меня есть. :)

надеюсь 1:

*TPSVG_Android_SVG_Library:* (это то, что я использовал, т. е. мое одобрение ;))

попробовал библиотеку этого благословенного человека. Сработало как по волшебству. Он расширяет свой пользовательский вид из вида, так что у вас есть большинство основных параметров для layouting. В нем только один участник. Я немного против используя его на производстве, по крайней мере, на долгосрочной основе. Но слава его работе и большое спасибо, поскольку она удовлетворила мою непосредственную потребность.

использование довольно прямолинейно для этого, anywho я опишу его грубо.

  • загрузите РЕПО в виде zip и импортируйте его в eclipse
  • добавьте его в качестве проекта библиотеки в свой проект (свойства проекта -> Android)
  • используйте его так в onCreate:

    SVGView svgView = (SVGView)это.команду findViewById(Р. ИД.svgImage); SVGParserRenderer image = новый SVGParserRenderer (это, Р. raw.аниме); svgView.setSVGRenderer (изображение, null); svgView.setBackgroundColor(цвет.Белый);

  • Я использовал FrameLayout для позиционирования этого. lotta проб и ошибок было необходимо, как это не появляется в Редакторе WYSIWYG для android. Вы можете временно заменить книги и заниматься форматирование.

  • любые параметры, используемые в этом теге, которые не принадлежат классу View, вызовут ошибки компиляции

вопрос: Я еще не совсем понял, как переключать drawables (SVG) на этом представлении во время выполнения. Если кто-то, что вон, пожалуйста, после процедуры.

Надежда 2:

Vectoroid:

Это кажется многообещающим. У них есть несколько векторных приложений, основанных вместе с библиотекой. Я не мог понять, как использовать это для загрузки SVG drawable (кажется, это еще не поддерживается). Но подождите! здесь в своем блоге они говорят, что они реализовали "SVG для drawable" и скоро выпустят его. Ура!