0

Android のカスタム ウィジェットのキャンバスで Bitmap.createScaledBitmap を使用すると問題が発生します。ウィジェットは、指定されたリソースのスケーリングされた非アンチエイリアス バージョンを表示することになっています。

widgets クラスに次のコードがあります。

protected void onDraw(Canvas canvas) { super.onDraw(canvas); Bitmap bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.btn); bmp = Bitmap.createScaledBitmap(bmp, bmp.getWidth()*3, bmp.getHeight()*3, false); canvas.drawBitmap(bmp, 0, 0, null); }

createScaledBitmap の「false」パラメータは、アンチエイリアス フィルタリングをオフにすることになっています。結果はスケーリングされますが、滑らかです。値を「true」に変更しても違いはありません。

私が望む結果を達成する別の方法はありますか?

4

1 に答える 1

1

いろいろいじった後、問題は getResources() を介してビットマップを取得しているようです。どの描画方法が使用されても、それらは常にフィルタリングされます。

私の回避策は、すべての画像を /assets フォルダーに配置し、getAssets() を介してプルすることでした。(これがどれほど悪い習慣なのかはまだわかりません...)

于 2018-04-04T08:08:17.477 に答える