2017-06-21 6 views
1

私はアンドロイドを初めて使っています。私はアプリケーションでベクトルdrawableを使用しようとしています。以下のコードは、Marshmallowバージョンまでうまく動作します。下位バージョンでも正常に動作します。しかし、私がノーガットでそれを動かすとすぐに、イメージはぼやけてしまいます。ANDROID NOUGATのBlurr画像を示すベクターの図表

マイbuild.gradle(プロジェクト)のバージョンが(アプリ)

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 25 
     vectorDrawables.useSupportLibrary = true 
    } 

サポートバージョンである2.0以上であると、私のbuild.gradleのコードの下に追加しました:

compile 'com.android.support:appcompat-v7:25.3.1' 
また

私が追加しました私のXMLでのonCreateメソッド

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 

で以下のコード:

<ImageView 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    app:srcCompat = "@drawable/ic_camera_black_24dp"/> 
+0

ImageView XMLに 'android:scaleType =" fitXY "'を追加しようとしましたか? – MatPag

+0

@MatPag素早い返答をありがとう。私もそれを試みましたが、すべて無駄でした。それでも画像はぼやけています。 – Matrix

+0

小さなサンプルプロジェクトをアセンブルしてgithubのリンクを提供できますか?最近のサポートライブラリで解決しなければならない、ベクトルドロアブルに過去に多くの問題があったので、私はこれについて興味があります。 – MatPag

答えて

1

私はあなたのコードで少し演奏しましたが、私が発見したのは、問題は同じアイコンの実際のサイズが違っているためです。具体的には、ImageViewのベクターアイコンは200x200dpで、同じアイコンはTextViewsetCompoundDrawablesRelativeWithIntrinsicBoundsというベクトルで、widthheightと定義されたベクターを使用してサイズを決定しています。 (あなたの場合は24dp)

この現象の主な理由は、このGoogleエンジニアの回答がhereであることです。

将来的に問題が発生したくない場合は、サイズが200x200dpと24x24dpの同じベクターアイコンを使用しないでください。パフォーマンスが最適化されるようにキャッシュされたビットマップが作成されるためです必要なサイズにする必要があります。その結果、一部のデバイスで画像がぼやけることがあります。

本当に異なるサイズで同じ正確なアイコンが必要な場合は、複数のVectorドロワブルを使用します。

PS:JPEGまたはPNGをベクター描画可能に変換する方法についてのご質問については、可能であればベクターを写真で作成しないようにすることができます(ベクターは非常に難しく高価です)小さなパスを使用している場合は、アイコンやロゴだけに使用されます

+0

"複数のPNG"と書いていますか?私は複数のVectorDrawablesをあなたが示唆したものにリンクしていると言っていたでしょう。 –

+1

はい、申し訳ありませんが、私は複数のベクトルリソースを意味する、私はすぐにそれを修正します – MatPag

+0

@MatPagありがとう。私は本当にイメージがぼやけている理由について本当に混乱していました。それは本当に良い説明だった。 :)。変換に関する質問 ** PNGのような小さなアイコンがあり、その小さなアイコンをベクターのドロウアブルに変換したい場合はどうすればいいですか? ** – Matrix

関連する問題