画像の複数のレイヤー、テキスト付きのレイアウト、図面などを含むカスタムビューがあります。ビューのコーナーの1つを丸くします(右上隅)。つまり、このコーナーをトリミングして丸くしたいのですが、丸いコーナーの背景を設定するのではありません。
を使用してそれを行うことができましたclipPath()
が、このビューのハードウェアアクセラレーションを変更する必要があったため、実行速度が遅くなりました。したがって、このソリューションは私には適していません。
それを行う他の方法はありますか?
画像の複数のレイヤー、テキスト付きのレイアウト、図面などを含むカスタムビューがあります。ビューのコーナーの1つを丸くします(右上隅)。つまり、このコーナーをトリミングして丸くしたいのですが、丸いコーナーの背景を設定するのではありません。
を使用してそれを行うことができましたclipPath()
が、このビューのハードウェアアクセラレーションを変更する必要があったため、実行速度が遅くなりました。したがって、このソリューションは私には適していません。
それを行う他の方法はありますか?
そのカスタムビュー用に透明なキャンバスを作成する場合、これは問題にはなりません。次に、残りのグラフィックの前に、背景として丸みを帯びた長方形を描画します。
丸みを帯びた長方形は、キャンバスよりも大きく、キャンバスの右上隅が透明に保たれるように左にシフトする必要があります。
ただし、カスタムビューでより大きな画像を描画し、そのコーナーをクリップするだけで、そのコーナーをペイントで塗りつぶされたコーナーシェイプで消去することができます。
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));