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