77

私は Android プロジェクトに取り組んでおり、<vector>適応可能で動的であるため、アイコンを表示することを選択しましたが、API 21 以降を搭載した Android を実行しているデバイスでこのアプリを実行できます。<vector>私の質問は、 Androidの下位バージョン、つまりAPI 14などでどのように使用できるかです。ありがとう!

<!-- drawable/ic_android_debug_bridge.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="48dp"
    android:width="48dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path android:fillColor="@color/primaryColorDark"
        android:pathData="M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 `0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z" /></vector>
4

13 に答える 13

97

VectorDrawable は Lollipop より前に Support Library を介してサポートされていますが、使用方法はサポート ライブラリのバージョンによって異なります。また、すべての場合に機能するとは限りません。

役立つ図を作成しました(サポート ライブラリ 23.4.0 から少なくとも 25.1.0 まで有効)。

VectorDrawableチートシート

于 2017-01-25T17:08:18.317 に答える
19

VectorDrawable (SVG から作成) をプログラムで追加する必要がある場合は、次のように実行できます。

icon = VectorDrawableCompat.create(resources, R.drawable.ic_map_black_24dp, null)
于 2016-12-19T11:33:44.730 に答える
2

@2Deeの回答を完成させるためだけに:

VectorDrawable は API 20 以下では使用できません。公式の方法では png が生成され、これが BitmapDrawables になり、ベクター グラフィックスの概念が崩れます。

個人的には、xml ベクトルよりも svg の方が好きです。

  • このようなグラフィックは、Illustrator やその他の一般的なソフトウェアから直接エクスポートできます。
  • svg は変換、テキスト、マスクなどを適切にサポートします
  • すべてのプラットフォームで真にスケーラブルなベクター グラフィックス
  • より小さなサイズとより速いビルド

ベクター グラフィックスを使用するには、 https://github.com/BigBadaboom/androidsvgを試すことができます。これは、svg リーダーであり、svg 互換の ImageView です。

于 2015-12-28T16:26:46.703 に答える
1

Gradleのデフォルトで vectorDrawables.useSupportLibrary = trueを設定し、 AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);を設定した後。作成時の活動中

android:drawableleftの Textview でのクラッシュを回避するには、プログラムで drawble left を textview に設定します。たとえば、次のようにします。

 textview.setCompoundDrawablesWithIntrinsicBounds(R.drawable.movie, 0, 0, 0);
于 2019-03-02T17:41:11.637 に答える