【移动应用开发技术】Activity滑动返回操作像iOS的UINavigationController、知乎的Android版那样_第1页
【移动应用开发技术】Activity滑动返回操作像iOS的UINavigationController、知乎的Android版那样_第2页
【移动应用开发技术】Activity滑动返回操作像iOS的UINavigationController、知乎的Android版那样_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Activity滑动返回操作,像iOS的UINavigationController、知乎的Android版那样

这里只介绍原理,更详细的实现代码地址在此:/NashLegend/SwipetoFinishActivity这是Activity滑动的示意图像fragment一样,activity本身是没有滑动的方法的,但是我们可以制造一个正在滑动activity的假象,使得这个activity看起来正在被手指滑动。其原理其实很简单,我们滑动的其实是activity里面的可见view元素,同时我们将activity设置为透明的,这样当activity中可见的view元素滑过的时候,由于activity的底部是透明的,我们就可以在滑动过程中看到下面的activity,这样看起来就是在滑动activity。所以activity滑动效果分两步,1,设置activity透明,2,滑动view。设置透明:建立一个Style,在Style里面添加下面两行,并将这个style应用在activity上就可以了滑动view:先看看activity的层次结构:如下图,我们用的activity的xml的根view(在下图中是倒数第二层的FrameLayout)并不是activity的根view,在它上面还有一个父view,id是android.R.id.content,再向上一层,还有一个view,它是一个LinearLayout,它除了放置我们创建的view之外,还放置我们的xml之外的一些东西比如放ActionBar或者标题栏(在下图是左边那一分枝)。而再往上一级,就到了activity的根view——DecorView。

/e7593131dff52ae21d60a0c615c9d1d23cbbc870/687474703a2f2f692e696d6775722e636f6d2f6b4275766e524d2e706e67要做到像iOS那样,可以滑动整个activity,只滑动我们在xml里面创建的view显然是不对的,因为我们还有标题栏、ActionBar什么的,所以我们要滑动的应该是DecorView或者倒数第二层的那个view。而要滑动view的话,我们要重写其父窗口的onInterceptTouchEvent以及onTouchEvent【当然使用setOnTouchListener也可以,但是如果有一个子view消费了onTouch事件,那么也就接收不到了】,但是窗口的创建过程不是我们能控制的,DecorView的创建都不是我们能干预的。解决办法就是,我们自己创建一个SwipeLayout,然后人为地插入到顶层view中,放置在DecorView和其下面的LinearLayout中间,随着手指的滑动,不断改变SwipeLayout的子view——曾经是DecorView的子view——的位置,这样我们就可以控制我们的滑动啦。我们在自定义的SwipeLayout中添加一个replaceLayer,这个方法执行将SwipeLayout插入顶层的代码,并在activity的onPostCreate()方法中调用swipeLayout.replaceLaye()替换我们的SwipeLayout,代码如下:

public

void

replaceLayer(Activity

activity)

{

mActivity

=

activity;

screenWidth

=

getScreenWidth(activity);

setClickable(true);

ViewGroup

root

=

(ViewGroup)

activity.getWindow().getDecorView();

content

=

root.getChildAt(0);

ViewGroup.LayoutParams

params

=

content.getLayoutParams();

ViewGroup.LayoutParams

params2

=

new

ViewGroup.LayoutParams(-1,

-1);

root.removeView(content);

this.addView(content,

params2);

root.addView(this,

params);

}然后我们把这些写成一个SwipeActivity,其它activity只要继承这个SwipeActivity并设置上第一步中的style就可以实现滑动返回功能,这里只说滑动activity的原理,剩下的都是控制滑动以及关闭Activity什么的事了,详见代码在这里:

摸我BTW,滑动Fragment原理其实一样,只不过更加简单,省去替换那一步,Frag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论