当前位置: 移动技术网 > IT编程>移动开发>Android > Android右滑返回上一个界面的实现方法

Android右滑返回上一个界面的实现方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

电影网盘,青春痘王根会,防汛抗旱

android右滑返回上一个界面的实现方法

public class baseactivity extends activity implements ontouchlistener { 
 
  public progressdialog progressdialog; 
  public string states; 
  public requestqueue mqueue; 
 
  /** 触摸时按下的点 **/ 
  pointf downp = new pointf(); 
  /** 触摸时当前的点 **/ 
  pointf curp = new pointf(); 
 
  @override 
  protected void oncreate(bundle savedinstancestate) { 
    super.oncreate(savedinstancestate); 
    this.requestwindowfeature(window.feature_no_title); 
 
 
  } 
 
  @override 
  protected void onresume() { 
    super.onresume(); 
  } 
 
   
  @override 
  public boolean ontouchevent(motionevent event) { 
 
 
     
    curp.x = event.getx(); 
    switch (event.getaction()) { 
     
     
    case motionevent.action_down: 
 
      downp.x = event.getx(); 
     
      break; 
    case motionevent.action_move: 
 
 
      if (curp.x- downp.x > 500) { 
        log.i("test", "move-=-=-=--=-"); 
        finish(); 
       
      } 
 
      break; 
    case motionevent.action_up: 
 
      break; 
 
    default: 
      break; 
    } 
     
    return true; 
  } 
 
  @override 
  protected void onpause() { 
    super.onpause(); 
  } 
 
  @override 
  protected void ondestroy() { 
    super.ondestroy(); 
 
  } 
 
   
 
} 

如上所示,既然要滑动返回上一个界面,我给出的方法是重写ontouchevent事件,所以我们实现了ontouchlistener 这个接口,

接下来的事情就是,我们要做些什么事呢,没错,就是滑动判断,至于事件 switch 里面的 各个情况对应的是我们对屏幕做了什么样的操作就不解释了,(可以自行百度)如上所示,如果滑动距离超过500像素,就结束当前activity,其实写到这里基本上就没了,但是我怎么可能写这么低端的博客,你们说是不是,好的,重点来了,

博主帅哥,我现在就是用的你这个方法,但是为毛 scrollview 下的布局,对这个接口无效呢,好的,问的漂亮,我的回答是:我tm哪知道,....

ok,我们看下scrollview 源码:

他喵的,果然重写了这个方法, 根据 view 触碰事件的传递顺序,scrollview会先拦截到事件,所以,我们要做的就是,在不对scrollview本来的拦截事件做改变的情况下,加入我们所需要的需求来满足我们实现功能, 那么就很简答了, 当然是 自己 定义一个view,代码如下:

public class backscrollview extends scrollview { 
 
  /** 触摸时按下的点 **/ 
  pointf downp = new pointf(); 
  /** 触摸时当前的点 **/ 
  pointf curp = new pointf(); 
 
  public backscrollview(context context) { 
    super(context); 
  } 
 
  public backscrollview(context context, attributeset attrs, int defstyle) { 
    super(context, attrs, defstyle); 
  } 
 
  public backscrollview(context context, attributeset attrs) { 
    super(context, attrs); 
  } 
 
  @override 
  public boolean ontouchevent(motionevent event) { 
 
    curp.x = event.getx(); 
    switch (event.getaction()) { 
 
    case motionevent.action_down: 
 
      downp.x = event.getx(); 
      log.i("test", "downp.x-=-=-=--=-" + downp.x); 
      break; 
    case motionevent.action_move: 
      log.i("test", "downp.x-=-=-=--=-" + curp.x); 
 
      if (downp.x < 200) { 
 
        if (curp.x - downp.x > 500) { 
 
          return false; 
 
        } 
      } 
 
      break; 
    case motionevent.action_up: 
 
      break; 
 
    default: 
      break; 
    } 
    return super.ontouchevent(event); 
  } 

ok,在如上代码中,可以看到我们做了一个判断,当触摸点像素距离屏幕最左边200像素以内时,滑动才有效果,否则执行父类方法,没了? 我仅举这一例子说明可能存在的一些问题,当然,如果布局中也有其它控件出现类似的情况,那么跟 这个一样,自己定义一个view,重写它的 触摸事件,(其实自定义view很简单的,哥刚开始也觉得很难,后来 也就那样....) ,当然,直接finish可能会显得太单一,你们可以充分发挥你们的想象,可以添加一些动画进去,使得界面更加炫,

ok,今天就扯到这里,吃饭 time...

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网