android - 在android中绘制垂直线

标签 android

我尝试在 android 中绘制垂直线。

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);

    }

}

什么这只画一条线。我想做的是在整个屏幕上绘制这条线。我怎样才能做到这一点?它必须垂直绘制在屏幕的任何地方。它现在垂直绘制,但只有一个。

最佳答案

到目前为止,从您想要的用例来看,我看不出有任何理由让您为此使用自定义 View 。您可以设置启用重复的自定义背景:

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" />

然后为您的 View 设置背景:

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 应该是一个 20px(或者你想要的任何间距)宽的图像,右边是你的红线。

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

如果您绝对**必须**在代码中执行此操作,那么您只需循环绘制 Canvas 宽度即可。

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);
    }
}

关于android - 在android中绘制垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687329/

相关文章:

android - 在新控制台中停止推出 android 应用程序更新

Android 通知图标 - 黑白切换

java - 如何找出发送到 Android 中 SQLite 的查询?

android - 当在 webview 中按下后退按钮时,应用程序退出

android - Android 4.0 及以上版本的视频观看问题

android - 使用 jfeaturelib 计算 Haralick 特征

android - 从移动浏览器打开原生 Spotify 应用程序

android - donKey 监听器在模拟器上可以正常工作,但不能在 Android 设备上工作

构建 JSON 对象时的 Java/Android : java. lang.OutOfMemoryError

android - Google Analytics 减慢 Android 应用程序速度