发布
社区首页 >问答首页 >点击安卓屏幕上的ImageView

点击安卓屏幕上的ImageView
EN

Stack Overflow用户
提问于 2017-03-06 20:16:32
回答 1查看 148关注 0票数 0

我的问题是单击imageview,并知道在图像上(通过imageview调整大小)在哪里单击。

我目前的算法是:

关于onTouch方法ImageView,求出MotionEvent的X和Y位置并进行数学计算

代码语言:javascript
代码运行次数:0
复制
int realX = (X / this.getWidth()) * bitmapWidth;
int realY = (Y / this.getHeight()) * bitmapHeight;

其中bitpmapWidth和bitmapHeight来自原始位图。

有谁可以帮我?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-07 02:27:55

几乎正确,数学应该是有点不同的。还请记住,ImageView的getHeight()和getWidth()在onCreate期间为0,我使用了这个答案中的信息-- getWidth() and getHeight() of View returns 0 --一旦可用,就使用get宽度和高度

代码语言:javascript
代码运行次数:0
复制
    iv = (ImageView) findViewById(R.id.img);

    iv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            iv.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            xScaleFactor = iv.getWidth() / originalBitmapWidth;
            yScaleFactor = iv.getHeight() / originalBitmapHeight;

            Log.v(TAG, "xScaleFactor:" + xScaleFactor + " yScaleFactor:" + yScaleFactor);
        }
    });

    iv.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent event) {
            int touchX = (int) event.getX();
            int touchY = (int) event.getY();

            int realX = touchX / xScaleFactor;
            int realY = touchY / yScaleFactor;

            Log.v(TAG, "realImageX:" + realX + " realImageY:" + realY);
            return false;
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42634748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档