Android'de SVG kullanmanın en kolay yolu?


165

Android'de svg kullanmak ve farklı çözünürlüklerin sinir bozucu oluşturulmasını ve her çözünürlük için dosyaların bırakılmasını önlemek için sayısız kütüphane buldum, uygulama birçok simge veya resme sahip olduğunda bu çok can sıkıcı bir hale geliyor.

Herkes Android SVG kullanmak için kullanımı en kolay kütüphane adım adım bir süreç vermek gibi nazik olabilir, eminim bu pek çok yardımcı olacaktır.

Ayrıca simgelerimi ve resimlerimi oluşturmak için Android Studio ve Illustrator kullanıyorum.



Android Studio'da
SVG'yi

Yanıtlar:


337

Öncelikle svgbasit adımları izleyerek dosyaları içe aktarmanız gerekir .

  1. Çekilebilir üzerine sağ tıklayın
  2. Yeni tıklayın
  3. Vektör Varlığını Seçin

Bilgisayarınızda görüntü varsa, yerel svgdosyayı seçin . Bundan sonra görüntü yolunu seçin ve isterseniz görüntünün boyutunu değiştirme seçeneği iletişim kutusunun sağ tarafında da bulunur. bu şekilde svggörüntü projenize aktarılır Bundan sonra bu görüntüyü kullanmak için aynı prosedürü kullanın

@drawable/yourimagename

5
Projeye harici svg dosyalarını içe aktardığınızda baş ağrısı olmadan kısa ve kullanışlı bir cevap.
CodeToLife

2
tam olarak aradığım şey :)
Mohamed Nageh

5
Nextdüğmesi her zaman devre dışıdır. neden herhangi bir fikir?
mrid

Peki, svg'nin rengini nasıl değiştirebiliriz?
Oniya Daniel

Tıkır tıkır çalışıyor. Güzel!
sud007

19

GÜNCELLEME: Bu eski cevabı KULLANMAYIN , daha iyi kullanın: https://stackoverflow.com/a/39266840/4031815

Tamam araştırma birkaç saat sonra svg-android kullanımı oldukça kolay buldum , bu yüzden burada adım adım talimatları terk ediyorum:

  1. lib'i şu adresten indirin: https://code.google.com/p/svg-android/downloads/list Bunu yazarken en son sürüm:svg-android-1.1.jar

  2. Kavanoza koy lib.

  3. * .Svg dosyanızı dizine kaydedin res/drawable(Illustrator uygulamasında Farklı kaydet'e basmak ve svg'yi seçmek kadar kolaydır)

  4. Svg kitaplığını kullanarak etkinliğinizde aşağıdakileri kodlayın:

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



Isı yalıtım levhası kodunu bu şekilde azaltabilirsiniz

Çok kolay ben geçmiş kodu içeren basit bir sınıf yaptı ve boilerplate kodunu azaltmak, şöyle:

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

Şimdi faaliyette şöyle diyebilirim:

    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
Kendi cevabınızı bir öncekinin yerine kabul edilmiş olarak işaretlemeyi düşünmelisiniz
Cliff Burton

1
SVG dosyaları eklemeye çalıştığımda hata
mesajı

1
Neden imageView static? Burada kırmızı bir böcek bayrağı görüyorum. 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 referans thunderImageView içermiyor
DSchmidt

@DSchmidt, bu sadece görüntüleme için bir işaretçi. Benim kod olsaydı ben LoadSVG adlı bir yöntemle tüm sınıfı statik yapar. Gördüğünüz gibi, erişilemeyen özel değişkenlere veri yükleme noktası yoktur.
Nasreddine Galfout



3

SVG2VectorDrawable Eklentisini deneyin. Tercihler-> Eklentiler-> Eklentilere Gözat'a gidin ve SVG2VectorDrawable'ı yükleyin. Sag dosyalarını vektör çizilebilir dönüştürmek için harika. Yükledikten sonra, yardım (?) Simgesinin sağındaki araç çubuğu bölümünde bunun için bir simge bulacaksınız.


Benim için çalışmıyor - SVG dosya yolu eklentiye yüklenmiyor. Yukarıdaki en iyi cevap çok daha basittir ve işi yapar.
DaveNOTDavid

Büyük eklenti - hızlı bir şekilde birçok svg en vektör çizilebilir dönüştürüldü!
Morten Holmgaard

2
  1. android projede kullanmak için SVG XML dönüştürmek gerekir.

1.1 bunu bu site ile yapabilirsiniz: http://inloop.github.io/svg2android/ ancak bazı gradyanlar gibi SVG'nin tüm özelliklerini desteklemez.

1.2 android studio üzerinden dönüştürebilirsiniz, ancak sadece API 24 ve daha üstünü destekleyen bazı özellikleri kullanabilir;

ve vectorDrawables.useSupportLibrary = truegradle dosyası ekleyin ve şöyle kullanın:

<android.support.v7.widget.AppCompatImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:srcCompat="@drawable/ic_item1" />
  1. şu özellikleri destekleyen bu kütüphaneyi kullanın https://github.com/MegatronKing/SVG-Android : https://github.com/MegatronKing/SVG-Android/blob/master/support_doc.md

bu kodu uygulama sınıfına ekleyin:

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

ve SVG'yi şu şekilde kullanın:

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

@ Pallavi'nin düz yaklaşımı olduğunda neden bir SVG yükleyici kullanıyorsunuz? Yükleyici kullanmanın herhangi bir avantajı var mı?
Taslim Oseni

@Taslim desteklenen özellikler normalden daha fazladır. desteklenen özellikleri görebilir ve görebilirsiniz.
sajad abbasi

0

1) Çekilebilir dizinde sağ tıklayın ve ardından yeni öğelere gidin 2 vektör öğelerine gidin 2) küçük resimden yerel resme geçin 3) dosyanıza göz atın 4) boyut 5 verin) sonra tıklayın ve sonra tamamlayın rehber

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.