加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

Android2.2.3 达成多点缩放功能

发布时间:2021-11-24 17:48:53 所属栏目:教程 来源:互联网
导读:Android2.2.3 实现多点缩放功能: // 触摸事件 @Override public boolean onTouchEvent(MotionEvent event) { if (false == this.is_initialized()) { return false; } try { PointF point_s = new PointF(); point_s.x = event.getX(); point_s.y = event.g

Android2.2.3 实现多点缩放功能:
 
// 触摸事件   
    @Override  
    public boolean onTouchEvent(MotionEvent event) {  
        if (false == this.is_initialized()) {  
            return false;  
        }  
  
        try {  
            PointF point_s = new PointF();  
            point_s.x = event.getX();  
            point_s.y = event.getY();  
            int x = (int) point_s.x;// Float.to( event.getX() );   
            int y = (int) point_s.y;// Float.floatToIntBits( event.getY() );   
  
            switch (event.getAction() & MotionEvent.ACTION_MASK) {  
            case MotionEvent.ACTION_DOWN:  
                m_pressPt.set(x, y);  
                mode = DRAG;  
                break;  
            case MotionEvent.ACTION_UP:  
  
                if (mode == DRAG) {  
                    int px = x - m_pressPt.x;  
                    int py = y - m_pressPt.y;  
  
                    if (px != 0 && py != 0) {  
                        m_naviEngine.SetCenter(480 - px, 270 - py);  
                    }  
                }  
  
  
                mode = NONE;  
  
                break;  
                  
            case MotionEvent.ACTION_POINTER_UP:  
                if (mode == ZOOM) {  
                    float newDist = spacing(event);  
                    if (newDist > 10f) {  
                        float scale = newDist - oldDist;  
                        if (scale > 0) {  
                            m_levelIndex = getLevelIndex();  
                            // 设置当前比例尺   
                            if (m_levelIndex < m_level.length - 1) {  
                                m_levelIndex++;  
                                m_naviEngine.SetLevel(m_level[m_levelIndex]);  
                                m_btnZoomOut.setEnabled(true);  
                                if (m_levelIndex == m_level.length - 1) {  
                                    m_btnZoomIn.setEnabled(false);  
                                }  
  
                                // 更新信息弹出框   
                                // showPopSign();   
                          
                            }  
                        } else {  
                            m_levelIndex = getLevelIndex();  
                            // 设置当前比例尺以及按钮状态   
                            if (m_levelIndex > 0) {  
                                m_levelIndex--;  
                                m_naviEngine.SetLevel(m_level[m_levelIndex]);  
                                m_btnZoomIn.setEnabled(true);  
                                if (m_levelIndex == 0) {  
                                    m_btnZoomOut.setEnabled(false);  
                                }  
  
                                // 更新信息弹出框   
                                // showPopSign();   
                            }  
                        }  
                    }  
                }  
                break;  
            case MotionEvent.ACTION_POINTER_DOWN:  
                oldDist = spacing(event);  
                if (oldDist > 10f) {  
  
                    mode = ZOOM;  
  
                }  
                break;  
            }  
        } catch (UnsatisfiedLinkError e) {  
            return false;  
        }  
  
        return m_gestureScanner.onTouchEvent(event);  
    }  

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读