2015-06-18 14 views
21

Tôi đã tìm thấy vô số các thư viện để sử dụng svg trong Android và tránh việc tạo ra các độ phân giải khác nhau và giảm các tệp cho từng độ phân giải, điều này trở nên rất khó chịu khi ứng dụng có nhiều biểu tượng hoặc hình ảnh.cách dễ nhất để sử dụng svg trong android?

Bất kỳ ai cũng có thể đưa ra một quy trình từng bước đơn giản nhất để sử dụng thư viện để sử dụng SVG trong Android, tôi chắc chắn điều này cũng sẽ giúp nhiều người khác.

Ngoài ra tôi sử dụng Android Studio và Illustrator để tạo biểu tượng và hình ảnh của mình.

+0

Bản sao có thể có của [Thực tiễn tốt nhất để sử dụng biểu tượng SVG trên Android là gì?] (Http://stackoverflow.com/questions/9647770/what-are-best-practices-for-using -svg-icons-on-android) –

Trả lời

15

UPDATE: Please notice this answer is from 2015, and there might better and easier ways to use svg in Android at the present moment. So take this answer with a grain of salt.

Ok sau khi một số giờ nghiên cứu tôi thấy svg-android là khá dễ dàng để sử dụng, vì vậy tôi rời khỏi đây hướng dẫn từng bước:

  1. tải lib từ: https://code.google.com/p/svg-android/downloads/list phiên bản mới nhất tại thời điểm viết bài này là: svg-android-1.1.jar

  2. Đặt jar trong lib dir.

  3. Lưu file * .svg của bạn trong res/drawable dir (Trong minh hoạ là dễ dàng như nhấn Save as và chọn svg)

  4. Mã sau đây trong hoạt động của bạn bằng cách sử dụng thư viện svg:

    ImageView imageView = (ImageView) findViewById(R.id.imgView); 
    SVG svg = SVGParser.getSVGFromResource(getResources(), R.drawable.example); 
    //The following is needed because of image accelaration in some devices such as samsung 
    imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
    imageView.setImageDrawable(svg.createPictureDrawable()); 
    



Bạn có thể giảm bớt mã boilerplate như thế này

Rất dễ dàng Tôi đã thực hiện một lớp đơn giản để chứa mã quá khứ và giảm mã soạn sẵn, như thế này:

import android.app.Activity; 
import android.view.View; 
import android.widget.ImageView; 

import com.larvalabs.svgandroid.SVG; 
import com.larvalabs.svgandroid.SVGParser; 

public class SvgImage { 

    private static ImageView imageView; 
    private Activity activity; 
    private SVG svg; 
    private int xmlLayoutId; 
    private int drawableId; 


    public SvgImage(Activity activity, int layoutId, int drawableId) { 
     imageView = (ImageView) activity.findViewById(layoutId); 
     svg = SVGParser.getSVGFromResource(activity.getResources(), drawableId); 
     //Needed because of image accelaration in some devices such as samsung 
     imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
     imageView.setImageDrawable(svg.createPictureDrawable()); 
    } 
} 

Bây giờ tôi có thể gọi nó như thế này trong hoạt động:

SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain); 
    SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder); 
    SvgImage oceanSVG = new SvgImage(MainActivity.this, R.id.oceanImageView, R.drawable.ocean); 
    SvgImage fireSVG = new SvgImage(MainActivity.this, R.id.fireImageView, R.drawable.fire); 
    SvgImage windSVG = new SvgImage(MainActivity.this, R.id.windImageView,R.drawable.wind); 
    SvgImage universeSVG = new SvgImage(MainActivity.this, R.id.universeImageView,R.drawable.universe); 
+3

Bạn nên cân nhắc đánh dấu câu trả lời của riêng mình như được chấp nhận thay vì câu trả lời trước đó –

+0

Khi tôi cố gắng thêm tệp SVG, tôi nhận được thông báo lỗi, Lỗi: Tên tệp phải kết thúc bằng .xml hoặc. png –

+1

Tại sao 'imageView'' tĩnh'? Tôi thấy một lá cờ lỗi màu đỏ hugh ở đây. 'SvgImage rainSVG = new SvgImage (MainActivity.this, R.id.rainImageView, R.drawable.rain); SvgImage thunderSVG = mới SvgImage (MainActivity.this, R.id.thunderImageView, R.drawable.thunder); ' rainSVG tham chiếu có chứa thunderImageView – DSchmidt

9

Android Studio hỗ trợ SVG từ 1.4 onwards

Đây là video trên how to import.

+0

cảm ơn Pradeep! – commonSenseCode

+0

Đây là câu trả lời hay nhất. Android Studio làm cho nó trở nên cực kỳ dễ dàng! – dustinrwh

30

Trước tiên, bạn cần nhập svg tệp bằng cách làm theo các bước đơn giản.

  1. Nhấp chuột phải vào drawable
  2. Bấm mới
  3. Chọn Vector Asset

Nếu hình ảnh có sẵn trong máy tính của bạn sau đó chọn địa phương svg tập tin. Sau đó chọn đường dẫn hình ảnh và một tùy chọn để thay đổi kích thước của hình ảnh cũng có sẵn ở phía bên phải của hộp thoại nếu bạn muốn. theo cách này svg hình ảnh được nhập khẩu trong dự án của bạn Sau đó cho việc sử dụng hình ảnh này sử dụng các thủ tục tương tự

@drawable/yourimagename 
+0

Câu trả lời ngắn và hữu ích, không đau đầu khi bạn nhập các tệp svg bên ngoài vào dự án. – CodeToLife

+0

chính xác những gì tôi đang tìm kiếm :) – mohnage7

+0

nút 'Tiếp theo' luôn bị tắt. bất kỳ ý tưởng tại sao? – mrid

1

Thử SVG2VectorDrawable Plugin. Vào Preferences-> Plugins-> Browse Plugins và cài đặt SVG2VectorDrawable. Tuyệt vời để chuyển đổi các tệp sag thành vector có thể vẽ được. Khi bạn đã cài đặt, bạn sẽ tìm thấy biểu tượng cho mục này trong phần thanh công cụ ở bên phải biểu tượng trợ giúp (?).

0

Thay vì thêm thư viện làm tăng kích thước gói ứng dụng của bạn, tôi sẽ đề nghị bạn chuyển đổi Svg thành drawable bằng cách sử dụng http://inloop.github.io/svg2android/. và thêm vectorDrawables.useSupportLibrary = true bằng màu,

Các vấn đề liên quan