目前手机应用已经越来越多的用到了手势,其中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开发中,多点触控(Multi-Touch)技术是一项关键特性,它允许用户通过两个或更多手指来与屏幕交互,实现如缩放、旋转和拖动等操作。本项目是一个实战示例,演示了如何在Android应用中实现图片的双指缩放和...
- **缩略图工具栏 (Thumbnail toolbars)**:允许应用程序在任务栏缩略图上显示自定义工具栏。 - **图标叠加 (Icon overlays)**:在任务栏图标上显示额外的信息或状态。 - **进度条 (Progress bars)**:在任务栏图标...
5. **图片的多点触控与手势操作**:在大图查看模式下,实现多点触控(pinch-to-zoom)和图片拖拽功能,需要用到GestureDetector和ScaleGestureDetector等手势检测类。这些技术允许用户通过手指的触摸动作来缩放图片...
在这个界面上,你会看到当前正在后台运行的所有应用程序的缩略图,这些缩略图排列整齐,而下方则显示了应用程序的图标(ICOM)。你可以通过左右滑动缩略图来浏览所有后台应用。 3) 如果你想从这个界面切换到另一个...
在某些情况下,PHP可以用来生成缩略图或者处理图像格式转换。 - "img":这是一个文件夹,通常用于存放图片资源。在这个例子中,它可能包含待裁剪的原始图片或者是裁剪示例的图片。 在实现"JS简易图片裁剪-多点移动...
4. **多点触控支持**: Windows 7增强了对多点触控输入的支持,使得触控设备用户可以同时使用多个手指进行操作,如缩放、旋转图片等。 5. **库功能**: 库是Windows 7中的一项创新,它可以帮助用户组织和管理文件。...
- **任务栏预览**:Windows 7 的任务栏提供任务栏按钮的缩略图预览,只需将鼠标悬停在图标上,就能查看窗口内容,无需打开每个窗口。 - **跳转列表**:任务栏上的程序图标可以显示最近打开的文件或任务,便于快速...
静音警告(加速器)捏(多点触控的手势) 缩放(随着手指在屏幕的相应位置触摸) Two-finger long Press(两个手指长按) 选择文本(在不可编辑的文本域) 锁屏 * 当用户按下电源按键把移动设备从闲置的状态唤醒的...
为了解决这个问题,可以使用`BitmapFactory.Options`来加载适应屏幕大小的缩略图,或者使用`Matrix`来动态调整图像的显示比例。 此外,为了提高用户体验,可以考虑添加动画效果,比如渐变缩放和平滑滚动。Android的...
对于更复杂的拖动效果,如拖动时显示一个图像的缩略图,可能需要利用TCanvas对象在OnPaint事件中绘制。TCanvas可以用来在屏幕或内存中画图,允许我们在拖动过程中绘制图像的实时预览。 7. **代码示例**: 以下是...
在桌面缩略图界面可进行桌面管理,如桌面重排、桌面隐藏、桌面恢复、桌面增加和删除等。详见动画演示文档。 5、Launcher快捷栏操作(请用鼠标拖动体验) Launcher快捷栏的图标分左右两页,每页四个图标。可左右...
- **家庭高级版**:在普通版的基础上增加了更多的媒体功能和支持,比如Aero视觉效果、多点触控支持等。 - **专业版**:针对商业用户设计,包含了加密、远程桌面等功能,适合小型企业使用。 - **旗舰版**:包含了所有...
它支持多点触控,包括双指缩放、旋转等手势,使得用户可以通过手指操作来放大、缩小或旋转图片,极大地提升了用户体验。 ### 3. 自适应布局 **PhotoSwipe4** 可以自动适应不同的屏幕尺寸和分辨率,无论是小屏幕的...
6. **Pinch(捏合)** - 多点触控手势,用于缩放,随着手指在屏幕上的相对位置改变。 7. **Two-finger Long Press(双指长按)** - 对于不可编辑的文本区域,用于选择文本。 MeeGo的用户界面设计注重用户体验和多...