2010-10-08 55 views
75

Android có hỗ trợ SVG không? bất kỳ ví dụ nào?Hỗ trợ SVG trên Android

+1

đọc này: http://code.google.com/p/android/issues/ chi tiết?id = 1376 (đọc đến hết) – ankitjaininfo

+2

Câu trả lời được chấp nhận là không chính xác kể từ ngày 10/5/12 –

Trả lời

55

Câu trả lời đầy đủ nhất là thế này:

  • Trình duyệt 2.x mặc định Android không natively hỗ trợ SVG.
  • Trình duyệt mặc định của Android 3+ DO hỗ trợ SVG.

Để thêm hỗ trợ SVG với các phiên bản 2.x của nền tảng này, bạn có hai lựa chọn cơ bản:

  1. Cài đặt trình duyệt có khả năng hơn (như Firefox hoặc Opera Mobile - cả hai hỗ trợ SVG)
  2. Sử dụng một polyfill JavaScript có thể phân tích cú pháp SVG và hiển thị nó thành canvas HTML5

Tùy chọn đầu tiên là không sao nếu bạn chỉ cố gắng làm SVG hoạt động cho mục đích cá nhân hoặc một nhóm người dùng có giới hạn (có thể điều khiển). Nó không phải là một lựa chọn tuyệt vời nếu bạn muốn sử dụng SVG trong khi nhắm mục tiêu một cơ sở người dùng lớn, không được kiểm soát.

Trong trường hợp sau, bạn muốn sử dụng polyfill. Hiện có rất nhiều thư viện JavaScript có thể chạy SVG và render thành canvas. Hai ví dụ là:

Sử dụng một polyfill, bạn có thể làm cho SVG của bạn trong một canavs trên tất cả các phiên bản của Android 2.x.

Để có ví dụ hoàn chỉnh hơn về cách tiếp cận này, bạn có thể tham khảo this blog post that discusses the use of the canvg polyfill để làm cho biểu đồ KIZ UI DataViz (dựa trên SVG) hoạt động trên Android 2.x. Hy vọng rằng sẽ giúp!

+0

Xin chào, tôi muốn biết về ImageView, liệu tôi có thể thay đổi màu của thời gian chạy hình ảnh svg đó không? –

22

Có thư viện mã nguồn mở mới hỗ trợ tải và vẽ tệp SVG Basic 1.1: https://github.com/pents90/svg-android. Hiệu suất là tốt như bản vẽ thực tế được xử lý nguyên bản bởi một đối tượng android.graphics.Picture.

+0

Vì vậy, nó không phải là bỏ qua, tôi sẽ thêm một bình luận ở đây để điều đó (như đã đề cập trong câu trả lời của @ Todd) Android 3+ không hỗ trợ SVG. Vì vậy, không cần các nhà phát triển quan tâm đến các thư viện nếu họ không lo lắng về các thiết bị Android cũ hơn. – monotasker

+9

Trong câu trả lời của tôi, tôi đang đề cập đến một thư viện cho phép nhà phát triển tải và hiển thị các tệp SVG trong ứng dụng của họ. Android 3+ thêm hỗ trợ trình duyệt cho SVG, nhưng ** không ** có hỗ trợ SVG trong API nhà phát triển của nó. – pents90

+1

Ah, xin lỗi. Lỗi của tôi. – monotasker

8

Có một thư viện mới (đang được phát triển tích cực) androidsvg cho phép một để kết hợp hình ảnh svg trực tiếp vào các dự án. Nó có lợi thế là xác định một SVGImageView cho phép một kết hợp một svg trực tiếp trong bố cục xml.

Cuối cùng, bao gồm svg trong android rất đơn giản.

Thông tin chi tiết: Stack Overflow post

+0

Thư viện svg này thực sự hoạt động. svg-android và dĩa của nó không áp dụng kiểu/css mà tôi đã định nghĩa trong một nhóm cho con của nhóm. Cái này có. Cảm ơn bạn. – domenukk

1

tôi biết giải pháp của tôi là hơi hardcore, nhưng nó hoạt động tốt, không đòi hỏi bất kỳ thư viện bên ngoài (ít nhất là không có trong mã cuối cùng của bạn) và cực kỳ nhanh.

1) Chỉ cần một thư viện SVG tải hiện có, chẳng hạn như ví dụ svg-android-2 (mà là một ngã ba của svg-android đề cập trong câu trả lời khác, chỉ với nhiều tính năng và sửa lỗi): https://code.google.com/p/svg-android-2/

2) Viết một ứng dụng đơn giản mà sẽ không làm gì khác ngoài việc tải và hiển thị hình ảnh SVG của bạn.

3) Sửa đổi thư viện tải SVG, để nó in mã Java tạo lớp Ảnh hoặc lưu nó trong biến Chuỗi.

4) Sao chép-dán mã Java có được theo cách này vào ứng dụng bạn đang viết.

Để biết thêm thông tin về kỹ thuật và nguồn mẫu tải về mã này, hãy vào blog của tôi: http://androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-android.html

Bạn có thể lấy một ví dụ làm việc của kỹ thuật này từ Google Play ở đây: https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.svgtodrawablesample

Dưới đây là một ví dụ về ứng dụng thương mại được tạo bằng kỹ thuật này (bản đồ tàu điện ngầm Milan): https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.atmmetroplan

Lưu ý tốc độ tải bản đồ và độ trông đẹp như thế nào, ngay cả khi phóng to.

0

Check-out Support vector drawable. Android studio có công cụ chuyển đổi tệp SVG thành tệp .XML.

khi sử dụng AppCompat với ImageView (hoặc các lớp con như ImageButton và FloatingActionButton), bạn sẽ có thể sử dụng ứng dụng mới: thuộc tính srcCompat để tham chiếu drawables vector (cũng như bất kỳ drawable nào khác có sẵn cho android: src):

Tính đến Android hỗ trợ Thư viện 23.3.0, drawables hỗ trợ vector chỉ có thể được nạp thông qua ứng dụng: srcCompat hoặc setImageResource()