私はカスタムDrawableオブジェクトを作成する必要があります。私はこのカスタムドロアブルに、例えばビューのバックグラウンドとして適用されるグラデーションを表示します。これを行うには、Drawableクラスのdrawメソッドをオーバーライドします。私CustomDrawableクラスのコードは次のようになります。私はのonCreateメソッドの私のウィンドウの背景として、この描画可能に割り当てるときプログラムで作成されたAndroid Drawableオブジェクトはuggly(スケーリング)です
public void draw(Canvas canvas) {
Rect clipBounds = canvas.getClipBounds();
Paint rectanglePaint = new Paint();
LinearGradient lg = new LinearGradient(0,0,0,clipBounds.height(),0xff838383,0xff242424,Shader.TileMode.CLAMP);
rectanglePaint.setShader(lg);
RectF rectangle = new RectF(0f,0.0f, clipBounds.width(), clipBounds.height()); //in pixels
canvas.drawRoundRect(rectangle, 0f, 0f, rectanglePaint);
}
問題が表示されます。グラデーションは問題なく表示されますが、スケーリングされているように見えますが、実際には醜いようです。
奇妙なことは純粋にXMLで同等の描画可能なものを作成していて、これをレイアウトXMLの背景として直接割り当てます。この醜い縮尺の効果はありません(私はちょうどこの次の行 "window.setFormat(PixelFormat .RGBA_8888); ")
私はこれをプログラムで行うと同じ結果にならないのはなぜですか?
すべてのアイデアは本当に感謝しています! ありがとう;)
お試しいただけますか:ペイントrectanglePaint =新しいペイント(Paint.ANTI_ALIAS_FLAG); – Lumis
私は試しましたが、結果は残念なことに同じです... – ayorosmage
なぜ、私はちょうど推測しています...理論の1つの理由は、drawableのキャンバスのサイズが実際のそれを使用するビュー。 – Lumis