高仿APP——元贝驾考(三)滑动关闭Activity
2017-07-11 09:25
162 查看
项目中用到的滑动关闭页面,是基于SlidingMenu做的
下面贴出源码,并且讲解以下
/** * 向右滑动关闭Activity * * 添加关闭动画 */ public class SwipeBackView extends SlidingMenu { public Context context; public SwipeBackView(Context context) { super(context); this.context = context; init(); } private void init(){ setMode(LEFT); setTouchModeAbove(TOUCHMODE_MARGIN);//触摸边缘触发 setOnOpenedListener(new SlidingMenu.OnOpenedListener() { @Override public void onOpened() { TranslateAnimation translateAnimation = new TranslateAnimation(getContent().getX(), BaseApplication.WINDOW_WIDTH,0,0); translateAnimation.setDuration(300); translateAnimation.setFillAfter(false); ((Activity)context).finish(); startAnimation(translateAnimation); } }); } }
setOnOpenedListener
是抽屉打开鉴定,抽屉在完全打开时候调用
public void activityEnterAnimation(View contentView){ this.contentView = contentView; contentView.startAnimation(AnimationUtils.loadAnimation(this,R.anim.activity_start)); } /** * 关闭时过场动画 * @param contentView */ public void activityBackAnimation(){ Animation translateAnimation = AnimationUtils.loadAnimation(this,R.anim.activity_close); this.contentView.startAnimation(translateAnimation); translateAnimation.setFillAfter(true); translateAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { BaseActivity.this.finish(); } @Override public void onAnimationRepeat(Animation animation) { } });
在BaseActivity中为Activity种的contentView设置一个过场动画
public class WebActivity extends BaseActivity { private SwipeBackView swipeBackView; private BaseWebView baseWebView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); baseWebView = new BaseWebView(this); swipeBackView = new SwipeBackView(this); swipeBackView.setContent(baseWebView);
//如果不为抽屉设置MenuView的话,SlidingMenu会自动补上一个空的View setContentView(swipeBackView); activityEnterAnimation(baseWebView); baseWebView.loadUrl("https://www.baidu.com/"); } @Override public void onBackPressed() { // activityBackAnimation(); if(baseWebView.getScrollWebView().canGoBack()){ baseWebView.getScrollWebView().goBack(); }else{ activityBackAnimation(); } } }
另外最重要的一点就是在Manifest中设置Activity的样式为完全透明
android:theme="@android:style/Theme.Translucent.NoTitleBar"
这句在AppCompatActivity是调用不到的哦
相关文章推荐
- Android中几种关闭Activity或app的方法
- 高仿APP——元贝驾考(三)ListView多ItemView
- 滑动关闭app
- 用SwipeBackLayout实现滑动关闭当前Activity
- Android仿微信activity滑动关闭
- 【android开发】手势滑动关闭Activity(随手指消失)的辅助类的实现
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
- Android activity 单手操作 滑动关闭
- activity向右滑动关闭退出
- android手势滑动关闭当前activity
- Android例子—关闭所有Activity_完全退出App的方法
- Android 滑动关闭Activity实现
- Android仿微信activity滑动关闭效果
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失,并解决activity跳转的时候出现短暂的黑屏
- 卡卡片视图的形式管理你的 Activity,让你的 app 可以自由的切换、跳转、关闭 Activity 以及结束 app 程序
- android 向右滑动关闭Activity
- 安卓完美退出App以及跨界面关闭Activity
- Android之Activity滑动关闭(销毁)
- 高仿APP——元贝驾考