Hỗ trợ SVG trên Android


Câu trả lời:


56

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

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

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

  1. Cài đặt một trình duyệt có khả năng hơn (như Firefox hoặc Opera Mobile - cả hai đều hỗ trợ SVG)
  2. Sử dụng 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à ổn nếu bạn chỉ cố gắng làm cho SVG hoạt động cho mục đích sử dụng cá nhân hoặc một nhóm người dùng hạn chế (có thể kiểm soát). Đó 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 cơ sở người dùng lớn, không bị kiểm soát.

Trong trường hợp sau, bạn muốn sử dụng polyfill. Ngày nay, có nhiều thư viện JavaScript có thể xử lý SVG và hiển thị trên canvas. Hai ví dụ là:

Sử dụng polyfill, bạn có thể hiển thị SVG của mình trong một canav trên tất cả các phiên bản Android 2.x.

Để có ví dụ đầy đủ hơn về phương pháp này, bạn có thể tham khảo bài đăng trên blog này thảo luận về việc sử dụng canvg polyfill để làm cho biểu đồ Kendo UI DataViz (dựa trên SVG) hoạt động trên Android 2.x. Hy vọng rằng sẽ giúp!


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

22

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


Để nó không bị bỏ lỡ, tôi sẽ thêm nhận xét vào đây (như đã đề cập trong câu trả lời của @ Todd) Android 3+ không hỗ trợ SVG. Vì vậy, các nhà phát triển không cần phải lo lắng về 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

Rất tiếc, cái này không hoạt động với tôi với Android 4.3. Hình ảnh mẫu cuối cùng bị trống. Tôi đang sử dụng mã chính xác có trong trang hướng dẫn trên Wiki.
BVB

2
@BVB, bạn sẽ cần phải tắt tăng tốc phần cứng để nó hoạt động trên Android 4.x. Xem: stackoverflow.com/questions/10384613/…stackoverflow.com/questions/8771219/…
pents90

Cảm ơn, nhưng điều đó sẽ không có tác động tiêu cực ở những nơi khác?
BVB


8

Có một thư viện mới (đang phát triển tích cực) androidsvg cho phép người ta kết hợp các 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 SVGImageViewcho phép người ta kết hợp một svg trực tiếp trong xml bố cục.

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

Thêm chi tiết: Bài đăng Stack Overflow


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




1

Tôi biết giải pháp của mình hơi khó, nhưng nó hoạt động tuyệt vời, không yêu cầu bất kỳ thư viện bên ngoài nào (í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 lấy một thư viện tải SVG hiện có, chẳng hạn như svg-android-2 (là một nhánh của svg-android được đề cập trong một câu trả lời khác, chỉ với nhiều tính năng hơn và các bản sửa lỗi): https://code.google.com / p / svg-android-2 /

2) Viết một ứng dụng đơn giản 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 ra lớp Ảnh hoặc lưu nó trong một 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 này và tải xuống mã nguồn mẫu, hãy truy cập blog của tôi: http://androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-android.html

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

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

Chú ý xem bản đồ tải nhanh như thế nào và nó trông đẹp như thế nào, ngay cả khi được phóng to.


1

Kiểm tra Hỗ trợ vector vẽ được . Android studio có một công cụ để chuyển đổi tệp SVG sang 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 các vector có thể vẽ được (cũng như bất kỳ loại có thể vẽ nào khác có sẵn cho android: src):

Kể từ Thư viện hỗ trợ Android 23.3.0, chỉ có thể tải các tệp có thể kéo vectơ hỗ trợ qua ứng dụng: srcCompat hoặc setImageResource ()



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.