Android 点击图片设置相关的响应事件

实现相关的接口:

implements View.OnTouchListener

实现相关函数:

public boolean onTouch(View view, MotionEvent motionEvent){}

相关实现坑点:

   因为点击事件主要分为三种,拖拉,点击,抬起。点击  对应的事件就是 ACTION_DOWN,抬起 对应的事件就是 ACTION_UP。所以如果你点击一次,抬起一次,相应的就会触发两次 onTouch 事件。如果涉及到拖拉的话,可能就比较复杂了,但是也有对应的事件。【Android 寻找对应得API触发事件即可】

实现demo,实现点击不同相应的位置实现相应的事件处理函数:

相关图片:

Android 点击图片设置相关的响应事件_第1张图片

相关实现代码:
 

// 图片点击位置获取
ImageView IndexChooseImg = (ImageView) view.findViewById(R.id.IndexChooseImg);
IndexChooseImg.setOnTouchListener(this);

//相关绑定事件:
private int actionDown_x = 0 , actionDown_y = 0 , actionUp_x = 0 , actionUp_y = 0;
private boolean actionflag = true;
    /**
     * 注意返回值
     * true:view继续响应Touch操作;
     * false:view不再响应Touch操作,故此处若为false,只能显示起始位置,不能显示实时位置和结束位置
     */
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
        actionflag = !actionflag;
        switch (motionEvent.getAction()) {
            /**
             * 点击的开始位置
             */
            case MotionEvent.ACTION_DOWN:
                actionDown_x = (int)motionEvent.getX();
                actionDown_y = (int)motionEvent.getY();
                break;
            case MotionEvent.ACTION_UP:
                actionUp_x =  (int)motionEvent.getX();
                actionUp_y =  (int)motionEvent.getY();
                break;
            default:
                break;
        }

        // 表示点击了九型人格中某一处
        if( actionUp_x == actionDown_x && actionUp_y == actionDown_y){
            //Log.d("resultInfo", actionUp_x + " " + actionDown_y);
            // 九型人格 -- 8领导型 104 x 225 , 116 y 145
            if( actionUp_x >= 104 && actionUp_x <= 225 && actionUp_y >= 116 && actionUp_y <= 145){
                    Toast.makeText(view.getContext() , "8号" , Toast.LENGTH_SHORT).show();
            }else // 九型人格 -- 7领导型 47 x 167 , 231 y 262
                if( actionUp_x >= 47 && actionUp_x <= 167 && actionUp_y >= 231 && actionUp_y <= 262 ){
                    Toast.makeText(view.getContext() , "7号" , Toast.LENGTH_SHORT).show();
            }else // 九型人格 -- 9领导型 301 x 396 , 18 y 92
                if( actionUp_x >= 301 && actionUp_x <= 396 && actionUp_y >= 18 && actionUp_y <= 92 ){
                    Toast.makeText(view.getContext() , "9号" , Toast.LENGTH_SHORT).show();
            }else // 九型人格 -- 1领导型 471 x 585 , 116 y 151
                if( actionUp_x >= 471 && actionUp_x <= 585 && actionUp_y >= 116 && actionUp_y <= 151 ){
                    Toast.makeText(view.getContext() , "1号" , Toast.LENGTH_SHORT).show();
            }else // 九型人格 -- 2领导型 533 x 651 , 232 y 266
                if(actionUp_x >= 533 && actionUp_x <= 651 && actionUp_y >= 232 && actionUp_y <= 266 ){
                    Toast.makeText(view.getContext() , "2号" , Toast.LENGTH_SHORT).show();
            }else // 九型人格 -- 3领导型 516 x 636 , 350 y 381
                if(actionUp_x >= 516 && actionUp_x <= 636 && actionUp_y >= 350 && actionUp_y <= 381 ) {
                    Toast.makeText(view.getContext(), "3号", Toast.LENGTH_SHORT).show();
            }else // 九型人格 -- 4领导型 399 x 519 , 460 y 490
                if(actionUp_x >= 399 && actionUp_x <= 519 && actionUp_y >= 460 && actionUp_y <= 490 ) {
                    Toast.makeText(view.getContext(), "4号", Toast.LENGTH_SHORT).show();
            }else // 九型人格 -- 5领导型 177 x 293 , 456 y 493
                if(actionUp_x >= 177 && actionUp_x <= 293 && actionUp_y >= 456 && actionUp_y <= 493 ) {
                    Toast.makeText(view.getContext(), "5号", Toast.LENGTH_SHORT).show();
            }else // 九型人格 -- 6领导型 61 x 179 , 348 y 388
            if(actionUp_x >= 61 && actionUp_x <= 179 && actionUp_y >= 348 && actionUp_y <= 388 ) {
                Toast.makeText(view.getContext(), "6号", Toast.LENGTH_SHORT).show();
            }
        }
        // 第一次进来 是 false , 第二次进来是true
        if( actionflag == true){
            actionUp_x = 0 ; actionUp_y = 0;
        }
        return true;
}

 

你可能感兴趣的:(Android)