下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android仿iOS如何实现侧滑返回功能
这篇文章将为大家详细讲解有关Android仿iOS如何实现侧滑返回功能,在下觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先上个效果再说:原理Activity本身是不可以滑动的,但是我们可以制造一个正在滑动Activity的假象,使得看起来这个Activity正在被手指滑动。其原理其实很简单,我们滑动的其实是Activity里面的可见View元素,而我们将Activity设置为透明的,这样当View滑过的时候,由于Activity的底部是透明的,我们就可以在滑动过程中看到下面的Activity,这样看起来就是在滑动Activity。所以Activity滑动效果分两步:设置Activity透明滑动View实现1、设置透明:资源文件values->styles.xml添加如下代码,搞一个透明的主题。<style
name="Transparent"
parent="Theme.AppCompat.Light.NoActionBar">
<item
name="android:windowBackground">@android:color/transparent</item>
<item
name="android:windowIsTranslucent">true</item>
</style>然后在AndroidManifest.xml文件里面给相应的Activity设置透明的主题。比如MainActivity:<activity
android:name="com.example.test.MainActivity"
android:theme="@style/Transparent"
>
</activity>2、滑动View:先看看Activity的层次结构:我们用的Activity的xml的根View并不是Activity的根View,在它上面还有一个父View,id是android.R.id.content,再向上一层,还有一个view,它是一个LinearLayout,它除了放置我们创建的View之外,还放置我们的xml之外的一些东西比如放ActionBar或者标题栏什么的。而再往上一级,就到了Activity的根View——DecorView,结构如下图所示:要做到像iOS那样可以滑动整个Activity,只滑动我们在xml里面创建的View显然是不对的,因为我们还有标题栏、ActionBar什么的,所以我们要滑动的应该是DecorView或者倒数第二层的那个View。而要滑动View的话,我们要重写其父窗口的onInterceptTouchEvent以及onTouchEvent(当然使用setOnTouchListener不是不可能,但是如果子View里面有一个消费了onTouch事件,那么也就接收不到了),但是窗口的创建过程不是我们能控制的,DecorView的创建都不是我们能干预的。解决办法就是,我们自己创建一个SwipeLayout,然后人为地插入顶层View中,放置在DecorView和其下面的LinearLayout中间,随着手指的滑动,不断改变SwipeLayout的子View——曾经是DecorView的子View——的位置,这样我们就可以控制Activity的滑动啦。我们在Activity的onPostCreate方法中调用swipeLayout.replaceLayer替换我们的SwipeLayout,代码如下:public
void
replaceLayer(Activity
activity)
{
mActivity
=
activity;
screenWidth
=
getScreenWidth(activity);
setClickable(true);
//获取
Activity
的
根
View
ViewGroup
root
=
(ViewGroup)
activity.getWindow().getDecorView();
//获取
根
View
下面的第一个
View,并保存到
content
content
=
root.getChildAt(0);
ViewGroup.LayoutParams
params
=
content.getLayoutParams();
ViewGroup.LayoutParams
params2
=
new
ViewGroup.LayoutParams(-1,
-1);
//把根
View
下面原来的第一个
View
删除
root.removeView(content);
//把
content
添加到
SwipeLayout
this.addView(content,
params2);
//再把
SwipeLayout
添加到根
View
里面
root.addView(this,
params);
sideWidth
=
(int)
(sideWidthInDP
*
activity.getResources().getDisplayMetrics().density);
}然后把这些写成一个SwipeActivity要求实现侧滑返回的Activity继承SwipeActivity,SwipeActivity继承FragmentActivity或者Activity。比如MainActivity:public
class
SwipeActivity
extends
FragmentActivity
{
...
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
}
...
}public
class
MainActivity
extends
SwipeActivity
{
...
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
}
...
}Android是一种基于Linux内核的自由及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国高纯氧气制备器行业发展动态与需求前景预测报告
- 2024-2030年中国高性能陶瓷涂层行业市场发展趋势与前景展望战略研究报告
- 2024-2030年中国香皂行业发展趋势与前景展望战略研究报告
- 2024-2030年中国餐厅椅行业市场发展趋势与前景展望战略研究报告
- 2024-2030年中国食品添加剂市场发展分析及市场趋势与投资方向研究报告
- 2024年油橄榄果提取物化妆品合作协议书
- 2024-2030年中国附子理中丸市场销售规模与未来营销战略规划研究报告
- 2024年湖北省荆门市钟祥学区六上数学期末统考模拟试题含解析
- 2024年湖北黄冈市麻城市数学六上期末达标测试试题含解析
- 2024年微机励磁屏项目建议书
- T-CSEM 0024-2024 智慧消防 火灾防控系统建设要求
- 浙南名校联盟2023-2024学年高三语文试题及答案解析
- 药品配送服务售后服务方案
- 2021年初级护师考试真题(基础知识+相关专业+专业知识+专业实践)
- 医院管理学考试题及答案25篇
- 提高手术部位标识品管圈课件
- 装饰装修工程监理细则详解样本
- 华能大庆热电厂脱硝合同(最终版本)new
- 传染病监测与预警系统的建设
- 淘宝客服服务培训教程课件
- 《歌德巴赫猜想》课件
评论
0/150
提交评论