Utilisation d'un SVG comme arrière-plan dessiné dans Android

J'essaie d'utiliser une image SVG (créée à l'aide d'Inkscape et enregistrée en tant que SVG simple) comme arrière-plan pour ma application. J'essaie de le faire en utilisant la bibliothèque svg-android . J'ai un fichier appelé background.svg en res/raw . Mon code ressemble à ceci:

 SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.background); Drawable pictureDrawable = svg.createPictureDrawable(); Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(), pictureDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap); LinearLayout backgroundLayout = (LinearLayout) findViewById(R.id.background); bitmapDrawable.setTileModeX(Shader.TileMode.REPEAT); backgroundLayout.setBackgroundDrawable(bitmapDrawable); 

Cependant, lorsque mon application démarre, rien ne s'affiche comme arrière-plan (autre que la couleur d'arrière-plan de la mise en page). Le fichier xml de ma mise en page est le suivant:

  • Nouveau bogue de la bibliothèque de conception Android avec AppBarLayout et la barre d'outils
  • Mettez l'objet comme intention pour la prochaine activité
  • Android FragmentTransaction.addToBackStack confusion
  • Quelle est la meilleure façon de créer l'élément qui se chevauche dans RecyclerView?
  • Android Obtenir l'orientation d'un Bitmap de caméra? Et reculer de 90 degrés
  • Est-il possible de décompiler un fichier Android .apk?
  •  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#aacceeff" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/background" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> > </LinearLayout> </LinearLayout> 

    METTRE À JOUR

    Il semble qu'il y ait un problème avec mon SVG. Cela pourrait être dû au fait que toutes les fonctionnalités ne sont pas prises en charge.

  • Mise en œuvre de l'effet Ripple à l'extérieur de ImageButton
  • Android registerOnSharedPreferenceChangeListener () provoque un crash dans une vue personnalisée
  • Comment puis-je envoyer un fichier dans Android à partir d'un appareil mobile vers un serveur en utilisant http?
  • Comment démarrer un projet Android avec un exemple de code téléchargé
  • Comment analyser la valeur booléenne JSON?
  • Activité de préférence sur la préférence Click Listener
  • 2 Solutions collect form web for “Utilisation d'un SVG comme arrière-plan dessiné dans Android”

    Le projet svg-android n'a pas été mis à jour depuis plus d'un an et il ne prend pas en charge SVG1.2 afin que les svgs générés par Inkscape (open-source) ne soient pas pris en charge.

    Il existe cependant une nouvelle bibliothèque svg Android: AndroidSVG

    Ils sont sur la version 1.2 et les travaux sur 1.3 sont actuellement en cours. Y compris la bibliothèque de jar peut inclure svgs dans les applications Android. Presque toutes les fonctionnalités svg sont incluses. Je ne suis pas encore parvenu à trouver un svg que je n'ai pas pu intégrer à l'aide de cette bibliothèque.

    Si vous incluez androidsvg from source (hg clone) dans votre projet en tant que module de bibliothèque, vous obtenez la classe SVGImageView qui est une extension d'ImageView afin d'ajouter svg à votre projet en utilisant les fichiers de mise en page xml comme suit:

     <com.caverock.androidsvg.SVGImageView xmlns:svg="http://schemas.android.com/apk/res-auto" android:layout_width="100dp" android:layout_height="50dp" svg:svg="filename.svg"/> 

    C'est tout. Tout ce que vous devez faire est de placer filename.svg dans le dossier des ressources et vous êtes prêt à partir.

    Il prend en charge l'API 8 et supérieure. Il y a eu quelques problèmes lors de l'utilisation de l'API <11, mais j'ai pu résoudre ces problèmes. Je les ai postées comme des problèmes sur la page du projet et les auteurs ont répondu en quelques minutes. Ils ont été ajoutés à la prochaine révision. Si vous avez des problèmes, reportez-vous aux problèmes résolus, faute de quoi je suis disponible pour répondre aux questions ici.

    PS La documentation et les exemples sur la page du projet sont excellents et la bibliothèque est une joie de travailler. Android et svg sont un mélange puissant.

    J'ai essayé un exemple en utilisant le code suivant et il montre l'arrière-plan correctement:

     LinearLayout root = (LinearLayout) findViewById(R.id.background); SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android_body); Drawable pictureDrawable = svg.createPictureDrawable(); root.setBackgroundDrawable(pictureDrawable); 

    Avez-vous essayé avec un autre svg?

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.