안드로이드에서 SVG를 사용하는 가장 쉬운 방법?


165

안드로이드에서 svg를 사용하고 각 해상도마다 다른 해상도를 만들고 파일을 삭제하는 것을 피하기 위해 무수한 라이브러리를 찾았습니다. 앱에 많은 아이콘이나 이미지가 있으면 매우 성가 시게됩니다.

누구나 안드로이드에서 SVG를 사용하기 위해 라이브러리를 사용하는 가장 간단한 프로세스를 단계별로 제공 할 수 있다면 친절 할 수 있습니다. 많은 사람들도 도움이 될 것입니다.

또한 아이콘과 이미지를 생성하기 위해 Android Studio 및 Illustrator를 사용합니다.



android studio에서 svg를 가져 오는 방법에 대한 짧은 비디오 : youtube.com/watch?v=8e3I-PYJNHg
Zohab Ali

답변:


337

먼저 svg간단한 단계를 수행하여 파일 을 가져와야 합니다.

  1. 드로어 블을 마우스 오른쪽 버튼으로 클릭
  2. 새로 클릭
  3. 벡터 자산 선택

컴퓨터에서 이미지를 사용할 수 있으면 로컬 svg파일 을 선택 하십시오. 그런 다음 이미지 경로를 선택하고 이미지 크기를 변경하는 옵션을 원하는 경우 대화 상자의 오른쪽에서도 사용할 수 있습니다. 이런 식으로 svg프로젝트에서 이미지를 가져옵니다.이 이미지를 사용하기 위해 동일한 절차를 따릅니다.

@drawable/yourimagename

5
외부 svg 파일을 프로젝트로 가져올 때 두통없이 짧고 유용한 답변.
CodeToLife

2
내가 찾던 정확히 :)
Mohamed Nageh

5
Next버튼을 항상 사용할 수 없습니다. 왜 그런지 알아?
mrid

그렇다면 svg의 색상을 어떻게 변경합니까?
Oniya Daniel

매력처럼 작동합니다. 좋은!
sud007

19

업데이트 : 이 오래된 대답을 사용 하지 말고 더 잘 사용하십시오 : https://stackoverflow.com/a/39266840/4031815

몇 시간의 연구 끝에 svg-android 가 사용하기 쉽다는 것을 알았으므로 단계별 지침을 여기에 남겨 둡니다.

  1. https://code.google.com/p/svg-android/downloads/list 에서 lib를 다운로드 하십시오 . 작성 시점의 최신 버전은 다음과 같습니다.svg-android-1.1.jar

  2. 항아리를 libdir에 넣으십시오 .

  3. * .svg 파일을 res/drawabledir에 저장하십시오 (Illustrator에서는 다른 이름으로 저장을 누르고 svg를 선택하는 것만 큼 쉽습니다).

  4. 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());



상용구 코드를 다음과 같이 줄일 수 있습니다

다음과 같이 과거 코드를 포함하고 상용구 코드를 줄이기 위해 간단한 클래스를 만들었습니다.

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());
    }
}

이제 활동에서 다음과 같이 호출 할 수 있습니다.

    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
대신 이전의 인정으로 당신은 당신의 자신의 대답을 표시 고려해야한다
클리프 버튼

1
SVG 파일을 추가하려고 할 때 오류가 발생합니다. 오류 : 파일 이름은 .xml 또는 .png로 끝나야합니다.
Sujay UN

1
왜 그렇 imageView static습니까? 휴 빨간 버그 플래그가 여기에 있습니다. SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain); SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder); rainSVG는 참조 thunderImageView 포함 않는다
DSchmidt

@DSchmidt는 이미지 뷰에 대한 포인터 일뿐입니다. 내 코드라면 LoadSVG라는 하나의 메소드로 전체 클래스를 정적으로 만들 것입니다. 보시다시피 액세스 할 수없는 개인 변수에 데이터를로드 할 지점이 없습니다.
Nasreddine Galfout



3

SVG2VectorDrawable 플러그인을 사용해보십시오. 환경 설정-> 플러그인-> 플러그인 찾아보기로 이동하여 SVG2VectorDrawable을 설치하십시오. 새그 파일을 벡터 드로어 블로 변환하는 데 좋습니다. 설치 한 후에는 도움말 (?) 아이콘의 오른쪽에있는 도구 모음 섹션에이 아이콘이 있습니다.


SVG 파일 경로는 플러그인으로 업로드되지 않습니다. 위의 가장 좋은 대답은 훨씬 간단하고 작업을 완료하는 것입니다.
DaveNOTDavid

훌륭한 플러그인-많은 svg를 벡터 드로어 블로 빠르게 변환했습니다!
Morten Holmgaard

2
  1. 안드로이드 프로젝트에서 사용하려면 SVG를 XML로 변환해야합니다.

1.1이 사이트 http://inloop.github.io/svg2android/ 에서이 작업을 수행 할 수 있지만 일부 그라디언트와 같은 SVG의 모든 기능을 지원하지는 않습니다.

1.2 안드로이드 스튜디오를 통해 변환 할 수 있지만 API 24 이상 만 지원하는 일부 기능을 사용하면 구형 장치에서 응용 프로그램이 충돌 할 수 있습니다.

vectorDrawables.useSupportLibrary = truegradle 파일에 추가 하고 다음과 같이 사용하십시오.

<android.support.v7.widget.AppCompatImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:srcCompat="@drawable/ic_item1" />
  1. 이러한 기능을 지원 하는이 라이브러리 https://github.com/MegatronKing/SVG-Android 를 사용하십시오 . https://github.com/MegatronKing/SVG-Android/blob/master/support_doc.md

이 클래스를 응용 프로그램 클래스에 추가하십시오.

public void onCreate() {
    SVGLoader.load(this)
}

SVG를 다음과 같이 사용하십시오 :

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_android_red"/>

@Pallavi의 직선 접근 방식을 사용할 때 왜 SVG 로더를 사용합니까? 로더를 사용하면 어떤 이점이 있습니까?
Taslim Oseni

@Taslim 지원되는 기능은 일반적인 방법보다 더 있습니다. 지원되는 기능과 참조를 볼 수 있습니다.
sajad abbasi

0

1) 드로어 블 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기로 이동 한 다음 벡터 자산으로 이동 2) 클립 아트에서 로컬로 자산 유형 변경 3) 파일 찾아보기 4) 크기 지정 5) 다음을 클릭 한 다음 완료 사용 가능한 svg가 드로어 블로 생성됩니다 예배 규칙서

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