0

に私はVectorDrawable(XML用画像)からBitmapを取得しようとしている:VectorDrawable:Bitmap.setHasAlpha(ブール値)」nullオブジェクト参照

VectorDrawable vectorDrawable = (VectorDrawable) ContextCompat.getDrawable(mContext, R.drawable.test); 

Bitmap bitmap = UtilMethods.getBitmapFromVector(vectorDrawable); 

しかし、アプリがクラッシュBitmap.createBitmap法にCaused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.Bitmap.setHasAlpha(boolean)' on a null object referenceエラーで

public static Bitmap getBitmapFromVector(VectorDrawable vectorDrawable) { 
     Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), 
       vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); 
     Canvas canvas = new Canvas(bitmap); 
     vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); 
     vectorDrawable.draw(canvas); 
     return bitmap; 
    } 

ps

ここ
compile 'com.android.support:appcompat-v7:25.3.1' 
compile 'com.android.support:support-v4:25.3.1' 

いくつかの単純なXML描画可能(カンマ記号)

<?xml version="1.0" encoding="utf-8"?> 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:width="16000dp" 
    android:height="16000dp" 
    android:viewportWidth="16000" 
    android:viewportHeight="16000"> 


    <path 
     android:fillColor="#040607" 
     android:strokeWidth="1" 
     android:pathData="M3637 11910 l486 -730 484 0 c265 0 483 3 483 8 0 4 -130 331 -288 727 l-288 720 
-682 3 -682 2 487 -730z" /> 

</vector> 

私はそれらのすべてが、この.createBitmap方法

に失敗しGetting Bitmap from vector drawable からすべての方法を試してみました

android:width="16000dp" 
android:height="16000dp" 
android:viewportWidth="16000" 
android:viewportHeight="16000"> 
のようです

は大きな値になります...

は、私はより多くのpathタグが存在し、いっぱいになっていないXMLを追加しましたので、それだけでこのような大きな値:)私は2000(例えば)に値を削減しようとしましたが、アプリがクラッシュ停止

のシンボルをコンマではないが、それは私はあなたがあなたのアプリケーションを実行しているディスプレイの密度に基づいて、16000x16000dpビットマップを割り当てるしようとしているhttp://inloop.github.io/svg2android/

+0

あなたはそれが何であるかのようにあなたのイメージを、台無しに言うとき台無し?サイズを変更するには、幅と高さの属性を変更するだけで、viewportWidthとviewportHeightをそのままにしてください。 –

答えて

0

変更

android:width="16000dp" 
android:height="16000dp" 

はchagneする必要はありません。

android:viewportWidth="16000" 
android:viewportHeight="16000"> 
0

を使用してSVGからベクトル描画可能に作られた私のイメージ

を台無しにし、係数を掛けなければなりませんxhdpiは2、xxhdpiは3、xxxhdpiは4です。 1000MBを超えるビットマップを割り当てようとしているため、メモリの問題が発生します。

Drawableを縮小する必要があります。 SVGやsvg2androidの出力にエラーがないかどうかを確認することをお勧めします。

また、GL_MAX_TEXTURE_SIZE以上のビットマップをImageViewに挿入することはできません。 参照:

android:width="24dp" 
android:height="24dp" 

から"Bitmap too large to be uploaded into a texture"

関連する問題