Android에서 SVG 지원


답변:


56

가장 완전한 대답은 다음과 같습니다.

  • Android 2.x 기본 브라우저는 기본적으로 SVG를 지원하지 않습니다.
  • Android 3+ 기본 브라우저는 SVG를 지원합니다.

2.x 버전의 플랫폼에 SVG 지원을 추가하려면 두 가지 기본 선택 사항이 있습니다.

  1. 더 많은 기능을 갖춘 브라우저 (예 : Firefox 또는 Opera Mobile-모두 SVG 지원) 설치
  2. SVG를 구문 분석하고 HTML5 캔버스로 렌더링 할 수있는 JavaScript 폴리 필을 사용합니다.

첫 번째 옵션은 SVG를 개인적인 용도로 사용하거나 제한된 (제어 가능한) 사용자 집합을 위해 사용하려는 경우 괜찮습니다. 대규모의 통제되지 않은 사용자 기반을 대상으로하는 동안 SVG를 사용하려는 경우 좋은 옵션이 아닙니다.

나중의 경우에는 폴리 필을 사용하려고합니다. 현재 SVG를 평가하고 캔버스로 렌더링 할 수있는 JavaScript 라이브러리가 많이 있습니다. 두 가지 예는 다음과 같습니다.

폴리 필을 사용하면 모든 Android 2.x 버전의 canavs에서 SVG를 렌더링 할 수 있습니다.

이 접근 방식의보다 완전한 예는 Android 2.x에서 Kendo UI DataViz 차트 (SVG 기반)가 작동하도록 만들기위한 canvg polyfill의 사용에 대해 설명하는이 블로그 게시물을 참조 할 수 있습니다 . 도움이 되었기를 바랍니다.


안녕하세요, 해당 svg 이미지 런타임의 색상을 변경할 수 있는지 여부를 ImageView에 대해 알고 싶습니다.
Shreyash Mahajan 2014

22

SVG Basic 1.1 파일로드 및 그리기를 지원하는 새로운 오픈 소스 라이브러리가 있습니다 : https://github.com/pents90/svg-android . 실제 드로잉은 android.graphics.Picture 객체가 기본적으로 처리하므로 성능이 좋습니다.


놓치지 않도록 여기에 주석을 추가하겠습니다 (@Todd의 답변에서 언급했듯이) Android 3+는 SVG를 지원합니다. 따라서 개발자가 구형 Android 기기에 대해 걱정하지 않는다면 라이브러리에 대해 걱정할 필요가 없습니다.
monotasker 2012

9
제 대답에서는 개발자가 앱에서 SVG 파일을로드하고 렌더링 할 수있는 라이브러리를 언급하고 있습니다. Android 3 이상은 SVG에 대한 브라우저 지원을 추가하지만 개발자 API에서 SVG를 지원 하지 않습니다 .
pents90

안타깝게도 Android 4.3에서는이 기능이 작동하지 않았습니다. 샘플 이미지는 결국 공백이됩니다. Wiki의 튜토리얼 페이지에있는 정확한 코드를 사용하고 있습니다.
BVB 2013

2
@BVB Android 4.x에서 작동하려면 하드웨어 가속을 꺼야합니다. 참조 : stackoverflow.com/questions/10384613/…stackoverflow.com/questions/8771219/…
pents90

감사합니다.하지만 다른 곳에서는 부정적인 영향이 없을까요?
BVB 2013


8

프로젝트에 직접 svg 이미지를 통합 할 수 있는 새로운 라이브러리 (현재 개발중인) androidsvg 가 있습니다. SVGImageView레이아웃 xml에 svg를 직접 통합 할 수있는를 정의하는 장점 이 있습니다.

마지막으로, 안드로이드에 svg를 포함하는 것은 간단합니다.

자세한 내용 : Stack Overflow 게시물


이 svg 라이브러리는 실제로 작동합니다. svg-android 및 포크는 그룹의 자식을 위해 그룹에서 정의한 스타일 / css를 적용하지 않았습니다. 이건 그렇습니다. 감사합니다.
domenukk




1

내 솔루션이 다소 하드 코어하다는 것을 알고 있지만 훌륭하게 작동하고 (적어도 최종 코드가 아닌) 외부 라이브러리가 필요하지 않으며 매우 빠릅니다.

1) 예를 들어 svg-android-2 (다른 답변에서 언급 한 svg-android의 포크이며 더 많은 기능과 버그 수정과 함께)와 같은 기존 SVG 로딩 라이브러리를 사용 하십시오 . https://code.google.com / p / svg-android-2 /

2) SVG 이미지를로드하고 표시하는 것 외에는 아무것도하지 않는 간단한 앱을 작성합니다.

3) SVG 로딩 라이브러리를 수정하여 Picture 클래스를 생성하는 Java 코드를 인쇄하거나 String 변수에 저장합니다.

4) 이렇게 얻은 Java 코드를 작성중인 앱에 복사하여 붙여 넣습니다.

이 기술에 대한 자세한 정보를 얻고 샘플 소스 코드를 다운로드하려면 내 블로그로 이동하십시오. http://androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-android.html

https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.svgtodrawablesample 에서 Google Play에서이 기술의 작동 예제를 얻을 수 있습니다.

다음은이 기술 (밀라노 지하철지도)을 사용하여 만든 상업용 앱의 예입니다. https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.atmmetroplan

확대해도지도가로드되는 속도와보기가 얼마나 예쁜지 확인하세요.


1

Support vector drawable을 확인하십시오 . Android 스튜디오에는 SVG 파일을 .XML 파일로 변환하는 도구가 있습니다.

ImageView (또는 ImageButton 및 FloatingActionButton과 같은 하위 클래스)와 함께 AppCompat를 사용할 때 새로운 app : srcCompat 속성을 사용하여 벡터 드로어 블 (및 android : src에서 사용할 수있는 다른 드로어 블)을 참조 할 수 있습니다.

Android 지원 라이브러리 23.3.0부터 지원 벡터 드로어 블은 app : srcCompat 또는 setImageResource ()를 통해서만로드 할 수 있습니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.