首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在android中通过在任意方向拖动4个点来创建不规则四边形

在Android中,可以通过使用触摸事件和绘图技术来实现通过在任意方向拖动4个点来创建不规则四边形。下面是一个实现这个功能的步骤:

  1. 创建一个自定义的View类,继承自View,并重写onTouchEvent方法来处理触摸事件。
  2. 在自定义View的构造方法中初始化4个点的坐标,可以使用一个数组来保存这些坐标。
  3. 在onTouchEvent方法中,根据触摸事件的类型,更新4个点的坐标。可以使用MotionEvent类的getX和getY方法获取触摸点的坐标。
  4. 在自定义View的onDraw方法中,使用Canvas类的drawPath方法来绘制四边形。可以使用Path类来定义四边形的路径,通过调用Path类的moveTo和lineTo方法来设置四边形的顶点。
  5. 在Activity中,将自定义View添加到布局中。

以下是一个简单的示例代码:

代码语言:txt
复制
public class IrregularQuadrilateralView extends View {
    private float[] points; // 保存4个点的坐标

    public IrregularQuadrilateralView(Context context) {
        super(context);
        points = new float[8]; // 4个点,每个点有x和y两个坐标
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // 绘制四边形
        Path path = new Path();
        path.moveTo(points[0], points[1]);
        path.lineTo(points[2], points[3]);
        path.lineTo(points[4], points[5]);
        path.lineTo(points[6], points[7]);
        path.close();

        Paint paint = new Paint();
        paint.setColor(Color.RED);
        canvas.drawPath(path, paint);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int action = event.getAction();
        float x = event.getX();
        float y = event.getY();

        switch (action) {
            case MotionEvent.ACTION_DOWN:
                // 按下时更新第一个点的坐标
                points[0] = x;
                points[1] = y;
                break;
            case MotionEvent.ACTION_MOVE:
                // 移动时更新其他点的坐标
                points[2] = x;
                points[3] = y;
                points[4] = x + 100; // 假设第三个点和第四个点的x坐标比第二个点的x坐标大100
                points[5] = y + 100; // 假设第三个点和第四个点的y坐标比第二个点的y坐标大100
                points[6] = x + 200; // 假设第四个点的x坐标比第三个点的x坐标大200
                points[7] = y;
                break;
        }

        invalidate(); // 重绘View

        return true;
    }
}

在Activity中使用这个自定义View:

代码语言:txt
复制
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout layout = findViewById(R.id.layout);
        IrregularQuadrilateralView view = new IrregularQuadrilateralView(this);
        layout.addView(view);
    }
}

这样,在Android中通过在任意方向拖动4个点,就可以创建不规则四边形了。请注意,这只是一个简单的示例,实际应用中可能需要更复杂的逻辑和处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【文本检测与识别-白皮书-3.1】第一节:常用的文本检测与识别方法

上述方法都是主要针对水平和多方向四边形文本而不能检测任意形状(曲线) 的文本。...而Mask R-CNN 和FCIS 实例分割领域取得了很大的进步,通过边框或边界点回归预测和像素分类相结合的思路也可以对任意形状的文本进行更方便地描述。...Xiao 等人(2020)考虑到普通卷积对不规则文本的采样效率偏低,Mask R-CNN 嵌入了序列变形模块(sequential deformable module,SDM),它能沿着文本方向进行特征采样...,并通过匹配类型学习从学习到的关键边重建四边形检测框。...如图3 所示,整个网络也是基于Mask R-CNN 进行搭建,这样可以更好地处理任意方向的文本,不过对于不规则文本,BDN 并不能进行很好地检测。

1.3K30

AAAI 2020 | 从边界到文本—一种任意形状文本的检测方法

论文链接:https://arxiv.org/pdf/1911.09550.pdf 该论文提出了用边界点来表示任意形状文本的方法,解决了自然场景图像任意形状文本的端到端识别问题。如图1所示: ?...图 1:文本区域表示的两种方法 现有方法用外接四边形框来表示文本边界(图1,(a)),通过RoI-Align来提取四边形内的特征(图1,(b)),这样会提取出大量的背景噪声,影响识别网络。...利用边界点来表示任意形状文本有以下优势: 边界点能够描述精准的文本形状,消除背景噪声所带来的影响(图1,(c)); 通过边界点,可以将任意形状的文本矫正为水平文本,有利于识别网络(图1,(d)); 由于边界点的表示方法...面对不规则的文本,这些方法多采用分割的方式对文字区域进行描述。分割的方法常需要复杂的后处理,并且获取的文本框和识别分支之间并不可导,识别分支的文本语义信息无法通过反向传播来对文本框进行优化。...检测任务和识别任务均能从边界点这种表示形式受益: 1)由于边界点的表示是可导的,因此识别分支的导数回传会进一步优化检测结果; 2)使用边界点对不规则文本的特征进行矫正能移除背景干扰,可以提升识别性能。

1.7K10
  • 大盘点|OCR算法汇总

    2、提出了改进任意方向区域建议的新策略,以提高任意方向文本检测的性能。...3、由于本文的方法可以预测不规则四边形边界,所以需要定位每个字级文本的四个顶点的附带文本检测任务具有很大的优势 网络结构 ? ? 实验结果 ? ? ?...主要贡献 1、首先提出了先验四边形滑动窗口,显著提高了召回率。 2、提出了唯一确定任意平面凸四边形4个点顺序的协议,使得该方法能够使用相对回归来预测四边形边界框。...pipeline利用单一的神经网络,直接预测整幅图像任意方向四边形的单词或文本行,消除了不必要的中间步骤(候选聚合和单词分割)。...测试,首先通过预测的TPS变换将图像校正为更“可读”的图像,用于后续SRN,后者通过序列识别方法识别文本。结果表明,该模型能够识别多种不规则文本,包括透视文本和曲线文本。

    2.4K10

    【愚公系列】2023年11月 WPF控件专题 Polygon控件详解

    一、Polygon控件详解WPFPolygon控件是一种用于绘制多边形的形状控件。它可以用XAML或代码创建,并可以设置多个点来定义多边形的形状。...以下是一个创建四边形的示例:在这个示例,Polygon控件的Points属性设置为四个点的坐标...在这里,我们设置四个点来创建一个绿色的矩形。除了Points属性之外,Polygon控件还具有其他可设置的属性,例如Stroke、StrokeThickness和Fill。...(polygon);在这个示例,我们通过代码创建一个新的Polygon控件,并添加四个点来定义矩形的形状。...Polygon控件的Points属性可以通过一系列点的坐标来定义控件的形状,可以用于绘制各种多边形。需要注意的是,点的顺序一定要按照顺时针或逆时针方向绘制,否则控件无法正确渲染。

    75411

    【UI 设计】PhotoShop基础工具 -- 移动工具

    移动工具 (1) 工具栏和属性栏 工具栏 和 属性栏 : 左侧的是工具栏, 每选中一个工具, 菜单栏的下部就会出现工具栏对应的属性栏; (2) 工具预设 工具预设 : 预设工具属性栏的参数, 可以快捷的使用预设好的工具...; -- 工具复位 : 右键点击该图标, 就会出现工具复位的选项; (3) 自动选择 自动选择示例解析 :  -- 拷贝图层 : 图层面板, 选中要复制的图层, 使用 Ctrl + J 快捷键,...快捷键 复制;  -- 拷贝图像 : 到刚创建的图像, 使用 Ctrl + V 快捷键, 拷贝选框选中的图像;  -- 调整大小 : 之后使用 Ctrl + T 快捷键, 调整图像大小到合适位置;...; 自由变形 : 选中 变换属性的  , 可以进行自由变形, 不规则 拉伸图片; (5) 对齐 和 分布 对齐 :  -- 上对齐 : 选中的图层 与 最上面图层的顶端对齐; -- 垂直居中对齐...解锁图层 : 将第一张图片的图层解锁; 拖动图层 : 使用拖动工具, 直接将图片图层拖动到第一张图片的图层; (3) 解析自动对齐 自动对齐解析 : 选中所有的图层, 点击自动对齐按钮, 弹出自动对齐对话框

    1.8K40

    Android开发笔记(一百四十九)约束布局ConstraintLayout

    传统的布局线性布局LinearLayout、相对布局RelativeLayout等等,若要描绘不规则的复杂界面,往往需要进行多重的布局嵌套,不但僵硬死板缺乏灵活性,并且嵌套过多拖慢页面渲染速度。...开发者使用约束布局之时,有多种手段往该布局内添加和拖动控件,既能像原型设计软件AxureRP那样画板上任意拖曳控件,也能像传统布局那样XML文件调整控件布局,还能在代码动态修改控件对象的位置状态...Android原先的界面手工编码一直为人所诟病,因为“所见即所得”才是界面编码的理想方式,比如iOS很早就在Xcode中集成了故事板,使得iOS程序员能够像设计师那样画板上拖动控件,从而加快了界面编码的工作效率...XML文件调整控件布局 传统布局线性布局、相对布局基本是XML文件手工添加控件节点,约束布局当然也允许布局文件中指定控件的相对位置,这跟相对布局内部的控件位置调整类似,只不过用来表示位置的属性换了个名字罢了...代码动态调整控件位置 有时根据用户界面上的操作,需要立即调整相关控件的显示位置,这要在代码修改控件的位置参数。

    2.1K20

    AndroidApp和车机开发:RecyclerView实现触摸和拖放的功能

    引言 现代应用程序,用户交互性是提供丰富用户体验的关键因素。RecyclerView作为Android处理列表和网格布局的强大组件,支持多种交互,包括拖放排序。...本文指导您如何在RecyclerView实现拖放功能,使用户能够通过长按和拖动来重新排序列表项,用Kotlin实现 长按和拖放操作 为了为RecyclerView添加长按拖放功能,我们将通过自定义ItemTouchHelper.Callback...来精确控制拖动行为,涉及重写onMove方法和getMovementFlags方法 拖动排序逻辑 onMove:此方法拖动操作期间被调用,用于交换列表项的位置,并更新适配器的数据源。...getMovementFlags:在此方法,我们将定义列表项可拖动方向。...考拖动操作期间提供视觉反馈,以增强交互性。 结语 通过上述步骤,可以轻松地Android应用的RecyclerView实现拖放排序功能。

    18920

    DOTA数据集论文

    一个小区域反而有很多密集目标) 密集的小物体检测(港湾、停车场) * 检测目标的不确定性:方向的随机性和尺度随机性(桥梁这样极端的长宽比,会使anchor先验的检测效果打折扣)1.2 数据集简介DOTA...其标注方式为四点确定的任意形状和方向四边形(区别于传统的对边平行bbox)2....标注方式 没有选择(x,y,w,h)和(x,y,w,h.θ),而是标记四个顶点八个坐标得到不规则四边形。具体是首先标注出一个初始点,为(x1,y1)然后顺时针方向依次标注234。...从表可见实例还是具有很大的尺度变化性的。 * 长宽比的变化性?AR是aspect ratio,前两张分别表示水平bbox和有方向的bbox的AR比例,可以看出其长宽比的变化也是很大的。...甚至过千了,这样看来,传统用于COCO检测的模型NMS只设置100上限降低计算量的方法远远不可行了。

    1.8K40

    腾讯数平精准推荐 | OCR技术之检测篇

    数平精准推荐团队场景文本检测技术 1、文本检测技术 文本检测是场景文本识别的前提条件,要解决的问题是如何在杂乱无序、千奇百怪的复杂场景准确地定位出文字的位置。...结合场景图片中文字排列具有不规则、多方向(水平、倾斜、垂直等)、尺寸大小不一等特性,数平精准推荐团队受到RRPN[11] Rotation Proposals的启发,基于Faster-RCNN物体检测模型...,研发了一种用于任意方向文本的端到端文本检测方法,技术架构图如图4所示。...我们物体检测技术架构的基础上,将角度信息融入到检测框架,目的在于回归任意方向的文本框。...,尤其广告推荐的场景通过OCR技术对广告的素材创意进一步的识别和理解,大幅提升了用户点击率预估的效果。

    10.1K120

    Android 事件分发】ItemTouchHelper 实现侧滑删除

    Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android...实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作 ) ---- 文章目录 Android 事件分发 系列文章目录 一、ItemTouchHelper.Callback...---- 1、设置移动标志 ( 拖动/滑动 ) 重写 ItemTouchHelper.Callback 的 getMovementFlags 方法 , 该方法设置滑动/拖动标志位 ; 滑动 / 拖动...0.5f , getMovementFlags 方法设置的滑动方向是左右滑动 , 因此该案例 , 滑动幅度水平方向上超过 0.5 倍的条目组件宽度 , 侧滑删除才能生效 ; 下面的操作..., 滑动水平方向上没有超过组件宽度的 0.5 倍 , 滑动删除不生效 ; 下面的操作 , 水平方向的滑动幅度超过了 0.5 倍 , 侧滑删除生效 ; 侧滑判定 : 这里有两种侧滑判定条件 , 满足任意一个即可触发侧滑删除

    62920

    腾讯数平精准推荐 | OCR技术之检测篇

    数平精准推荐团队场景文本检测技术 1、文本检测技术 文本检测是场景文本识别的前提条件,要解决的问题是如何在杂乱无序、千奇百怪的复杂场景准确地定位出文字的位置。...结合场景图片中文字排列具有不规则、多方向(水平、倾斜、垂直等)、尺寸大小不一等特性,数平精准推荐团队受到RRPN[11] Rotation Proposals的启发,基于Faster-RCNN物体检测模型...,研发了一种用于任意方向文本的端到端文本检测方法,技术架构图如图4所示。...我们物体检测技术架构的基础上,将角度信息融入到检测框架,目的在于回归任意方向的文本框。...,例如:腾讯慧眼、手Q看点、话题圈、天御、社交广告等业务,尤其广告推荐的场景通过OCR技术对广告的素材创意进一步的识别和理解,大幅提升了用户点击率预估的效果。

    2.6K40

    Android多点触控技术实战,自由地对图片进行缩放和移动

    因此本篇文章,我们就来对这一功能进行完善,加入点击图片就能浏览大图的功能,并且浏览大图的时候还可以通过多点触控的方式对图片进行缩放。...如果你还没有看过 Android瀑布流照片墙实现,体验不规则排列的美感 这篇文章,请尽量先去阅读完再来看本篇文章,因为这次的代码完全是在上次的基础上进行开发的。...这里所有的偏移和缩放操作都是通过矩阵来完成的,我们把要缩放和偏移的值都存放在矩阵,然后绘制图片的时候传入这个矩阵对象就可以了。 图片初始化完成之后,就可以对图片进行缩放处理了。...介绍完了ZoomImageView,然后我们新建一个布局image_details.xml,布局中直接引用创建好的ZoomImageView: <?...imageViewList.add(imageView); } } 可以看到,这里我们调用了ImageView的setOnClickListener()方法来给图片增加点击事件,当用户点击了照片墙任意图片时

    2.2K50

    ICCV2019 | 任意形状文本检测的像素聚合网络

    该论文主要解决了自然场景文本检测的两个问题:一是如何权衡自然场景任意形状文本检测的速度与精度,二是不规则文本的精准检测。 本文转载自「CSIG文档图像分析与识别专委会」公众号。...在任意四边形文本的检测上,目前的很多方法比如EAST是非常高效的。...但是,自然场景存在着大量的任意形状而且不规则的文本,尽管针对这些不规则文本也有很多检测方法能得到很好的结果,但其检测速度会由于模型过于庞大或者复杂的后处理变得很慢,这会限制这些方法现实生活的应用。...The details of FFM Segmentation Head的特征融合模块(FFM)的结构细节Fig.4所示,它能够将不同深度的FPEMs提取到的特征融合在一起,以此融合低级和高级的语义信息...本文提出的PAN不规则文本数据集SCUT-CTW1500和Total-Text以及任意四边形文本数据集ICDAR 2015和MSRA-TD500上表现非常出色。

    1.2K00

    神秘爆品!6重福利!这个5.1江湖必定不会风静浪平

    通过SingleGenerator脚本对物理金币、液体、岩浆、毒雾模拟,并可针对Web、Android、iOS不同运行平台进行数量控制,性能调优 image.png 2....游戏背景砖墙为各种不规则多边形,通过 PolygonMask 组件,对多边形遮罩,可将一张背景整图,裁剪成任意形状 5.jpg 关卡编辑说明 1....为游戏中的王子主角 节点下三个节点分别为主角和特效Spine动画 包含RigidBody组件 3个PhysicsPolygonCollider组件,分别对应角色的头部、身体和站立点的碰撞 根据组件的不同Tag代码的碰撞回调来做区分...绑定宝石预制件,配置不同的宝石数量 poisonGases节点为毒雾所在位置, 绑定一个SingleGenerator脚本用于该位置创建毒雾 lavas节点用于生成熔岩 ,绑定脚本SingleGenerator...游戏中背景砖墙为各种不规则多边形,这里实现了一个 PolygonMask 插件,用于做多边形遮罩,将一张背景整图,裁剪成任意形状。 3.

    54840

    【文本检测与识别白皮书-3.2】第三节:常用的文本识别模型

    循环层的底部,将传播的差分序列连接成映射,将特征映射转换为特征序列的操作,并反馈到卷积层。在实践,我们创建了一个自定义的网络层,称为“映射到序列”,作为卷积层和循环层之间的桥梁。...进一步加快CRNN的速度,使其实际应用更加实用,是未来值得探索的另一个方向。...图片 TextSnake算法原理: TextSnake图示 图片 如图1所示,场景文本的常规表示(轴对齐矩形、旋转矩形和四边形)不能精确描述不规则形状的文本实例的几何属性,因为它们通常假设文本实例大致为线性形式...但是,S (t)的几何属性可以用于修正不规则形状的文本实例,并将其转换为矩形的直形图像区域,这对文本识别器更友好 方法Pipeline: 图片 为了检测具有任意形状的文本,TextSnake使用了一个...该数据集具有小的、模糊的、多方向的文本实例。有1000张图片用于培训,500张图片用于测试。此数据集中的文本实例标记为单词级四边形。 MSRA-TD500是一个具有多语言、任意定向和长文本行。

    1.9K30

    初中数学课程与信息技术的整合

    如果让学生自己操作,那么操作,学生记忆会相当深刻:菱形是平行四边形加上邻边相等这一条件。同样地可作长方形(图2-17)。作好之后,可以提一个问题:所作的长方形能否拖动成菱形呢?...我们知道,圆是由两个点来决定的,双击鼠标按下去的点即为圆心,松开鼠标的点即为圆上的一点,此点与圆心共同决定圆的半径;改变这两个点中的任意一点都可以改变圆。...4 画第三个圆:在任意一点处按下鼠标键即规定了圆心D,拖动鼠标,对准点B(注意状态栏的提示),并在B点处松开鼠标,即圆上的点为B。 现在来试试随便拖动其中的任意一个圆。...由任意四点及连接它们的六条直线的确定的图形称为完全四边形,完全四边形三条对角线的中点共线,此线被称为高斯线。...系统缺省的方向是逆时针方向通过修改点的属性可以改变此旋转方向。请利用此函数绘制图2-142和图2-143。

    1.3K10

    WORD的基本操作(五)

    使文字和图形之间产生间隙,可将图形拖到文档任意位置。...通常用在带有大片空白的新闻稿和传单 2.3 紧密型环烧 实际上文本中放置图形的地方创建了一个形状与图形轮廓相同的“洞”,使文字环绕在图形周围。...可以通过环绕顶点改变文字环绕的“洞”的形状,可将图形拖到文档的任何位置。通常用在纸张空间很宝贵且可以接受不规则形状(甚至希望使用不规则形状)的出版物。...2.4 衬于文字下方 嵌入文档底部或下方的绘制层,可将图形拖动到文档的任何位置。通常用作水印或页面背景图片,文字位于图形上方。...2.7、上下型环绕 实际上创建了一个与页边距等宽的矩形,文字位于图形的上方或下方,但不会在图形旁边,可将图形拖动到文档的任何位置。当图形是文档中最重要的地方时通常会使用这种环绕样式。

    1.1K10

    Android 事件分发】ItemTouchHelper 简介 ( 拖动滑动事件 | ItemTouchHelper.Callback 回调 )

    Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android...事件分发】事件分发源码分析 ( Activity 各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作 ) ---- 文章目录 Android 事件分发 系列文章目录 一、ItemTouchHandler 简介...; : 侧滑删除 功能 , 条目位置拖动交换 功能 , 就可以使用 ItemTouchHandler 实现 ; 如果 RecyclerView 没有添加 ItemTouchHandler , 只能上下滚动...的 getMovementFlags 方法 ; 该方法用于设置上下左右动作 , 只有在此处打开了指定方向的设置 , 才可以应用具体方向拖动 , 动作有两种 , 一种是滑动 , 如左右侧滑 ; 一种是拖动

    1.7K10

    基础渲染系列(二十)——视差(基础篇完结)

    本文重点: 1、根据视觉方向 浮动纹理坐标 2、使用高度场创建深度错觉 3、通过高度场追踪光线 4、近似或者搜索相交点 这是有关渲染的系列教程的第20部分。上一部分介绍了GPU实例化。...(四边形 没有和有 法线贴图) 如果没有法线贴图,则四边形显然是平坦的。添加法线贴图会使它看起来好像具有不规则的表面。但是,海拔差异看起来很小。当从平视角观察四边形时,这一点变得明显。...这是通过片段程序调整纹理坐标来完成的。My LightingMyFragmentProgram上方的某个位置创建ApplyParallax函数。...1.4 沿着视角方向浮动 视差是由相对于观察者的透视投影引起的。因此,我们必须牢记这一点来移动纹理坐标。这意味着我们必须根据视图方向移动坐标,这对于每个片段都是不同的。 ?...2.5 不同层之间的搜索 通过两个步骤之间进行线性插值,我们假定表面两个步骤之间是笔直的。但是,通常情况并非如此。为了更好地处理不规则的高度场,我们必须在两个步骤之间搜索实际的交点。

    3K20

    Threejs入门之七:Threejs的几何体

    前面的代码我们一直使用立体缓冲几何体BoxGeometry来构造物体,这样构造出来的是一个长方体或正方体,Threejs提供了很多几何体的API,圆形缓冲几何体、圆锥缓冲几何体、圆柱缓冲几何体等,下面一一进行介绍...1.立方缓冲几何体(BoxGeometry),立方缓冲几何体我们前面已经使用过了,它是四边形的原始几何类,它通常使用构造函数所提供的“width”、“height”、“depth”参数来创建立方体或者不规则四边形...添加立方缓冲几何体到场景,前面也使用过,使用下面的代码可以将立方缓冲几何体添加到场景// 创建一个几何体,相当于画布上想要呈现的物体const geometry = new THREE.BoxGeometry...THREE.Mesh(geometry,material) scene.add(mesh) 注意这里的分段数代表这个几何体可以分为几段,如果 widthSegments 设置为2,则代表这个几何体宽度方向上分为两段...该几何体是通过扫描并计算围绕着Y轴(水平扫描)和X轴(垂直扫描)的顶点来创建的。

    1.5K30
    领券