SwipeBack
====================================
Features
--------
- 和Activity的theme并无关系
- 不影响activity的生命周期
- 只需继承BaseActivity
- `isSupportSwipeBack` 唯一API方法,简单实用
- 无需设置 `<item name="android:windowIsTranslucent">true</item>`
- 支持Dialog的滑动返回
Usage
--------
#### 主要思想
Application在Api14之后添加了新的Callback方法
``` java
public void registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) {}
```
这样就可以根据activity的生命周期缓存所有Activity,通过list获取上一个activity的实例,从而获取id为content的ContentView的子View(即setContentView中的View),并进行滑动展示。
#### 包括以下6中状态
```java
private static final int MSG_ACTION_DOWN = 1; //点击事件
private static final int MSG_ACTION_MOVE = 2; //滑动事件
private static final int MSG_ACTION_UP = 3; //点击结束
private static final int MSG_SLIDE_CANCEL = 4; //开始滑动,不返回前一个页面
private static final int MSG_SLIDE_CANCELED = 5; //结束滑动,不返回前一个页面
private static final int MSG_SLIDE_PROCEED = 6; //开始滑动,返回前一个页面
private static final int MSG_SLIDE_FINISHED = 7;//结束滑动,返回前一个页面
```
1. 在Down手势发生时,只要将上一个Activity的ContentView从parentView中剥离,并加入到当前View的ContentView中;
2. 在滑动手势发生时,加上阴影View,并进行滑动;同时滑动的有当前Activity的ContentView、上一个Activity的ContentView和自定义的阴影View;
3. 在Up手势发生时,判断滑动是否超过半屏,触发返回操作,并展示滑动动画;
4. 滑动取消或滑动返回发生时,需要将上个Activity的ContentView从新加入到上一个Acitivity的布局中。
#### 自定义方法
默认activity是支持滑动返回的,不需要返回的则需要复写Baseactivity的以下方法
```java
public class BaseActivity extends AppCompatActivity {
private static final String TAG = "BaseActivity";
private SwipeWindowHelper mSwipeWindowHelper;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if(!supportSlideBack()) {
return super.dispatchTouchEvent(ev);
}
if(mSwipeWindowHelper == null) {
mSwipeWindowHelper = new SwipeWindowHelper(getWindow());
}
return mSwipeWindowHelper.processTouchEvent(ev) || super.dispatchTouchEvent(ev);
}
/**
* 是否支持滑动返回
*
* @return
*/
protected boolean supportSlideBack() {
return true;
}
}
```
ScreenShot
---------
![image](./screenshot/swipeback.gif)
没有合适的资源?快使用搜索试试~ 我知道了~
滑动返回Activity(带阴影)
共2000个文件
class:1618个
xml:545个
png:474个
5星 · 超过95%的资源 需积分: 9 26 下载量 35 浏览量
2016-12-20
17:54:55
上传
评论
收藏 21.18MB RAR 举报
温馨提示
和 Activity 的 theme 并无关系 不影响 activity 的生命周期 只需继承 BaseActivity isSupportSwipeBack 唯一 API 方法,简单实用 无需设置 <item name="android:windowIsTranslucent">true</item> 支持 Dialog 的滑动返回
资源推荐
资源详情
资源评论
收起资源包目录
滑动返回Activity(带阴影) (2000个子文件)
MediaSessionCompat.aidl 787B
ParcelableVolumeInfo.aidl 689B
PlaybackStateCompat.aidl 688B
MediaMetadataCompat.aidl 680B
ResultReceiver.aidl 675B
RatingCompat.aidl 673B
resources-debug.ir.ap_ 287KB
resources-debug.ap_ 286KB
resources-debug-androidTest.ap_ 776B
app-debug.apk 1.13MB
gradlew.bat 2KB
fileSnapshots.bin 807KB
fileHashes.bin 138KB
taskArtifacts.bin 55KB
localClassSetAnalysis.bin 29KB
fileSnapshotsToTreeSnapshotsIndex.bin 22KB
localJarClasspathSnapshot.bin 19KB
ViewPager.class 51KB
FragmentManagerImpl.class 45KB
AppCompatDelegateImplV7.class 39KB
SearchView.class 36KB
Toolbar.class 36KB
BackStackRecord.class 35KB
DrawerLayout.class 34KB
NestedScrollView.class 32KB
ShadowView.class 31KB
DispatchManagerActivity.class 31KB
PreviousPageView.class 31KB
WindowDecorActionBar.class 30KB
BaseActivity.class 30KB
MainActivity.class 29KB
Fragment.class 29KB
MenuBuilder.class 28KB
SlidingPaneLayout.class 27KB
LinearLayoutCompat.class 25KB
SwitchCompat.class 24KB
AccessibilityNodeInfoCompat.class 24KB
SwipeRefreshLayout.class 24KB
ListPopupWindow.class 22KB
VectorDrawableCompat.class 22KB
AppCompatDrawableManager.class 22KB
R$styleable.class 21KB
R$styleable.class 21KB
R$style.class 21KB
R$style.class 21KB
ViewDragHelper.class 21KB
MediaSessionCompat$MediaSessionImplBase.class 21KB
FragmentActivity.class 21KB
ActionBarOverlayLayout.class 20KB
R$styleable.class 20KB
R$styleable.class 20KB
R$styleable.class 20KB
R$styleable.class 20KB
R$style.class 20KB
R$style.class 20KB
R$style.class 20KB
R$style.class 20KB
SuggestionsAdapter.class 19KB
ActionMenuPresenter.class 19KB
ToolbarWidgetWrapper.class 18KB
ToolbarActionBar.class 18KB
ViewCompat.class 18KB
AlertController.class 18KB
ViewCompat$BaseViewCompatImpl.class 18KB
ActionMenuView.class 17KB
AnimatedVectorDrawableCompat.class 17KB
MenuItemImpl.class 17KB
MediaBrowserCompat$MediaBrowserImplBase.class 16KB
SwipeWindowHelper.class 16KB
NotificationCompatJellybean.class 14KB
AppCompatSpinner.class 14KB
CustomApplication.class 14KB
ActivityChooserView.class 14KB
ActivityChooserModel.class 14KB
AccessibilityNodeInfoCompat$AccessibilityNodeInfoStubImpl.class 14KB
IMediaSession$Stub$Proxy.class 13KB
ActionBarContextView.class 13KB
FragmentTransitionCompat21.class 13KB
MediaBrowserServiceCompat.class 13KB
PagerTitleStrip.class 13KB
MediaBrowserCompat$MediaBrowserImplApi21.class 12KB
ScrollingTabContainerView.class 12KB
MenuPopupHelper.class 11KB
NotificationCompat$WearableExtender.class 11KB
AlertDialog$Builder.class 11KB
ExploreByTouchHelper.class 11KB
NotificationCompat$Builder.class 11KB
ActionMenuItemView.class 11KB
LoaderManagerImpl.class 11KB
MaterialProgressDrawable.class 11KB
R$attr.class 11KB
R$attr.class 11KB
NotificationManagerCompat$SideChannelManager.class 10KB
MediaMetadataCompat.class 10KB
NotificationCompat.class 10KB
PlaybackStateCompat.class 10KB
SwipeWindowHelper.class 10KB
SwipeWindowHelper.class 10KB
ColorUtils.class 10KB
ViewPropertyAnimatorCompat.class 10KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- 梁惠涌2020-12-03谢谢分享咯咯咯
Guo_IT
- 粉丝: 462
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功