如何实现,根据屏幕的拖动方向,进行前后的滚屏
2011-09-28 11:45
756 查看
这是根据拖动的方向,判断程序。再根据 pageAction 的值,调用相关的Animation,进行翻页或者滚屏处理。
/**
* 拖动事件的处理,在页面调用时使用 * @author yubo
*
*/
class TouchListenerConn implements OnTouchListener {
public boolean onTouch(View v, MotionEvent event) {
float distanceX;
float distanceY;
float distance;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: // 按下
touchDownX = event.getX(); // 触控的X轴位置
touchUpX = touchDownX;
touchDownY = event.getY(); // 触控的Y轴位置
touchUpY = touchDownY;
break;
case MotionEvent.ACTION_UP: // 放开
touchUpX = event.getX();
touchUpY = event.getY();
distanceX = touchUpX - touchDownX;
distanceY = touchUpY - touchDownY;
// X轴偏差 >= Y轴得偏差 采用X轴移动
if (Math.abs(distanceX)>DISTANCE ||Math.abs(distanceY)>DISTANCE )
{
//向左
if (Math.abs(distanceX) >= Math.abs(distanceY)){
//向左或者向右
if (distanceX <0 ) {
//如果左边位移大于上下位移
pageAction="LEFTTORIGHT" ; //翻页动作 LEFTTORIGHT/RIGHTTOLEFT/BOTTOMTOTOP/TOPTOBOTTOM
PageDownProcess();
}
else {
pageAction="RIGHTTOLEFT" ; //翻页动作 LEFTTORIGHT/RIGHTTOLEFT/BOTTOMTOTOP/TOPTOBOTTOM
PageUpProcess();
}
}
else {
//向上或者向下
if (distanceY > 0){
//向下翻页,下页
pageAction="TOPTOBOTTOM" ; //翻页动作 LEFTTORIGHT/RIGHTTOLEFT/BOTTOMTOTOP/TOPTOBOTTOM
PageUpProcess();
}
else {
//向上翻页/前页
pageAction="BOTTOMTOTOP" ; //翻页动作 LEFTTORIGHT/RIGHTTOLEFT/BOTTOMTOTOP/TOPTOBOTTOM
PageDownProcess();
}
}
}
break;
}
return true;
}
}
/**
* 拖动事件的处理,在页面调用时使用 * @author yubo
*
*/
class TouchListenerConn implements OnTouchListener {
public boolean onTouch(View v, MotionEvent event) {
float distanceX;
float distanceY;
float distance;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: // 按下
touchDownX = event.getX(); // 触控的X轴位置
touchUpX = touchDownX;
touchDownY = event.getY(); // 触控的Y轴位置
touchUpY = touchDownY;
break;
case MotionEvent.ACTION_UP: // 放开
touchUpX = event.getX();
touchUpY = event.getY();
distanceX = touchUpX - touchDownX;
distanceY = touchUpY - touchDownY;
// X轴偏差 >= Y轴得偏差 采用X轴移动
if (Math.abs(distanceX)>DISTANCE ||Math.abs(distanceY)>DISTANCE )
{
//向左
if (Math.abs(distanceX) >= Math.abs(distanceY)){
//向左或者向右
if (distanceX <0 ) {
//如果左边位移大于上下位移
pageAction="LEFTTORIGHT" ; //翻页动作 LEFTTORIGHT/RIGHTTOLEFT/BOTTOMTOTOP/TOPTOBOTTOM
PageDownProcess();
}
else {
pageAction="RIGHTTOLEFT" ; //翻页动作 LEFTTORIGHT/RIGHTTOLEFT/BOTTOMTOTOP/TOPTOBOTTOM
PageUpProcess();
}
}
else {
//向上或者向下
if (distanceY > 0){
//向下翻页,下页
pageAction="TOPTOBOTTOM" ; //翻页动作 LEFTTORIGHT/RIGHTTOLEFT/BOTTOMTOTOP/TOPTOBOTTOM
PageUpProcess();
}
else {
//向上翻页/前页
pageAction="BOTTOMTOTOP" ; //翻页动作 LEFTTORIGHT/RIGHTTOLEFT/BOTTOMTOTOP/TOPTOBOTTOM
PageDownProcess();
}
}
}
break;
}
return true;
}
}
相关文章推荐
- 如何在Visual Studio 2005或者Visual Studio 2008里实现拖动控件进行绝对定位?
- 如何重写PictureBox的OnPaint方法绘制矩形,并实现拖动,鼠标悬停时提示拖拽方向
- 如何在Visual Studio 2005或者Visual Studio 2008里实现拖动控件进行绝对定位?
- Android 如何实现屏幕转换方向
- 如何实现根据元素的id后面的编号进行样式的变化
- 如何在Visual Studio 2005或者Visual Studio 2008里实现拖动控件进行绝对定位?
- javascript实现根据iphone屏幕方向调用不同样式表的方法
- PullToRefreshListView实现根据拖拉的方向进行在顶部或者底部加载数据。
- JQuery移动页面开发之屏幕方向改变与滚屏的实现
- 如何编写一条SQL实现根据某个字段的条件对某个字段进行不同的update操作
- 蚂蚁是如何更新信息素的?如何根据概率进行选择的?(编程实现)
- 如何重写PictureBox的OnPaint方法绘制矩形,并实现拖动改变矩形大小,鼠标悬停时提示拖拽方向(二)
- 请教方法和例子:VS2003的datagrid控件,如何实现用鼠标拖动的方法选中任意区域的多个单元格,然后进行统一编辑??
- javascript实现根据iphone屏幕方向调用不同样式表的方法
- JQuery移动页面开发之屏幕方向改变与滚屏的实现
- android 如何实现水平方向根据焦点位置自动滚动?
- Javascript 如何实现对象的拖动?
- 如何对网络设备进行配置以实现Telnet
- ASP.NET - 如何:根据模式对 ASP.NET 服务器控件进行验证
- 实现自定义view(1):可在全屏幕自由拖动的view