zoukankan      html  css  js  c++  java
  • Android判断一个点是否在矩形区域内

    个人遇到的问题判断按钮的点击事件还是滑动事件

       private boolean button1Down = false;
       private boolean button2Down = false;
    
       private boolean pointInRect(float x, float y, int w, int h) {
                if (x < 0) {  
                    return false;
                }
                if (x > w) {
                    return false;
                }
                if (y < 0) {
                    return false;
                }
                if (y > h) {
                    return false;
                }
                return true;
        }
    

     判断按钮坐标是否在矩形区域内

     tv_button_group.setOnTouchListener(new View.OnTouchListener() {
    
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        switch (event.getAction()) {
                            case MotionEvent.ACTION_DOWN:
                                button1Down = pointInRect(event.getX(), event.getY(), v.getWidth(), v.getHeight());
                                break;
                            case MotionEvent.ACTION_MOVE:
                                for(int i=0; i<event.getHistorySize(); i++) {
                                    if(!pointInRect(event.getHistoricalX(i), event.getHistoricalY(i), v.getWidth(), v.getHeight())) {
                                        button1Down = false;
                                        break;
                                    }
                                }
                                break;
                            case MotionEvent.ACTION_UP:
    
                                // 判断是否为点击
                                if (button1Down && pointInRect(event.getX(), event.getY(), v.getWidth(), v.getHeight())) {
                                    if (initdata.get(position).isIsJoined()) {
                                        SessionHelper.startTeamSession(MainActivity.this, initdata.get(position).getGroupId());
                                    } else {
                                        joinGroup(initdata.get(position).getGroupId());
                                    }
                                } else {

                     //判断向上距离大于300为滑动及隐藏卡片页显示地图页 if (event.getY() < -300) { recyclerView.setVisibility(View.GONE); iv_data.setVisibility(View.GONE); ll_bottom.setVisibility(View.GONE); vw_view.setVisibility(View.GONE); rl_deta.setVisibility(View.GONE); mTitleWidget.setVisibility(View.GONE); im_fanhui.setVisibility(View.VISIBLE); rl_group.setVisibility(View.VISIBLE); itData(mLongitude, mLatitude); uiSettings.setScrollGesturesEnabled(true); //禁止拖拽 isoncl = false; return true; } } break; } return true; } });
  • 相关阅读:
    MySql错误解决方案汇总
    不适合做管理的人zz
    linux 自动执行 crontab学习笔记
    Google Megastore分布式存储技术全揭秘zz
    【算法】n个人围成一圈报数,报到3的退出,下面接着从1开始报,问最后剩下的是谁?
    大数据下的数据分析平台架构zz
    ETL的可扩展性和可维护性zz
    【算法】各种排序算法测试代码
    谈爱情故事,谈观察者模式
    解读设计模式单例模式(Singleton Pattern)
  • 原文地址:https://www.cnblogs.com/monkey0928/p/10695112.html
Copyright © 2011-2022 走看看