android imageview onclick行为

时间:2018-09-17 07:46:07

标签: java android xml image android-studio

您可以为单击同一ImageView但不同部分创建不同的动作吗?假设我有一个ImageView,并且我希望它在单击ImageView的顶部时有所不同,而在单击ImageView的中间部分时则有所不同。我可以在android中实现吗

3 个答案:

答案 0 :(得分:0)

最好的方法是向视图添加OnTouchListener并由您自己处理与触摸坐标相关的点击事件。 但是,如果您需要一种我不建议使用的简单方法,因为它可能导致性能问题,则可以在ImageView之上添加透明视图,并为其添加不同的OnClickListener

答案 1 :(得分:0)

如果您在imageview中有固定的部分,则可以使用框架布局,并在imageview上添加3个(例如)透明视图,然后在这些视图上设置点击侦听器。 但是如果您有动态部分,则可以通过结合使用onTouchListener和onClickListener来处理它,例如:

 // just store the touch X,Y coordinates
    View.OnTouchListener touchListener = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            // save the X,Y coordinates
            if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
                lastTouchDownXY[0] = event.getX();
                lastTouchDownXY[1] = event.getY();
            }

            // let the touch event pass on to whoever needs it
            return false;
        }
    };

    View.OnClickListener clickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // retrieve the stored coordinates
            float x = lastTouchDownXY[0];
            float y = lastTouchDownXY[1];

            // use the coordinates for whatever or check the clickable areas
            Log.i("TAG", "onLongClick: x = " + x + ", y = " + y);
        }
    };

答案 2 :(得分:0)

我认为最好的方法是将 frameLayout 声明为父视图,然后可以在 imageView 上声明 views ,然后单击每个视图都会执行您想要的操作。