博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android实例] webview 实现翻页功能
阅读量:6164 次
发布时间:2019-06-21

本文共 2202 字,大约阅读时间需要 7 分钟。

这是我在项目中用的一个webview 实现翻页功能 ,这个功能主要用到了ViewFlipper控件,

下面我给详细的介绍一下:
MyWebView 这个类很重要,
package com.filpper;
import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;
import android.view.animation.AnimationUtils;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.ViewFlipper;
public class MyWebView extends WebView{
float downXValue; 
long downTime;    
private ViewFlipper flipper; 
private float lastTouchX,lastTouchY; 
private boolean hasMoved = false; 
public MyWebView(Context context, ViewFlipper flipper) {
  super(context);
  
  
  this.flipper=flipper;
  }
@Override
public boolean onTouchEvent(MotionEvent evt) {
  // TODO Auto-generated method stub
  boolean consumed = super.onTouchEvent(evt);
  if(isClickable()){
   switch (evt.getAction()){
   
   case MotionEvent.ACTION_DOWN:
    lastTouchX=evt.getX();
    lastTouchY=evt.getY();
    downXValue=evt.getX();
    downTime=evt.getEventTime();
    hasMoved=false;
    break;
    
   case MotionEvent.ACTION_MOVE:
    hasMoved=moved(evt);
    break;
   
    
   case MotionEvent.ACTION_UP:
    float currentX=evt.getX();
    long currentTime=evt.getEventTime();
    float difference = Math.abs(downXValue - currentX);
    long time=currentTime-downTime;
    Log.i("Touch Event========", "Distance: " + difference + "px Time: "+ time + "ms");
   
    if((downXValue < currentX) && (difference > 100 && (time < 220))) {
                         /** 跳到上一页 */
     this.flipper.setInAnimation(AnimationUtils.loadAnimation(
       this.getContext(), R.anim.push_right_in));
     this.flipper.setOutAnimation(AnimationUtils.loadAnimation(   
       this.getContext(), R.anim.push_right_out));   
     
     flipper.showPrevious();             
     }
    
    
    /** X轴滑动间隔大于100,并且时候小于220ms,并且向X轴左标的目标滑动 */
    if ((downXValue > currentX) && (difference > 100) && (time < 220)) {
     /** 跳到下一页 */
     this.flipper.setInAnimation(AnimationUtils.loadAnimation(                            
       this.getContext(),R.anim.push_left_in));     
     this.flipper.setOutAnimation(AnimationUtils.loadAnimation(                        
       this.getContext(), R.anim.push_left_out));
     flipper.showNext();                 
     }                
    break;           
    }        
   
   }
   
   
   
   
   
  
  return consumed || isClickable();
}
private boolean moved(MotionEvent evt){
  
  return hasMoved|| Math.abs(evt.getX()-lastTouchX)>10.0||Math.abs(evt.getY()-lastTouchY)>10.0;
}
}
这个类中主要是对onTouchEvent事件进行处理.

转载于:https://www.cnblogs.com/greywolf/archive/2012/12/23/2829786.html

你可能感兴趣的文章
JS图片跟着鼠标跑效果
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>
416. Partition Equal Subset Sum
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>