首页
学习
活动
专区
工具
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获取拍摄物体实际三维坐标

1K20

在Android实现双目测距

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

2.4K10

Android OpenCV 4.6 透视变换

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

1K20

Android如何判断当前点击位置是否在圆内部

我们都知道,一个圆形ImageView控件(本项目中使用圆形控件是github上),其实所占区域还是正方形区域,只是显示内容为圆形,当我们给ImageView设置触摸事件时,没有显示区域也会相应点击事件...,而我们可以通过计算当前点击位置来判断ImageView是否相应触摸事件。...要实现这个效果并不难,首先,先计算出圆中心点坐标(x1,y1),注意,x1,y1是相对于屏幕坐标,不是相对于布局坐标; 然后获取当前按下坐标(x2,y2),只需要计算出当前按下坐标(x2...location[0]; int y = location[1]; //圆半径 通过左右坐标计算获得getLeft int r = (civ.getRight()-civ.getLeft...())/2; //圆心坐标 int vCenterX = x+r; int vCenterY = y+r; //点击位置x坐标与圆心x坐标的距离 int distanceX

2.1K20

UIkit Dynamics 投掷效果

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

1.1K50

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是实际高度。

96511

Android Vector曲折兼容之路

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

1.7K30

Android自定义View使用及其原理知识点总结

其中,onDraw()负责对图像绘制,onMeasure()负责测量位置,onTouchEvent()负责设置触摸事件。...根据以上三种模式,我们就可以在测量时候判断和使用了。首先,我们重写一个viewonMeasure()方法。再通过使用MeasureSpec类获得控件测量模式。...我们使用布局,像RelativeLayout,LinearLayout都是继承ViewGroup,所以他们也是使用这种方法来获得自己大小。...当重写onTouchEvent方法时候,我们可以看到,需要传入MotionEvent对象。我们可以通过这个类来设置触摸事件,也可以获得触摸位置。...在Android坐标,我们都知道Android屏幕在竖屏时候,以左上角位置为原点,向右为x轴正方向,向下为y轴正方向,知道了这个后,我们就可以通过调用getX()和getY()方法可以获取触摸坐标

37421

iOS面试题-UI篇

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

1.9K21

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

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

48830

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

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

3.1K10

图片画画板

页面布局,相对布局 按钮位于父窗体下方使用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,才能被持续执行 点击保存按钮

87070

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

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

7.1K130
领券