如何绘制箭头(在 Android 中)?

2024-03-01

我对 Android 相当陌生,一直在尝试 Canvas。我正在尝试绘制箭头,但我只是运气好地绘制了轴,所有箭头都不起作用。

我搜索了一下,找到了一个Java示例,但是Android没有GeneralPath or AffineTransform.

现在我的代码如下所示(箭头看起来一点也不像箭头):

public class DrawableView extends View {
    Context mContext;
    private int centerX;
    private int centerY;
    private int radius;
    private double arrLength;
    private double arrHeading;
    private int margin = 10;

    public DrawableView(Context context) {
        super(context);
        mContext = context;
    }


    @Override
    protected void onDraw(Canvas canvas) {
        //Paint Background
        Paint background = new Paint();
        background.setColor(getResources().getColor(R.color.background);
        canvas.drawRect(0, 0, getWidth(), getHeight(), background);

        //Set vars for Arrow Paint
        Paint paint = new Paint();
        paint.setColor(getResources().getColor(R.color.arrowColor);
        centerX = getWidth() / 2;
        centerY = getHeight() / 2;
        arrLength = radius - 10;

        if(centerX < centerY)
            radius = centerX - margin;
        else 
            radius = centerY - margin;

        //Draw Shaft
        int[] xy = findArrowPos(arrLength, arrHeading);
        canvas.drawLine(centerX, centerY, xy[0], xy[1], paint);

        //Draw ArrowHead
            //This is where I'm confused

    }

    private int[] findArrowPos(double length, double angle) {
        int[] points = new int[2];
        double theta = Math.toRadians(angle);
        points[0] = centerX + (int) (length * Math.cos(theta));
        points[1] = centerY + (int) (length * Math.sin(theta));
        return points;
    }
}

我查看了以下线程以获取指导:
* http://www.java-forums.org/awt-swing/6241-how-u-rotate-arrow-mark-line-moves-accordingly.html http://www.java-forums.org/awt-swing/6241-how-u-rotate-arrow-mark-line-moves-accordingly.html
* 如何在Java中绘制有向箭头线? https://stackoverflow.com/questions/2027613/how-to-draw-a-directed-arrow-line-in-java


如何使用“Path myPath = new Path();”您可以在其中给出 x 和 y 位置,以使用线条创建三角形并填充它。您可以阅读相关内容,这是我从某处获取的示例。

// create and draw triangles
// use a Path object to store the 3 line segments
// use .offset to draw in many locations
// note: this triangle is not centered at 0,0
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.RED);
Path path = new Path();
path.moveTo(0, -10);
path.lineTo(5, 0);
path.lineTo(-5, 0);
path.close();
path.offset(10, 40);
canvas.drawPath(path, paint);
path.offset(50, 100);
canvas.drawPath(path, paint);
// offset is cumlative
// next draw displaces 50,100 from previous
path.offset(50, 100);
canvas.drawPath(path, paint);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何绘制箭头(在 Android 中)? 的相关文章

  • Java 中 static 关键字如何工作?

    我正在阅读Java教程 http docs oracle com javase tutorial index html从一开始我就有一个问题static字段或变量上的关键字 作为Java said here http docs oracle
  • 错误:包 com.google.android.gms.appstate 不存在

    由于此错误 无法编译我的 android 项目 BaseGameUtils src main java com google example games basegameutils GameHelper java Error 32 39 e
  • Android 应用程序 Phonegap 中的 Admob 实现

    我将一个 jquery 脚本转换为 Android 应用程序 现在我想将 admob 添加到其中 这可能吗 谷歌从那时起禁止在移动应用程序中使用 AdSense 在移动应用程序中使用 AdSense 移动广告违反了 AdSense 政策 移
  • ViewPager 的 Android Viewholder

    您好 我正在使用 ViewPager 但我现在想保留状态 而不是重新生成单元格 我注意到 viewpager 与 listviews 的自定义适配器非常相似 它们的功能类似 listview 在单元格不再出现在屏幕上后重新生成单元格中的数据
  • 膨胀类片段 InflateException 二进制 XML 文件时出错

    我正在使用 Material Design 和 NavigationDrawer 布局等设计我的第一个应用程序 但我遇到了一个问题 该应用程序非常简单 它只显示文本 并且基于 Android Studio 中提供的模板 尝试启动我的应用程序
  • C++ 中的 Java ArrayList [重复]

    这个问题在这里已经有答案了 在Java中我可以做 List
  • 更改弹出对话框的背景颜色

    我编写了显示弹出对话框的 android 代码 但我想将背景颜色从黑色更改为白色 然后更改文字颜色 这是对话框的代码 mPrefs PreferenceManager getDefaultSharedPreferences this Boo
  • 在 netBeans 中运行程序时,字体看起来非常奇怪

    我在我的新 MacBook M1 上设置了 netBeans 和 SceneBuilder 除了运行程序时的字体外 一切正常 它看起来像这样 我不知道为什么 按钮应显示 Click me 标签应显示 Hello 我收到的错误消息是 M rz
  • 在Android中绘制圆角矩形

    我已经发现这个问题 https stackoverflow com questions 5618402 how to draw rounded rectangle in android ui解决方案是这段代码
  • 如何将任务添加到 gradle 中的主要“构建”任务

    当我尝试使用以下代码将任务添加到主构建任务时 rootProject tasks getByName build dependsOn mytask 当我跑步时它抱怨gradle w build输出 Where Build file line
  • Android 4 上的 html5 视频:全屏播放然后重定向到另一个网页 - 不起作用

    我正在为 Android 4 智能手机设计一个 html5 页面 其中包含一个 3gpp 或 mp4 视频 打开时必须自动全屏播放 当视频结束时应该重定向到另一个网址 一些谷歌搜索告诉我 Android 4 上不再允许自动播放 因此我选择显
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • Android 和 iPhone 应用程序可以使用同一个 Facebook 应用程序 ID 吗?

    我有两个具有相同名称和相同功能的应用程序 一款在安卓市场 一款在应用商店 目前仅通过 iPhone 应用程序 您可以使用我创建的 Facebook 应用程序将您的分数发布到 Facebook 墙上 我的问题是我可以使用相同的 Android
  • 在运行时用Dagger添加Retrofit RequestInterceptor

    我正在使用匕首和改装 我用 Dagger 注入我的 Retrofit 服务 现在我想做一个授权请求来获取 accessToken 之后 我想使用请求拦截器来增强我的 api 模块 以便将此访问令牌用于将来的请求 我的想法是在收到访问令牌后使
  • 设计抽象类时是否应该考虑序列化问题?

    一般来说这个问题来自Eclipse建议在抽象类上添加串行版本UID 由于该类是抽象类 因此该类的实例永远不会存在 因此它们永远不会被序列化 只有派生类才会被序列化 所以我的问题是放置一个安全 SuppressWarnings serial
  • Android 等距游戏引擎 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否有任何现有的开源或商业解决方案
  • Java中的媒体播放器库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在评估用于在 Java 中播放音频 视频的库 它不需要 100 Java Java 与本机库的绑定
  • 当我在 Java 中输入 IP 时无法连接到我的服务器

    好的 我正在尝试学习 Java 客户端 服务器的内容 并且正在浏览教程代码 如下所示 当我将 localhost 更改为我的 IP 时 它会停止工作 请帮忙 编辑 127 0 0 1 似乎也可以工作 但不是我的真实IP Copyright
  • 编译时在代码中替换Java静态最终值?

    在java中 假设我有以下内容 fileA java class A public static final int SIZE 100 然后在另一个文件中我使用这个值 fileB java import A class b Object t
  • 有什么方法可以禁用/覆盖 Galaxy Tab 4 上的多任务按钮吗? [复制]

    这个问题在这里已经有答案了 我们编写了一个工业控制应用程序 并随我们的制造产品预装在三星 Galaxy 平板电脑上 我们使用的平板电脑是运行 Honeycomb 的 Tab 10 但我们无法再获得足够的 OEM 平板电脑 因此我们改用运行

随机推荐

  • putback() 和 unget() 之间的区别

    我正在使用标准 iostream 从文件中获取一些输入 但我很困惑unget versus putback character 从文档中我看来这些功能实际上是相同的 其中unget 只记得输入的角色 所以我很紧张 我一直用putback c
  • Hazelcast 服务器作为 Linux 服务

    如何在生产环境中将 hazelcast 服务器作为 Linux 服务运行 java server cp hazelcast jar com hazelcast examples StartServer StartServer 运行服务器并输
  • 根据列名列表将数据表拆分为多个数据表

    我有一个如下所示的数据表 ID Country Supplier 515 DE A 515 CH A 515 FR A 516 DE B 516 FR B 517 DE C 517 IT C 我有一个List
  • PhantomJS 使用 QtWebKit 还是 Blink?

    PhantomJS CasperJS 是否使用 WebKit 或 Chromium 作为默认浏览器驱动程序 如果是WebKit 是直接WebKit还是qt或者gtk PhantomJS 基于 QtWebKit 常见问题解答说 问 Phant
  • 使用react和mapbox gl或maplibre gl动态加载标记

    我正在学习 React 我想显示一张地图 在该地图上动态显示和隐藏标记 这有效 我用Maplibre GL https github com maplibre maplibre gl js 这是一个分叉地图盒 GL https docs m
  • 如何解释函数实例的bind/>>>=?

    我正在努力提高我的理解Applicatives and Monad通过在 Javascript 中实现其函数实例来实现 我对 Haskell 的了解有限 我希望我的问题有意义 这是我的实现fmap lt gt and gt gt 为了Fun
  • malloc(0) 有什么意义?

    我刚看到这个code https github com mxcl scrobsub blob 2ad2f6131e5900d4c62d8c5bcdb15c069f17e3bd scrobsub c L94 artist char mallo
  • 类 PhpStorm_Codeception_ReportPrinter 不存在

    我尝试在 PhpStorm 中运行 Codeception 功能测试 但不断收到一条错误 提示缺少类 我在互联网上搜索过 除了一篇文章之外 没有发现任何可以解决这个问题的方法https intellij support jetbrains
  • 无法加载文件或程序集“System.Net.Http”

    在我的构建输出的诊断视图中显示了此冲突 System Net Http Version 4 0 0 0 Culture neutral PublicKeyToken b03f5f7f11d50a3a 和 System Net Http Ve
  • 使用 CSS Grid 时如何使内容居中并使背景覆盖整列?

    当我添加这段代码时 place items center 我的元素居中 但只有文本应用了背景颜色 当我删除此代码时 place items center 背景颜色覆盖整个列 但文本不再居中 main display grid grid te
  • 如何找出浏览器实际使用的网站图标

    我有一个新网站 其中包含使用源文件自动生成的一组图标图像真实网站图标生成器 http realfavicongenerator net 并且有 9 个苹果图标 1 Android 图标 3 个命名图标 1 Safari 固定SVG 1 js
  • 在 Wayland 和 X11 上模拟鼠标和键盘输入

    我正在对用 C 编写的 OpenGL 应用程序进行小型验收测试 到目前为止 我只能截取屏幕截图 还没有找到在 Wayland 和 X11 上模拟鼠标和键盘输入的方法 关于如何在 Wayland X11 中操作特定窗口的事件流有什么建议吗 用
  • *这*真的是从 Java 代码启动第二个 JVM 的最佳方式吗?

    这是我的后续自己之前的问题 https stackoverflow com questions 1218790 我有点不好意思问这个 但是无论如何 如何以独立于系统的方式从独立的 Java 程序启动第二个 JVM 并且无需依赖诸如 JAVA
  • Core Data 属性更改为 nil(与 ARC 相关?)

    我有一些核心数据功能 在最近进行一些 看似不相关的 更改之前一直运行良好 现在我遇到问题 属于特定 NSManagedObject 子类实例的所有属性突然返回 nil 假设我的 NSManagedObject 子类名为 Foo 它只有一个名
  • Android Volley,使缓存无效并每 (x) 分钟发出新请求

    我找不到这个问题的更新答案 我正在使用 Volley 向 Web API 发送请求 它返回 JSON 我正在使用如下所示的缓存功能 但我想确保列表视图经常刷新 现在假设为 30 分钟 如何使该给定 URL 的缓存无效 以便我的应用程序自动处
  • 如何将背景图像放置在距其容器右侧绝对距离的位置?

    我可以使用以下命令将一个小背景图像 图标放置在距其容器左中心 4 像素的位置 background url no repeat 4px 50 我怎样才能把它定位到距离 4 个像素的地方right 根据您的情况以及您想要支持的浏览器 此方法有
  • 链接在 UI 可选内部不起作用

    这些是来自 JQuery 网站的代码 我重写了其中的内容
  • 加拿大邮政编码功能的高效正则表达式

    var regex A Za z d A Za z d A Za z d var match regex exec value if match if value indexOf 1 value indexOf 1 value length
  • 按多列分组 - LINQ

    我见过按列乘法分组的例子 但是对于类 我正在尝试为 EnumerableDataRowList 执行此操作 但我得到 无效的匿名类型成员声明符 EnumerableDataRowList
  • 如何绘制箭头(在 Android 中)?

    我对 Android 相当陌生 一直在尝试 Canvas 我正在尝试绘制箭头 但我只是运气好地绘制了轴 所有箭头都不起作用 我搜索了一下 找到了一个Java示例 但是Android没有GeneralPath or AffineTransfo