本文实例讲述了Android开发实现的几何图形工具类GeometryUtil。分享给大家供大家参考,具体如下:

package com.android.imooc.goo;

import android.graphics.PointF;

/**

* 几何图形工具

*/

public class GeometryUtil {

/**

* As meaning of method name. 获得两点之间的距离

*

* @param p0

* @param p1

* @return

*/

public static float getDistanceBetween2Points(PointF p0, PointF p1) {

float distance = (float) Math.sqrt(Math.pow(p0.y - p1.y, 2) + Math.pow(p0.x - p1.x, 2));

return distance;

}

/**

* Get middle point between p1 and p2. 获得两点连线的中点

*

* @param p1

* @param p2

* @return

*/

public static PointF getMiddlePoint(PointF p1, PointF p2) {

return new PointF((p1.x + p2.x) / 2.0f, (p1.y + p2.y) / 2.0f);

}

/**

* Get point between p1 and p2 by percent. 根据百分比获取两点之间的某个点坐标

*

* @param p1

* @param p2

* @param percent

* @return

*/

public static PointF getPointByPercent(PointF p1, PointF p2, float percent) {

return new PointF(evaluateValue(percent, p1.x, p2.x), evaluateValue(percent, p1.y, p2.y));

}

/**

* 根据分度值,计算从start到end中,fraction位置的值。fraction范围为0 -> 1

*

* @param fraction

* @param start

* @param end

* @return

*/

public static float evaluateValue(float fraction, Number start, Number end) {

return start.floatValue() + (end.floatValue() - start.floatValue()) * fraction;

}

/**

* Get the point of intersection between circle and line. 获取

* 通过指定圆心,斜率为lineK的直线与圆的交点。

*

* @param pMiddle

* The circle center point.

* @param radius

* The circle radius.

* @param lineK

* The slope of line which cross the pMiddle.

* @return

*/

public static PointF[] getIntersectionPoints(PointF pMiddle, float radius, Double lineK) {

PointF[] points = new PointF[2];

float radian, xOffset = 0, yOffset = 0;

if (lineK != null) {

radian = (float) Math.atan(lineK);

xOffset = (float) (Math.sin(radian) * radius);

yOffset = (float) (Math.cos(radian) * radius);

} else {

xOffset = radius;

yOffset = 0;

}

points[0] = new PointF(pMiddle.x + xOffset, pMiddle.y - yOffset);

points[1] = new PointF(pMiddle.x - xOffset, pMiddle.y + yOffset);

return points;

}

}

希望本文所述对大家Android程序设计有所帮助。

android图形开发工具,Android开发实现的几何图形工具类GeometryUtil完整实例相关推荐

  1. 数模【Mathematica(安装、入门方法、基本计算、基本图形、创建互动模型、利用数据、幻灯片演示、完整实例)】

    Mathematica 官方中文入门教程 视频中的".nb"文件[链接:https://pan.baidu.com/s/1mpzhfG5igUFGdB1NrGG3SQ   提取码: ...

  2. linux 串口工具_会C++就能开发Linux/Android应用!这款Yoxios X3串口屏火了...

    大家好,我是小月月.今天给大家介绍一款搭载YOXIOS操作系统的YOXIOS X3串口屏,只要你会C/C++就能开发Linux/Android应用!而且小月月带来了福利--"免费试用名额&q ...

  3. 重走Android路 之 Android系统架构图以及开发工具了解

    LZ-Says:热腾腾的一天那,貌似今天帝都达到了高温,热腾腾,我滴天...各位老铁注意防暑,多喝水~~~ 前言 昨天更新了一篇启程文,地址如下: 重走Android路 之 今日正式启程:https: ...

  4. Android开发之使用Handler封装下载图片工具类(源代码分享)

    如果每下载一张图片,就得重写一次Http协议,多线程的启动和handler的信息传递就显得太麻烦了,我们直接来封装一个工具类,便于我们以后在开发时随时可以调用. (1)在清单文件添加权限 <us ...

  5. android 测试工具,Android开源项目第四篇:开发及测试工具篇

    本文为那些不错的Android开源项目第四篇--开发工具篇,**主要介绍Android开发工具和测试工具相关的开源项目**. Android开源项目系列汇总已完成,包括: 1.Buck faceboo ...

  6. 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )

    文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...

  7. 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )

    文章目录 一.Visual Studio 中创建 Makefile 项目 二.配置 Makefile 文件 三.配置 Android.mk 四.配置 Application.mk 五.主函数源码 六. ...

  8. 爱上Android之选择您的开发工具

    本文摘自人民邮电出版社异步社区<爱上Android> 京东地址:item.jd.com/12144527.ht- 试读地址:www.epubit.com.cn/book/detail- 第 ...

  9. (Android开发辅助工具)动态广播注册解注工具

    平常我们开发的时候需要使用到动态注册广播,如果在一个类内注册很多的广播代码就会既冗余又乱糟糟的,就像这样: msgReceiver = new NewMessageBroadcastReceiver( ...

  10. Android开发工具Android Studio、Android SDK和Genymotion完全配置

    所谓"工欲善其事,必先利其器".Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Androi ...

最新文章

  1. html怎么插入外部js,如何插入js,引用外部js,js在页面中的位置
  2. Word文档转html并提取标题
  3. jq 控制td只显示一行_桥式八角翼闸DAIC-TD-YZ
  4. mysql常用快速查询修改操作
  5. 关于在asp.net中textbox文本输入框中的汉语标点符号显示位置的问题
  6. linux 软件下载后无法安装不了怎么办,Firefox无法安装怎么办
  7. leetcode python3 简单题70. Climbing Stairs
  8. python动态运行py代码_Python 动态执行
  9. 谭建荣院士:制造业与互联网融合需解决三大瓶颈
  10. 使用Dom4j对XML文档创建与解析
  11. IOS 归档 即序列化与反序列化
  12. warning: initialization from incompatible pointer type error, forbidden解决
  13. 浅析Thinkphp框架中运用phprpc扩展模式
  14. cap流程图_冲压工艺流程图+PFMEA+CP范例(中英文)
  15. IDC将中国城市分成六级:每一级具体的城市是那几个市,谢谢回复
  16. 计算机组成原理与汇编语言设计,计算机组成原理与汇编语言网络教学整体设计方案...
  17. 网络编程 upd 发送接收数据
  18. Thinkphp6快速入门一
  19. word 2016样式设置及样式集保存
  20. 公安部中标十大身份证阅读器品牌型号

热门文章

  1. 【窗口置顶神器】DeskPins
  2. 开发APP需要什么技术?
  3. 利用bat修复office文件图标
  4. python建模的步骤_python基础教程之Python 建模步骤|python基础教程|python入门|python教程...
  5. PDF编辑技巧 PDF怎么复制页面
  6. 第二代支付系统商业银行行内接入系统总体设计(初稿)
  7. java图片透明化处理_java的图片背景透明及透明度处理
  8. MFC Windows 程序设计[十六]之小小计算器
  9. 期末复习-选择题整理(湖南大学操作系统课程雨课堂答案即期末题库)
  10. 韩国瑜会见陆委会主委陈明通:别给高雄念紧箍咒