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

如何在ImageView中使用触摸获得实际的图像坐标?

在ImageView中使用触摸获得实际的图像坐标,可以通过以下步骤实现:

  1. 获取ImageView的图片资源:首先,从资源文件或网络加载图片,并将其设置给ImageView。
  2. 设置触摸监听器:为ImageView设置触摸监听器,以便捕获用户的触摸事件。
  3. 处理触摸事件:在触摸监听器中,通过重写onTouchEvent方法来处理触摸事件。
  4. 获取触摸坐标:在onTouchEvent方法中,通过MotionEvent对象获取触摸事件的坐标。
  5. 转换坐标:由于ImageView可能会对图片进行缩放、平移等操作,所以需要将触摸坐标转换为实际的图像坐标。

以下是一个示例代码:

代码语言:txt
复制
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageResource(R.drawable.image);

imageView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_MOVE) {
            float x = event.getX();
            float y = event.getY();

            // 获取ImageView的Drawable对象
            Drawable drawable = imageView.getDrawable();
            if (drawable != null) {
                // 获取ImageView的宽度和高度
                int imageViewWidth = imageView.getWidth();
                int imageViewHeight = imageView.getHeight();

                // 获取图片的宽度和高度
                int drawableWidth = drawable.getIntrinsicWidth();
                int drawableHeight = drawable.getIntrinsicHeight();

                // 计算缩放比例
                float scaleX = (float) drawableWidth / imageViewWidth;
                float scaleY = (float) drawableHeight / imageViewHeight;

                // 计算实际的图像坐标
                float imageX = x * scaleX;
                float imageY = y * scaleY;

                // 在这里可以使用实际的图像坐标进行后续操作
                // ...

                return true;
            }
        }
        return false;
    }
});

在上述代码中,我们首先将图片资源设置给ImageView,然后为ImageView设置触摸监听器。在触摸监听器的onTouchEvent方法中,我们通过MotionEvent对象获取触摸事件的坐标。接下来,我们获取ImageView的Drawable对象,并计算缩放比例。最后,我们将触摸坐标乘以缩放比例,得到实际的图像坐标。

这样,我们就可以在ImageView中使用触摸获得实际的图像坐标了。根据实际需求,可以在获取到的图像坐标上进行进一步的操作,比如绘制标记、裁剪图片等。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云图片处理(Image Processing):提供了丰富的图片处理功能,包括缩放、裁剪、旋转、水印等,可用于对图像进行处理和编辑。详情请参考:https://cloud.tencent.com/product/img
  • 腾讯云云服务器(CVM):提供了可扩展的云服务器实例,可用于部署和运行各种应用程序。详情请参考:https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储(COS):提供了安全可靠的云存储服务,可用于存储和管理各种类型的数据。详情请参考:https://cloud.tencent.com/product/cos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在Android实现双目测距

通过本教程,你不仅掌握如何在Android中使用SBM等双目测距算法,顺便也了解到如何在Android Studio配置OpenCV,通过使用OpenCV可以在Android中实现很多图像处理的功能。...计算完成之后,为了方便查看图像中的距离,把结果图在ImageView上显示,然后为ImageView添加点击获取坐标事件。...用户在点击之后会获取到图像中的坐标,然后使用这个坐标从xyz中获取拍摄物体的实际三维坐标。...,使用StereoBMUtil工具类读取分割后的左右目摄像头的图像执行计算,把结果图在ImageView上显示,然后为ImageView添加点击获取坐标事件。...用户在点击之后会获取到图像中的坐标,然后使用这个坐标从xyz中获取拍摄物体的实际三维坐标。

1.1K20

在Android实现双目测距

通过本教程,你不仅掌握如何在Android中使用SBM等双目测距算法,顺便也了解到如何在Android Studio配置OpenCV,通过使用OpenCV可以在Android中实现很多图像处理的功能。...计算完成之后,为了方便查看图像中的距离,把结果图在ImageView上显示,然后为ImageView添加点击获取坐标事件。...用户在点击之后会获取到图像中的坐标,然后使用这个坐标从xyz中获取拍摄物体的实际三维坐标。...,使用StereoBMUtil工具类读取分割后的左右目摄像头的图像执行计算,把结果图在ImageView上显示,然后为ImageView添加点击获取坐标事件。...用户在点击之后会获取到图像中的坐标,然后使用这个坐标从xyz中获取拍摄物体的实际三维坐标。

2.6K10
  • Android中的动画

    帧动画实际上是由若干个以一定的时间间隔进行切换的图像组成的。比如电影的原理就类似于帧动画,一般电影是每秒25帧。...在第一章中我们在onDraw()方法中使用invalidate()方法不断地刷新View的方式实现的旋转动画,这种情况下,是不断地画出动画中的每一帧图像,它其实也相当于帧动画。...除了示例代码中使用ImageView的setBackgroundResource()方法来装载动画文件,并通过ImageView的getBackground()方法获得AnimationDrawable...当用户触摸第一个图像时,会以水平向左移动的方式切换到第二个图像,触摸第二个图像时会以淡入淡出的方式切换到第三个图像(通过透明度补间动画实现)。...,再次触摸第二幅图像会以淡入淡出的方式切换到第三幅图像。

    11610

    Android OpenCV 4.6 透视变换

    我们如果要获取其中某个坐标点的位置,也会因为这个偏移而发生错误。 而针对这种情况下,我们要计算相机中的坐标,并转换为真实坐标。有两种方法,一种是实现透视变化,一种是计算相机坐标和世界坐标的转换。...Size dsize:输出图像的大小。 int flags:可选参数,插值方法的组合。...效果就是上面示例图的效果: 第一步,就是将获取坐标点,可以通过OpenCV的轮廓识别获取坐标点(精度准确),也可以手动触摸提取坐标点(精度偏移较大) 我这里就简单点了,直接提取触摸点的方法来实现了。...ImageView,所以我们需要先从ImageView中得到ImageView对象和图片实际之间的偏差。...然后这个尺寸区域将会绘制在dss的Mat中,该mat的值为设置的new Size(640,480)。 大家实际操作一遍就能明白代码逻辑了。能够将摄像机拍摄倾斜的区域,矫正为真实世界上的俯视图效果。

    1.2K20

    UIkit Dynamics 投掷效果

    blueSquare将简单地表示您的触摸开始的位置,即您的手指首先与屏幕接触。redSquare会在您的手指移动时跟踪您的手指。...的坐标系。...3、更新红色方块以指示锚点,蓝色方块表示imageView中附加的点。当手势开始时,这些将是相同的点。 4、将此行为添加到animator,使其生效。...使用速度和你的老朋友毕达哥拉斯定理,你可以计算速度的大小 - 这是由x方向速度和y方向速度形成的三角形的斜边。 2、假设手势幅度超过为动作设置的最小阈值,则设置推送行为。...推动行为对指定的项目施加力。 在这种情况下,它是对图像的瞬时力量。 期望的方向由转换为给出方向部分的向量的x和y速度组成。 一旦设置了推动行为,就将其添加到动画序列中。

    1.2K50

    Android自定义控件总结

    自定义控件分类: 1、使用系统控件,实现自定义的效果 2、自己定义一个类继承View ,如textView、ImageView等,通过重写相关的方法来实现新的效果 3、自己定义一个类继承ViewGroup...(只有在自定义ViewGroup中才用到),这个坐标是相对于当前视图的父视图而言的。...自定义view主要是通过onDraw画出一些形状,然后通过触摸事件去决定如何变化 scrollTo()和scrollBy() scrollTo:将当前视图的基准点移动到某个点(坐标点); ScrollBy...getHeight()和getMeasuredHeight()的区别: 有俩种方法可以获得控件的宽高 getMeasuredHeight(): 控件实际的大小 获取测量完的高度,只要在onMeasure...获取到的是屏幕上显示的高度,getMeasuredHeight是实际高度。

    1.3K80

    Android自定义控件总结

    自定义控件分类: 1、使用系统控件,实现自定义的效果 2、自己定义一个类继承View ,如textView、ImageView等,通过重写相关的方法来实现新的效果 3、自己定义一个类继承ViewGroup...(只有在自定义ViewGroup中才用到),这个坐标是相对于当前视图的父视图而言的。...自定义view主要是通过onDraw画出一些形状,然后通过触摸事件去决定如何变化 scrollTo()和scrollBy() scrollTo:将当前视图的基准点移动到某个点(坐标点); ScrollBy...getHeight()和getMeasuredHeight()的区别: 有俩种方法可以获得控件的宽高 getMeasuredHeight(): 控件实际的大小 获取测量完的高度,只要在onMeasure...获取到的是屏幕上显示的高度,getMeasuredHeight是实际高度。

    1K11

    Android Vector曲折的兼容之路

    如何获得Vector图像 概念 首先,需要讲解两个概念——SVG和Vector。...从PNG到SVG 设计师 要从一般使用的PNG图像转换到SVG图像,对于设计师来说,并不是一件难事,因为大部分的设计工具(PS、Illustrator等等)都支持导出各种格式的图像,如PNG、JPG,当然...:定义图像被划分的比例大小,例如例子中的500,即把200dp大小的图像划分成500份,后面Path标签中的坐标,就全部使用的是这里划分后的坐标系统。...这样做有一个非常好的作用,就是将图像大小与图像分离,后面可以随意修改图像大小,而不需要修改PathData中的坐标。...android:fillColor:PathData中的这些属性就不详细讲了,与Canvas绘图的属性基本类似。 在控件中使用 有了静态的Vector图像,就可以在控件中使用了。

    1.8K30

    iOS面试题-UI篇

    UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和坐标有关的属性,如frame,bounds等,实际上内部都是访问它所在CALayer的相关属性 UIView有个layer属性,可以返回它的主...CALayer实例,UIView有一个layerClass方法,返回主layer所使用的类,UIView的子类,可以通过重载这个方法,来让UIView使用不同的CALayer来显示,如: - (class...因为父控件的subViews数组已经对它有一个强引用 IB中User Defined Runtime Attributes如何使用?...(); [self.view addSubview:imageView]; 使用drawRect有什么影响?...-(void)viewDidLayoutSubviews; 触摸事件的传递 触摸事件的传递是从父控件传递到子控件 如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件 不能接受触摸事件的四种情况

    2K21

    【IOS开发基础系列】UIView专题

    提示:不通过控制器的view也可以做开发,但是在实际开发中,不要这么做,不要直接把view添加到UIWindow上面去。因为,难以管理。     ...原始的帧在它的父视图的坐标系中。设置这个属性用来改变中心和边界属性。 返回值     一个初始化的视图对象,如果没有被创建那就返回nil 讨论     一个新的视图对象必须添加到视图链中才能使用。...Application的事件队列,UIApplication会从事件队列中取出触摸事件并传递给key window(当前接收用户事件的窗口)处理,window对象首先会使用hitTest:withEvent...UITouch对象在触摸操作的过程中在不断变化,所以在使用UITouch对象时,不能直接retain,而需要使用其他手段存储UITouch的内部信息。...方法获得,UIView类继承于UIResponder,因此可以直接使用。

    70630

    图片操作系列 —(1)手势缩放图片功能

    使用了这个Demo后发现里面有手势控制图片大小,手势控制图片旋转等功能,看了代码后我发现BiliBili这个demo中也是用了第三方的库: RotatePhotoView ? ?...所以本文我先来实现实现根据手势来实现图片的缩放功能: 1.添加图片布局 PhotoView是继承了ImageView,然后直接在layout中使用PhotoView,为了更方便的讲解,我就直接还是使用ImageView...既然我们知道了图片在做缩小放大的同时还在平移,那我们就做相应的反方向的平移处理不就好了 我们分为二种情况: 1— 图片在缩放过程中,宽或者高没有超过ImageView的宽或者高: 如果图片再缩放过程中没超过...看到距离是(实际图片的Top值) - (2分之一的ImageView的高度) + (2分之一的实际图片高度),因为是往上移动,所以Y轴实际上是要减少值的,所以最终我们只要让实际的图片减去相应的距离值即可...所以我们这个例子里面处理方式是:如果宽度都大于ImageView并且图片的右边界还没出现在ImageView中的时候,先按照自己原来的方式缩小,当图片的右边界出现在了ImageView的范围内了,让它慢慢往右边移动

    3.2K10

    图片画画板

    页面布局,相对布局 按钮位于父窗体的下方使用android:layout_alignParentBottom=”true” 图片位于按钮的上方,填充父窗体,使用android:layout_above=...onTouch() 在onTouch(View v,MotionEvent event)方法里面 参数:View对象是被触摸的对象,MotionEvent对象是触摸事件对象 调用MotionEvent对象的...事件为MotionEvent.ACTION_UP是手指离开屏幕 当手指触摸屏幕时 定义手指开始位置的坐标startX startY 调用MotionEvent对象的getX() 和 getY()方法,...可以得到坐标 当手指移动的时候,我们要获取新的坐标newX和newY,方法和上面一样 调用Canvas对象的drawLine()方法,画一条线,参数:startX,startY,newX,newY,paint...注意要从新更新画笔的位置 调用ImageView对象的setImageBitmap(bitmap)方法,把Bitmap显示到控件里 onTouch()方法一定要返回true,才能被持续执行 点击保存按钮

    89770

    android学习笔记----关于图形的基本处理讲解

    public int inSampleSize         如果设置为> 1的值,请求解码器对原始图像进行二次采样,返回较小的图像以节省内存。...样本大小是任一维度中与解码位图中的单个像素相对应的像素数。例如,inSampleSize == 4返回的图像是原始宽度/高度的1/4,像素数量的1/16。...任何值使用基于2的幂的最终值,任何其他值将向下舍入到最接近的2的幂。...参数 format Bitmap.CompressFormat: 压缩图像的格式 quality int: 提示压缩器,0-100。 0表示压缩小尺寸,100表示​​压缩以获得最高质量。...:hdpi:xhdpi : xxhdpi 以1920*1080(我认为是当前主流分辨率)为例: 在1920里,1dp=3px,上述规范中,状态栏高度是24dp,所以在设计稿中状态栏的高度就是72px。

    65220

    Android开发笔记(九十九)圆形转盘

    圆形转盘的实现思想 圆形转盘的运用场景常见的有:抽奖转盘、圆形菜单列表、热点客户端环状列表等等。对于圆形转盘的编码实现,主要难点除了手势的触摸控制之外,就在于旋转角度的计算了。...下面是旋转角度计算的解决办法: 一、运用Math类的三角函数,计算视图旋转到某个角度时的x坐标和y坐标,此时旋转的圆心是转盘的中心点; 二、运用Path类和Matrix类,对指定文本或图像做旋转操作...即先调用MeasureSpec.makeMeasureSpec方法获得测量的描述,然后调用子视图的measure方法完成测量。...max : 取两个数字中的较大值 min : 取两个数字中的较小值 科学计算函数 sqrt : 求平方根 cbrt : 求立方根 exp : 计算e的n次幂 log : 求自然对数值(底数为...cubicTo与quadTo的区别在于:quadTo要与moveTo配合使用才能实现平滑效果,而cubicTo多了两个参数,相当于内部已经包含了moveTo的功能。

    2K30

    Android OpenGL开发实践 - 基于OpenGL ES 2.0的Android相机实时图片涂鸦实现思路

    这篇文章将给大家讲解如何在Android系统上基于OpenGL ES 2.0来实现相机实时图片涂鸦效果,所涂内容跟随人脸出现、消失、移动、旋转及缩放,在这里,我们假设您: 已经搭建好一个相机框架,能够获得相机的预览图像...基础知识一:OpenGL的坐标系 为方便讲解,以下只讲解二维的情况,在OpenGL使用中,我们主要会涉及到以下三个坐标系: 屏幕坐标系 屏幕坐标系就是我们手机屏幕的坐标系,以像素为单位,左上角是坐标系原点...*960,因此第一个坐标系的转换就是将屏幕坐标系中的触摸点坐标转换成与相机预览宽高相对应的坐标,相机预览的坐标系原点及x、y轴方向与屏幕坐标系相同: ?...之前说过,涂鸦画布在实际使用的时候,会设置成比屏幕大一些,以确保在人脸缩小后,画布不至于被跟着缩小至比屏幕还小,不然有些地方就涂不上去了,将涂鸦画布设大,可以把它的实际尺寸设大,也可以是把它进行显示放大...现在可以将手指在屏幕上触摸时在onTouchEvent()回调中所得到的触摸坐标正确地转换成涂鸦画布中的坐标了,那么如何在对应的坐标点画涂鸦图案呢?

    7.3K130

    Android Heroes Reading Notes 2

    ContentView实际上是一个FrameLayout,里面容纳的就是我们在xml布局文件中定义的布局。 ?...item的id 第五章 Android Scroll分析 1.获取坐标值的各种方法 图片来自Android中的坐标系以及获取坐标的方法 ?...2.实现滑动的基本思想 当触摸view时,系统记下当前触摸点坐标;当手指移动时,系统记下移动后的触摸点坐标,从而获取到相对于前一次坐标点的偏移量,并通过偏移量来修改view的坐标,这样不断重复,从而实现滑动过程...但如果在view中使用,那么移动的将是view的内容,例如TextView,content就是它的文本;ImageView,content就是它的drawable对象。...,此处略过] (6)使用ViewDragHelper ViewDragHelper类使用较少,它是support库中DrawerLayout和SlidingPaneLayout内部实现的重要类!

    58910

    用 Java 做个“你画手机猜”的安卓小游戏

    PaintView 是用来让用户画画的,在右下角 ImageView 是用来展示用于深度学习推理的图像。同时我们预留一个按钮来进行画板的清空操作。...3.2 第二步: 应对绘画动作 在安卓设备上,你可以自定义安卓的触摸事件响应来应对用户的各种触控操作。...3.2.2 操作开始(touchStart) 当用户触碰行为开始时,下面的代码会建立一个新的路径同时记录路径中每一个点在屏幕上的坐标。...当模型的 predict() 方法被调用时,内部程序会先执行所对应的 translator 的前处理步骤,而后执行实际推理步骤,最后执行 translator 的后处理步骤。...); imageView.setImageBitmap(present); // 展示输出的图像 if (messageToast !

    1.7K20
    领券