如何使用 OnTouchListener 获取对象的正确坐标(event.getX()/event.getY()) [英] How to get correct coords(event.getX() / event.getY()) of Object with OnTouchListener

查看:27
本文介绍了如何使用 OnTouchListener 获取对象的正确坐标(event.getX()/event.getY())的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个:

我真正想要的是通过对象的坐标(X,Y)与OnTouchListener(橙色正方形,中间有点)显示部分位图.

and what i want exactly is that to show portion of Bitmap via coords(X,Y) of object with OnTouchListener(orange square with dot in center).

所以问题是我想绘制图像的一部分,就像它在图像上显示的那样(红色方块我想要的区域"显示).
所以在这种情况下,例外结果是(位图的一部分):

目前我正在这样做:

So the problem is that i want to draw portion of image like it shows on image(Red square "Area that i want" to show).
So in this case,excepted result is(portion of bitmap) :

At current moment i'm doing like this:

public boolean onTouch(View view, MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_MOVE:

            Bitmap mBitmap = Bitmap.createBitmap(sourceBitmap,view.getX() - view.getWidth(),view.getY()-view.getHeight(),250,250);
            //other stuff to fill this portion of bitmap
            break;
    }

    return true;
}
}

这是不正确的.

我怎样才能做到这一点?尝试了很多公式,但没有运气.有什么建议?

how can i achieve this? Tried a lot of formulas,but no luck. Any suggestions?

PS 据我所知 event.getX()/event.getY() 正在获取相对坐标(我不清楚,从对象中获取的坐标是什么?带有触摸侦听器的图像视图(中心为点的橙色正方形),我的意思是它获得此对象的 centerTop.Left 角(X,Y))?

PS As i understand event.getX()/event.getY() is getting relative coords(and it's not clear for me,what exactly coords getting from object of imageview with touch listener(orange square with dot in center),i mean its getting center of this objects or Top.Left corners(X,Y)) ?

推荐答案

所以解决这个问题很简单.
解决方案:
我有一个带有 OnTouchListener 的对象(橙色方块)(例如,他是一个四边形,尺寸为 50dp 高度/50dp 宽度).
所以 view.getX()/view.getY() 获取对象的相对坐标(中心)(具有 OnTouchListener).
所以我需要什么:

So it was simple to resolve this problem.
Solution:
I have an object(orange square) with OnTouchListener(for e.g. he's an quad with size 50dp Height/ 50dp Width).
So view.getX()/view.getY() takes relative coords(center) of object(that have OnTouchListener).
So what i needed:

//imageview parameters ,where i will show this part of bitmap
int Width = img.getWidth();
int Height = img.getHeight();
//after this,i make margin of my coords,via this simple formula -> Current Coord X - Width / 2 (same for Y)
 Bitmap mBitmap = Bitmap.createBitmap(sourceBitmap,view.getX() - Width / 2,view.getY()-Height / 2,Width,Height);  

仅此而已.
享受!

And that is all.
Enjoy!

这篇关于如何使用 OnTouchListener 获取对象的正确坐标(event.getX()/event.getY())的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆