先上效果图,如下:
先分析一下功能的主要技术点,右滑即手势判断,当滑到一直距离时才执行返回,并且手指按下的位置是在屏幕的最左边(这个也是有一定范围的), 这些可以实现onTouchEvent来实现。 接着就是返回时,有滑动效果,很显然这个是Acitivty切换动画实现的。好啦,分析完了就开干。下面上代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
x=event.getX();
y=event.getY();
// Log.e("ACTION_DOWN","x="+x);
break;
case MotionEvent.ACTION_MOVE:
float mX = event.getX();
float mY = event.getY();
float dX = Math.abs(mX-x);
float dY = Math.abs(mY-y);
scollX = mX-x;
if (isScroll && scollX>0){
view.scrollTo(-(int) scollX,0);
}
break;
case MotionEvent.ACTION_UP:
if (isScroll && scollX>300){
finish();
overridePendingTransition(R.anim.bga_sbl_activity_backward_enter,R.anim.bga_sbl_activity_backward_exit);
}else {
isScroll = false;
view.scrollTo(0,0);
}
break;
}
return false;
}
这段代码主要是实现了 手指在屏幕上滑动时,判断方向是否是右滑,是的话就用scrollTo()来实现Activity的滑动,当滑动超过300px时就执行返回,并且加上切换动画。看到这里细心的朋友应该会发现scrollTo()方法滑动的只是内容,并不是View的本身,那是怎么实现整个activity的滑动的呢?没错,如果只是上面这部分代码,当你滑动时,是看不懂上一个界面的内容的,因为我们的View还在,这里说一下这个View是我获取的activity的根布局。好啦,既然是这个View挡住了我们的的上一层布局,那么是不是只要让它透明就可以了呢?答案是肯定的,我记得要让根布局透明只需要改一下主题即可,如下:
<!-- 用于开启滑动返回功能的 Activity --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item>
只需要把上面两行代码添加到你的主题中即可。
感觉已经大功告成了,其实不是的,前面我们说了,当手指从屏幕的最左边向右滑时,才实发滑动,这个就涉及到事件分发了。比如我们一个按钮的宽占满全屏,那当我们手指在按钮的最左侧按下时,是执行点击事件还是执行滑动呢?这个时候就需要用到dispatchTouchEvent来处理这个问题。下面看代码:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction()==MotionEvent.ACTION_DOWN){
float x = ev.getX();
// Log.e("dispatchTouchEvent","x="+x);
if (x<=50&&isCanScroll){
isScroll = true;
return true;
}
}
return super.dispatchTouchEvent(ev);
}
上面的代码是当我们的手指在屏幕最左侧按下时,如果小于50(这个数值可以根据需求自己设置),我们就认为用户需要右滑,于是,我们就消费掉,不往下一层传递。
当没有小于50时,正常执行。
整个流程已经讲完了,是不是很简单!这些代码最好放到Activity基类中实现!这样方便管理!
总结
以上所述是小编给大家介绍的Android仿微信右滑返回功能的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 微信右滑返回
# Android右滑返回上一个界面的实现方法
# android 右滑返回的示例代码
# Android实现类似IOS右滑返回的效果(原因分析及解决办法)
# Android中SwipeBack实现右滑返回效果
# Android 实现右滑返回功能
# 按下
# 当我们
# 来实现
# 好啦
# 小编
# 实发
# 是在
# 还在
# 那是
# 在此
# 说了
# 当你
# 只需
# 这个问题
# 有一定
# 这段
# 住了
# 要把
# 这部
# 给大家
相关文章:
深圳网站制作培训,深圳哪些招聘网站比较好?
如何在阿里云虚拟服务器快速搭建网站?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
郑州企业网站制作公司,郑州招聘网站有哪些?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
建站之星伪静态规则如何设置?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
常州企业网站制作公司,全国继续教育网怎么登录?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
C#如何在一个XML文件中查找并替换文本内容
如何用西部建站助手快速创建专业网站?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何快速生成ASP一键建站模板并优化安全性?
网站制作壁纸教程视频,电脑壁纸网站?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
怎么将XML数据可视化 D3.js加载XML
建站之星后台密码遗忘?如何快速找回?
专业公司网站制作公司,用什么语言做企业网站比较好?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
Android自定义控件实现温度旋转按钮效果
如何构建满足综合性能需求的优质建站方案?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何快速搭建个人网站并优化SEO?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
如何选择适合PHP云建站的开源框架?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
,有什么在线背英语单词效率比较高的网站?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
历史网站制作软件,华为如何找回被删除的网站?
网站制作需要会哪些技术,建立一个网站要花费多少?
建站与域名管理如何高效结合?
如何选择网络建站服务器?高效建站必看指南
Python lxml的etree和ElementTree有什么区别
佛山企业网站制作公司有哪些,沟通100网上服务官网?
长沙做网站要多少钱,长沙国安网络怎么样?
如何在阿里云服务器自主搭建网站?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
建站之星后台管理如何实现高效配置?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何通过PHP快速构建高效问答网站功能?
如何通过西部建站助手安装IIS服务器?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星3.0如何解决常见操作问题?
建站之星安装提示数据库无法连接如何解决?
如何确保FTP站点访问权限与数据传输安全?
*请认真填写需求信息,我们会在24小时内与您取得联系。