`
meohao
  • 浏览: 97886 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

写在20120229:多点触控,屏幕缩略图

 
阅读更多
    目前手机应用已经越来越多的用到了手势,其中Launcher中大家比较熟悉的就是屏幕缩略图,那么简单的实现就需要了解之前的那篇博客,关于ViewGroup和View的触屏事件的描述,这里也用到了比较重要的两个方法。onInterceptTouchEvent()和onTouchEvent()。
    熟悉Launcher的人都会知道源码中会有一个DragLayer类,这个DragLayer是覆盖在WorkSpace上面的一层拖动层,那么要实现两只手指呈“捏”的手势,形成屏幕缩略图就得从该类做文章,重写onInterceptTouchEvent()、onTouchEvent()。
@override
public boolean onInterceptTouchEvent(MotionEvent ev){
  if(ev.getPointerCount() == 2&&当前Launcher的一些拖动和显示状态符合生成缩略图){
    switch(ev.getAction()& MotionEvent.ACTION_MASK){
      case MotionEvent.ACTION_POINTER_DOWN:
           twoPointDis = (int)distance(ev);
           setLinearEquation(ev);
    }
    showThumbnail = true;
    return true;
  }
  showThumbnail = false;
  //接下来处理不是两手捏的触屏之外的事件。 
}

@override
public boolean onTouchEvent(MotionEvent ev){
  int action = ev.getAction();
  int x = (int) ev.getX();
  int y = (int) ev.getY();
  if(showThumbnail && ev.getPointerCount() == 2){
    int dis;
    switch(ev.getAction()& MotionEvent.ACTION_MASK){
      case MotionEvent.ACTION_MOVE:
           dis=distance(ev);
           if((twoPointDis - dis)>生成缩略图最小阈值(80像素,捏的时候移动的距离)&& 当前Launcher的一些拖动和显示状态符合生成缩略图)
              thumbnailShow();//包括生成时的动画
             else if(((twoPointDis - dis)<-生成缩略图最小阈值(80像素,捏的时候移动的距离)&& 当前Launcher的一些拖动和显示状态符合生成缩略图)
             //根据选择的缩略图某一屏返回到workspace
    }
    return true;
  }
  showThumbnail = false;
  //接下来处理不是两手捏的触屏之外的事件。 
}

private int setLinearEquation(MotionEvent ev){
  float x0 = ev.getX(0);
  float x1 = ev.getX(1);
  float y0 = ev.getY(0);
  float y1 = ev.getY(1);

  slop = (y1-y0)/(x1-x0);
  y = (int) (y0-slop*x0);

}

private int distance(MotionEvent ev){
  if(ev.getPointerCount()>1){
              float x = ev.getX(0)-ev.getX(1);
              float y = ev.getY(0)-ev.getY(1)
              return (int)Math.sqrt(x*x+y*y);
           }else{
              return 1;
  }
}

分享到:
评论

相关推荐

    Android多点触控技术实战,对图片进行缩放和移动Demo

    在Android开发中,多点触控(Multi-Touch)技术是一项关键特性,它允许用户通过两个或更多手指来与屏幕交互,实现如缩放、旋转和拖动等操作。本项目是一个实战示例,演示了如何在Android应用中实现图片的双指缩放和...

    WPF 4概述ppt

    - **缩略图工具栏 (Thumbnail toolbars)**:允许应用程序在任务栏缩略图上显示自定义工具栏。 - **图标叠加 (Icon overlays)**:在任务栏图标上显示额外的信息或状态。 - **进度条 (Progress bars)**:在任务栏图标...

    图片浏览器技术点分析以及实践指导书.pdf

    5. **图片的多点触控与手势操作**:在大图查看模式下,实现多点触控(pinch-to-zoom)和图片拖拽功能,需要用到GestureDetector和ScaleGestureDetector等手势检测类。这些技术允许用户通过手指的触摸动作来缩放图片...

    苹果ipad5怎么关闭后台程序.docx

    在这个界面上,你会看到当前正在后台运行的所有应用程序的缩略图,这些缩略图排列整齐,而下方则显示了应用程序的图标(ICOM)。你可以通过左右滑动缩略图来浏览所有后台应用。 3) 如果你想从这个界面切换到另一个...

    JS简易图片裁剪-多点移动

    在某些情况下,PHP可以用来生成缩略图或者处理图像格式转换。 - "img":这是一个文件夹,通常用于存放图片资源。在这个例子中,它可能包含待裁剪的原始图片或者是裁剪示例的图片。 在实现"JS简易图片裁剪-多点移动...

    windows7体验与技巧

    4. **多点触控支持**: Windows 7增强了对多点触控输入的支持,使得触控设备用户可以同时使用多个手指进行操作,如缩放、旋转图片等。 5. **库功能**: 库是Windows 7中的一项创新,它可以帮助用户组织和管理文件。...

    Windows7教程.doc

    - **任务栏预览**:Windows 7 的任务栏提供任务栏按钮的缩略图预览,只需将鼠标悬停在图标上,就能查看窗口内容,无需打开每个窗口。 - **跳转列表**:任务栏上的程序图标可以显示最近打开的文件或任务,便于快速...

    MeeGo手持移动设备的UI设计指南.docx

    静音警告(加速器)捏(多点触控的手势) 缩放(随着手指在屏幕的相应位置触摸) Two-finger long Press(两个手指长按) 选择文本(在不可编辑的文本域) 锁屏 * 当用户按下电源按键把移动设备从闲置的状态唤醒的...

    控件以及双指放大缩小图片、单指拖动图片.zip

    为了解决这个问题,可以使用`BitmapFactory.Options`来加载适应屏幕大小的缩略图,或者使用`Matrix`来动态调整图像的显示比例。 此外,为了提高用户体验,可以考虑添加动画效果,比如渐变缩放和平滑滚动。Android的...

    图像拖拽,Delphi拖动图片改变位置..rar

    对于更复杂的拖动效果,如拖动时显示一个图像的缩略图,可能需要利用TCanvas对象在OnPaint事件中绘制。TCanvas可以用来在屏幕或内存中画图,允许我们在拖动过程中绘制图像的实时预览。 7. **代码示例**: 以下是...

    一个高保真android交互原型

    在桌面缩略图界面可进行桌面管理,如桌面重排、桌面隐藏、桌面恢复、桌面增加和删除等。详见动画演示文档。 5、Launcher快捷栏操作(请用鼠标拖动体验) Launcher快捷栏的图标分左右两页,每页四个图标。可左右...

    win7新操作PPT

    - **家庭高级版**:在普通版的基础上增加了更多的媒体功能和支持,比如Aero视觉效果、多点触控支持等。 - **专业版**:针对商业用户设计,包含了加密、远程桌面等功能,适合小型企业使用。 - **旗舰版**:包含了所有...

    PhotoSwipe4

    它支持多点触控,包括双指缩放、旋转等手势,使得用户可以通过手指操作来放大、缩小或旋转图片,极大地提升了用户体验。 ### 3. 自适应布局 **PhotoSwipe4** 可以自动适应不同的屏幕尺寸和分辨率,无论是小屏幕的...

    MeeGo手持移动设备的UI设计指导书.doc

    6. **Pinch(捏合)** - 多点触控手势,用于缩放,随着手指在屏幕上的相对位置改变。 7. **Two-finger Long Press(双指长按)** - 对于不可编辑的文本区域,用于选择文本。 MeeGo的用户界面设计注重用户体验和多...

Global site tag (gtag.js) - Google Analytics