图片点击之区域点击

原创 2016年08月29日 13:45:56
public class RegionView extends ImageButton {

    private OnRegionListening onRegionListening;

    private int imgUp = 1;
    private int imgDown = 2;
    private int imgLeft = 3;
    private int imgRight = 4;
    private int imgCenter = 5;

    private int status;

        private int center;
        private int innerCircleRadius;


    public RegionView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public interface OnRegionListening {
        void onRegionListening(int Region);
        void onRegionCancel(int Region);
    }

    /**
     * 方向键盘的监听 1 上 2 下 3左 4右 5ok
     *
     * @param listening
     */
    public void setOnRegionListening(OnRegionListening listening) {
        onRegionListening = listening;
    }

    @Override
    public boolean onTouchEvent(MotionEvent paramMotionEvent) {
        float f1 = paramMotionEvent.getX();
        float f2 = paramMotionEvent.getY();

        float f3 = getWidth();

       float f4 = getHeight();

        center = getWidth()/2;
        innerCircleRadius = center / 3;


        switch (paramMotionEvent.getAction()) {
        case MotionEvent.ACTION_DOWN:

            status = 0;

            if ((f1 > f3 / 3.0F) && (f1 < 2.0F * f3 / 3.0F) && (f2 > f4 / 3.0F) && (f2 < f4 * 2.0F / 3.0F)) {
                status = imgCenter;
                setImageResource(R.mipmap.navigation_center);

            } else {
                if (f2 < (f4 / 2)) {

                    if (f1 < f3 / 3.0F) {
                        status = imgLeft;
                        setImageResource(R.mipmap.navigation_left);
                    } else if (f1 > (f3 / 3.0F) * 2.0F) {
                        status = imgRight;
                        setImageResource(R.mipmap.navigation_right);
                    } else {
                        status = imgUp;
                        setImageResource(R.mipmap.navigation_up);
                    }

                } else {
                    if (f1 < f3 / 3.0F) {
                        status = imgLeft;
                        setImageResource(R.mipmap.navigation_left);
                    } else if (f1 > (f3 / 3.0F) * 2.0F) {
                        status = imgRight;
                        setImageResource(R.mipmap.navigation_right);
                    } else {
                        status = imgDown;
                        setImageResource(R.mipmap.navigation_down);
                    }
                }

            }

            if (onRegionListening != null) {
                onRegionListening.onRegionListening(status);
            }

            break;
        case MotionEvent.ACTION_UP:
            if (onRegionListening != null) {
                onRegionListening.onRegionCancel(status);
            }
            removeCallbacks(runnable);
            post(runnable);
            break;
        case MotionEvent.ACTION_CANCEL:
            removeCallbacks(runnable);
            post(runnable);
            break;
        }

        return super.onTouchEvent(paramMotionEvent);
    }

    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            setImageResource(R.mipmap.navigation_normal);
        }

    };


    private int checkDir(float x, float y) {
                     int dir = 0;

                     if (Math.sqrt(Math.pow(y - center, 2) + Math.pow(x - center, 2)) < innerCircleRadius) {// 判断在中心圆圈内
                             dir = 5;
                             System.out.println("----中央");
                         } else if (y < x && y + x < 2 * center) {
                             dir = 2;
                             System.out.println("----向上");
                         } else if (y < x && y + x > 2 * center) {
                             dir = 3;
                             System.out.println("----向右");
                         } else if (y > x && y + x < 2 * center) {
                             dir = 1;
                             System.out.println("----向左");
                         } else if (y > x && y + x > 2 * center) {
                             dir = 4;
                             System.out.println("----向下");
                         }

                     return dir;
                 }


}


调用:

derectionView.setOnRegionListening(new RegionView.onRegionListening() {

    public void onRegionListening(int direction) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onRegionCancel(int direction) {

        switch (direction){
            case 1://上

                break;
            case 2://下

                break;
            case 3://左

                break;
            case 4://右

                break;
            case 5://中

                break;
        }
    }
});



版权声明:本文为博主原创文章,未经博主允许不得转载。

点击图片中不规则图形提示选中不同区域

如图所示,当点击不同区域做出不同提示 首先制作背景图,然后将不同区域的图片单独截取下来,截取的楼层图必须和背景相同大,保证当所有图片重叠是是一样完整的图片 背景图: 楼层图: pa...

点击链接页面滑动到指定区域_和_图片延迟加载

点击链接页面滑动到指定区域和图片延迟加载 JS代码           //点击链接页面滑动到指定区域           $(document).ready(fun...
  • cplvfx
  • cplvfx
  • 2017年03月30日 17:44
  • 106

点击图片特定区域实现图片动态切换(图片热点、谷歌手形切换)

关于点击图片的特定区域实现图片的动态切换效果,在网上找了很久,也没能找到合适的例子,好吧,只有自己动手写一个...     此案例运用了图片的热点技术,可以链接到特定的网页文件,但是此处不需要,我只...

andrioid 扩展图片,即点击图片以外的布局区域也响应图片事件

方法一:

鼠标点击区域外层消失

  • 2012年12月18日 14:55
  • 9KB
  • 下载

C# 在一个区域点击检测

  • 2009年04月23日 13:45
  • 8KB
  • 下载

ArcGIS 实现框选区域查询要素后,要素点击弹出框

2015.11.12 在webGis 项目的开发中,当前已经实现使用QueryTask来针对要素进行NAME,空间,缓冲区的查询之后,...

android 点击空白区域,隐藏输入法

  • 2013年11月29日 16:33
  • 1.42MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图片点击之区域点击
举报原因:
原因补充:

(最多只允许输入30个字)