在安卓中绘制垂直线条

5

我尝试在安卓系统中绘制垂直线。

DrawView drawView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    drawView = new DrawView(this);
    setContentView(drawView);

}

public class DrawView extends View {
    Paint paint = new Paint();

    public DrawView(Context context) {
        super(context);
        paint.setColor(Color.RED);
    }

    @Override
    public void onDraw(Canvas canvas) {
            canvas.drawLine(0, 100, 0, 0, paint);

    }

}

如何在整个屏幕上绘制一条线?目前只能绘制一条竖直的线,但需要在整个屏幕上绘制。请问该如何实现?


你到底想做什么?我的意思是,为什么你想在屏幕上画垂直线?而且你所说的“到处”是什么意思?如果你在“到处”画线(就我理解的),那就相当于把整个屏幕都设置成红色。 - m0skit0
我只是想知道,你为什么要问那个? - user2205733
因为也许那并不是解决您问题的正确方法。无论如何,您所说的“到处”是什么意思? - m0skit0
这就是我想要的。很抱歉,由于我的等级限制,我无法在此上传图片。 - user2205733
每行之间您想要多少间隔? - m0skit0
请查看Canvas#drawLines - m0skit0
1个回答

4

从您所需的使用情况来看,我认为您没有理由使用自定义视图。您可以启用重复设置自定义背景:

res/drawable/MyBackground.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/lines_image"
    android:tileMode="repeat" />

接下来,设置您的视图背景:

res/layout/whatever.xml

<View
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/MyBackground" />

或者

myView.setBackgroundResource(R.drawable.MyBackground);

lines_image.png应该是一张20像素宽的图片(或者你想要的间距大小),且你的红线在右侧。

这是UI开发中一个重要的概念。如果简单的图片解决方案足够的话,不要在代码中做复杂的事情。

如果你绝对必须在代码中完成这个任务,那么你可以在画布的宽度上循环绘制。

private static final int LINE_SPACING = 20;

@Override
public void onDraw(Canvas canvas) {
    for (int x = 0; x < canvas.getWidth(); x += LINE_SPACING) {
        canvas.drawLine(x, 0, x, canvas.getHeight(), paint);
    }
}

@user2205733 示例已添加 - 您也可以在代码中设置背景,但我也添加了画布方法。 - JRaymond
我可以问一个问题吗?如果用户使用纵向模式,我能否在这里添加画布? - user2205733
@user2205733 在旋转后,屏幕上任何视图的onDraw方法将再次被调用(除非您特别中断它),并提供一个新的画布。因此,如果在纵向模式下,您的画布大小为768x1024,则在旋转后,您的onDraw将再次使用大小为1024x768的画布进行调用。 - JRaymond
这个怎么也可以变成水平的? - user2205733
我需要改变哪个参数才能做到这一点? - user2205733
@user2205733 是指制作盒子吗?还是指横向或纵向的任意一种方式? - JRaymond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接