多对角线背景色
Multiple diagonal background color
我想要一个如下图所示的可绘制背景。
我应该如何创建它?
在您的布局背景中使用 drawable
XML 下面,根据您的应用需要更改 drawable
XML 下面的颜色。
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="@color/application_background"
android:endColor="@color/bright_red"
android:angle="45"/>
</shape>
</item>
</selector>
请参阅下文 Link 了解如何更改和使用上述代码。
您可以扩展目标 Drawable
class(也许 ColorDrawable
)。然后在draw(Canvas)
方法中画一个梯形Path
。调整 Paint
的透明度和颜色以改变效果。代码可能如下所示:
public class SDrawable extends ColorDrawable {
private Path mPath = new Path();
private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
public SDrawable() {
init();
}
public SDrawable(int color) {
super(color);
init();
}
private void init(){
mPaint.setColor(0x33ffffff);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
mPath.reset();
mPath.moveTo(0,0);
mPath.lineTo(canvas.getWidth()/2+50, 0);
mPath.lineTo(canvas.getWidth()/2, canvas.getHeight());
mPath.lineTo(0, canvas.getHeight());
mPath.lineTo(0, 0);
canvas.drawPath(mPath, mPaint);
}
}
我想要一个如下图所示的可绘制背景。
我应该如何创建它?
在您的布局背景中使用 drawable
XML 下面,根据您的应用需要更改 drawable
XML 下面的颜色。
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="@color/application_background"
android:endColor="@color/bright_red"
android:angle="45"/>
</shape>
</item>
</selector>
请参阅下文 Link 了解如何更改和使用上述代码。
您可以扩展目标 Drawable
class(也许 ColorDrawable
)。然后在draw(Canvas)
方法中画一个梯形Path
。调整 Paint
的透明度和颜色以改变效果。代码可能如下所示:
public class SDrawable extends ColorDrawable {
private Path mPath = new Path();
private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
public SDrawable() {
init();
}
public SDrawable(int color) {
super(color);
init();
}
private void init(){
mPaint.setColor(0x33ffffff);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
mPath.reset();
mPath.moveTo(0,0);
mPath.lineTo(canvas.getWidth()/2+50, 0);
mPath.lineTo(canvas.getWidth()/2, canvas.getHeight());
mPath.lineTo(0, canvas.getHeight());
mPath.lineTo(0, 0);
canvas.drawPath(mPath, mPaint);
}
}