Java 使用画布自定义三角形,要将此视图放置在列表行中吗
我使用canvas创建了一个自定义三角形,我创建了一个类,如下所示:Java 使用画布自定义三角形,要将此视图放置在列表行中吗,java,android,android-canvas,Java,Android,Android Canvas,我使用canvas创建了一个自定义三角形,我创建了一个类,如下所示: @SuppressLint("DrawAllocation") public class GameView extends View { private Bitmap bmp; public GameView(Context context) { super(context); bmp = BitmapFactory.decodeResource(getResources(),
@SuppressLint("DrawAllocation")
public class GameView extends View {
private Bitmap bmp;
public GameView(Context context) {
super(context);
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.days2);
}
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setStrokeWidth(4);
paint.setColor(android.graphics.Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setAntiAlias(true);
paint.setShadowLayer(4.0f, 0.0f, 2.0f, Color.BLACK);
setLayerType(LAYER_TYPE_SOFTWARE, paint);
Point a = new Point(0, 0);
Point b = new Point(canvas.getWidth(), canvas.getHeight()/2);
Point c = new Point(canvas.getWidth(),0);
Path path = new Path();
path.setFillType(FillType.EVEN_ODD);
path.lineTo(b.x, b.y);
path.lineTo(c.x, c.y);
path.lineTo(a.x, a.y);
path.close();
canvas.drawPath(path, paint);
canvas.rotate(36);
paint.setColor(Color.WHITE);
paint.setTextAlign(Align.CENTER);
paint.setTextSize(50);
canvas.drawText("Vertical 45 degree text", (canvas.getHeight()/2)-30 ,0-30 , paint);
}
}
但是,当我在引用此类的XML中放置视图时,我希望将此形状应用于listview行。它占据了我整个版面的高度。这是我不想要的。如果在dp中指定高度,视图将被剪裁。如何克服这个问题
请不要介意onDraw中的obect分配,我会删除它并在我开始工作后进行优化 也许您可以共享ListView的xml文件。我解决了这个问题,这是我在绘制三角形时的错误,我必须使用
Point c=new Point(canvas.getWidth(),canvas.getHeight()/2)代码>而不是'Point c=新点(canvas.getWidth(),0);`这导致点C一直穿过x,中间穿过y:)