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

 更新时间:2017年10月24日 10:23:17   作者:apple_xiangsiyu  
这篇文章主要介绍了Android右滑返回上一个界面的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下

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...

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

相关文章

  • Android图片识别应用详解

    Android图片识别应用详解

    这篇文章主要为大家详细介绍了Android图片识别的应用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android客制化adb shell进去后显示shell@xxx的标识

    Android客制化adb shell进去后显示shell@xxx的标识

    今天小编就为大家分享一篇关于Android客制化adb shell进去后显示shell@xxx的标识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Android开发简单实现摇动动画的方法

    Android开发简单实现摇动动画的方法

    这篇文章主要介绍了Android开发简单实现摇动动画的方法,结合实例形式分析了Android摇动动画的布局与功能简单实现方法,需要的朋友可以参考下
    2017-10-10
  • Android自定义View之酷炫数字圆环

    Android自定义View之酷炫数字圆环

    这篇文章主要为大家详细介绍了Android自定义View之酷炫数字圆环,实现效果很酷,,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android自定义控件实现雷达图效果

    Android自定义控件实现雷达图效果

    这篇文章主要为大家详细介绍了Android自定义控件实现雷达图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 浅谈Android编码规范及命名规范

    浅谈Android编码规范及命名规范

    本文主要总结一下Android项目的开发规范:1、编码规范 2、命名规范。有需要的朋友可以看下
    2016-12-12
  • Android中buildToolVersion与CompileSdkVersion的区别

    Android中buildToolVersion与CompileSdkVersion的区别

    今天小编就为大家分享一篇关于Android中buildToolVersion与CompileSdkVersion的区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Android实现网络图片浏览功能

    Android实现网络图片浏览功能

    这篇文章主要为大家详细介绍了Android实现网络图片浏览功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Android Fragment使用全解

    Android Fragment使用全解

    这篇文章主要介绍了Android Fragment使用的相关资料,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-04-04
  • Android编程实现任务管理器的方法

    Android编程实现任务管理器的方法

    这篇文章主要介绍了Android编程实现任务管理器的方法,涉及Android针对程序与进程操作的相关技巧,需要的朋友可以参考下
    2015-12-12

最新评论