2

ImageViewを拡張するカスタムビューを作成しました。ビューポートが小さいベクトル描画可能オブジェクトを設定すると、イメージがぼやけていることがわかります。 ImageViewだけを使用していると、ベクトル画像が鮮明であると見られています。ImageViewでVectordrawableのぼやけたビットマップ

私のカスタムビューでは、 "setImageDrawable"をオーバーライドします。ここでスーパーを呼び出してから描画可能なビットマップを後でonDrawに描画します。ここで

は、私はあなたがビューの幅と高さではなく、描画可能を取得し、描画可能範囲としてこれらを使用する必要が

public Bitmap getBitmapFromDrawable(Drawable drawable) { 
     Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), 
        drawable.getIntrinsicHeight(), 
        Bitmap.Config.ARGB_8888); 

     Canvas canvas = new Canvas(bitmap); 
     drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); 
     drawable.draw(canvas); 
     return bitmap; 
} 

答えて

1

ビットマップに変換しています方法です。私はあなたのビューの次元が時間の経過と共に変化すると考えていますので、これは一度だけの作業ではありません。ドロウアブルをメンバフィールドに保存します:

private Drawable drawable; 

    @Override 
    public void setImageDrawable(Drawable drawable) { 
     this.drawable = drawable; 
     this.drawable.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight()); 
     // invalidate if needed 
    } 

    @Override 
    protected void onMeasure(int wms, int hms) { 
     super.onMeasure(wms, hms); 
     if (drawable != null) drawable.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight()); 
    } 

次にonDrawを描画してください。

関連する問題