博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Activity 滑动返回
阅读量:7251 次
发布时间:2019-06-29

本文共 5856 字,大约阅读时间需要 19 分钟。

强烈建议与 结合着一起使用

常见问题与反馈

1.滑动返回时看见了 Launcher

保证栈底 Activity 的主题是不透明的。例如 demo 中的首个 Activity 是 SplashActivity,进入主界面后 SplashActivity 就销毁了,此时 MainActivity 就是栈底 Activity,需保证 MainActivity 的主题不透明

2.滑动返回不生效

必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回

3.如果发现某些手机上底部出现空白区域,麻烦打印以下信息新建 反馈

android.Build.VERSION.SDK_INTandroid.Build.MODEL复制代码

功能介绍

  • 通过修改 support-v4 包中 SlidingPaneLayout 的源码来实现滑动返回布局
  • 动态设置滑动返回是否可用
  • 动态设置是否仅仅跟踪左侧边缘的滑动返回
  • 动态设置是否是微信滑动返回样式
  • 动态设置是否显示滑动返回的阴影效果
  • 动态设置滑动返回阴影的透明度是否跟随手指滑动改变

效果图与示例 apk

普通滑动返回样式 微信滑动返回样式
BGASwipeBackLayoutDemo
BGASwipeBackLayoutDemo-WeChat
配合滑动删除列表一起使用 配合 RecycerView 一起使用
bgaswipebacklayout-swipe-delete
bgaswipebacklayout-recycler-index

或扫描下面的二维码安装

BGASwipeBackLayoutDemo apk 文件二维码

1.添加 Gradle 依赖

bga-swipebacklayout 后面的「latestVersion」指的是左边这个 maven-central 徽章后面的「数字」,请自行替换。
dependencies {    compile 'cn.bingoogolapple:bga-swipebacklayout:latestVersion@aar'    // 换成己工程里依赖的 support-v4 的版本    compile 'com.android.support:support-v4:25.1.0'}复制代码

2.必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回

public class App extends Application {    @Override    public void onCreate() {        super.onCreate();        // 必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回        BGASwipeBackManager.getInstance().init(this);    }}复制代码

3.为需要支持滑动返回的 Activity 设置透明主题 AppTheme.Transparent

复制代码

4.将下面的代码拷贝到你自己的 BaseActivity 中,建议参考 demo 里的这个 来设置界面跳转动画

public abstract class BaseActivity extends AppCompatActivity implements BGASwipeBackHelper.Delegate, View.OnClickListener {    protected BGASwipeBackHelper mSwipeBackHelper;    protected Toolbar mToolbar;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        // 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回」        // 在 super.onCreate(savedInstanceState) 之前调用该方法        initSwipeBackFinish();        super.onCreate(savedInstanceState);    }    /**     * 初始化滑动返回。在 super.onCreate(savedInstanceState) 之前调用该方法     */    private void initSwipeBackFinish() {        mSwipeBackHelper = new BGASwipeBackHelper(this, this);        // 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回」        // 下面几项可以不配置,这里只是为了讲述接口用法。        // 设置滑动返回是否可用。默认值为 true        mSwipeBackHelper.setSwipeBackEnable(true);        // 设置是否仅仅跟踪左侧边缘的滑动返回。默认值为 true        mSwipeBackHelper.setIsOnlyTrackingLeftEdge(true);        // 设置是否是微信滑动返回样式。默认值为 true        mSwipeBackHelper.setIsWeChatStyle(true);        // 设置阴影资源 id。默认值为 R.drawable.bga_sbl_shadow        mSwipeBackHelper.setShadowResId(R.drawable.bga_sbl_shadow);        // 设置是否显示滑动返回的阴影效果。默认值为 true        mSwipeBackHelper.setIsNeedShowShadow(true);        // 设置阴影区域的透明度是否根据滑动的距离渐变。默认值为 true        mSwipeBackHelper.setIsShadowAlphaGradient(true);    }    /**     * 是否支持滑动返回。这里在父类中默认返回 true 来支持滑动返回,如果某个界面不想支持滑动返回则重写该方法返回 false 即可     *     * @return     */    @Override    public boolean isSupportSwipeBack() {        return true;    }    /**     * 正在滑动返回     *     * @param slideOffset 从 0 到 1     */    @Override    public void onSwipeBackLayoutSlide(float slideOffset) {    }    /**     * 没达到滑动返回的阈值,取消滑动返回动作,回到默认状态     */    @Override    public void onSwipeBackLayoutCancel() {    }    /**     * 滑动返回执行完毕,销毁当前 Activity     */    @Override    public void onSwipeBackLayoutExecuted() {        mSwipeBackHelper.swipeBackward();    }}复制代码

5.强烈强烈强烈建议把 里的每个方法的注释看一遍,只看注释就好

demo 中用到的第三方库

  • A util for setting status bar style on Android App
  • 在 AdapterView 和 RecyclerView 中通用的 Adapter 和 ViewHolder。RecyclerView 支持 DataBinding 、多种 Item 类型、添加 Header 和 Footer。RecyclerView 竖直方向通用分割线 BGADivider
  • 带百分比数字的水平、圆形进度条
  • 多种下拉刷新效果、上拉加载更多、可配置自定义头部广告位
  • 类似 iOS 带弹簧效果的左右滑动控件,可作为 AbsListView 和 RecyclerView 的 item
  • 谷爹的 support 包

Change Log

Version 1.0.7 *(2017-01-11)*----------------------------* 在 BGASwipeBackHelper 中处理开始滑动返回时自动关闭软键盘Version 1.0.6 *(2017-01-11)*----------------------------* 必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回,避免任务栈里只有一个 Activity 时滑动返回看见 LauncherVersion 1.0.5 *(2017-01-09)*----------------------------* 修复 Nexus 4 无法获取底部导航栏导致界面底部出现空白区域Version 1.0.4 *(2017-01-08)*----------------------------* fix #10 修复4.4真机上结合 CoordinatorLayout 一起使用时底部出现空白* fix #14 修复部分底部导航栏可以动态设置显示状态的手机出现遮挡Version 1.0.3 *(2017-01-04)*----------------------------* 增加滑动返回帮助类 BGASwipeBackHelper,详细用法情况最新版 README 文档Version 1.0.2 *(2016-12-29)*----------------------------* 增加 setIsWeChatStyle 方法,设置是否是微信滑动返回样式,默认值为 true「如果需要启用微信滑动返回样式,必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this)」* 增加 setShadowResId 方法,设置阴影资源 id,默认值为 R.drawable.bga_swipebacklayout_shadow* 增加 setIsShadowAlphaGradient,设置阴影区域的透明度是否根据滑动的距离渐变。默认值为 trueVersion 1.0.1 *(2016-12-28)*----------------------------* 增加 setSwipeBackEnable 方法,设置滑动返回是否可用,默认值为 true* 增加 setIsNeedShowShadow 方法,设置是否显示滑动返回的阴影效果,默认值为 true* 增加 setIsOnlyTrackingLeftEdge 方法,设置是否仅仅跟踪左侧边缘的滑动返回,默认值为 trueVersion 1.0.0 *(2016-12-27)*----------------------------* Initial release.复制代码

关于我

新浪微博 个人主页 邮箱 BGA系列开源库QQ群
BGA_CODE_CLUB

打赏支持

如果您觉得 BGA 系列开源库帮你节省了大量的开发时间,请扫描下方的二维码随意打赏,要是能打赏个 10.24 ?就太?了。您的支持将鼓励我继续创作?

如果您目前正打算购买通往墙外的梯子,可以使用我的邀请码「YFQ9Q3B」购买 ,双方都赠送三个月的专业版使用时间?

License

Copyright (C) 2012 The Android Open Source ProjectCopyright 2016 bingoogolappleLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License at   http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.复制代码

转载地址:http://tahbm.baihongyu.com/

你可能感兴趣的文章
leveldb源码学习系列
查看>>
Linux 运行 apt-get install 就出现jdk installer 错误的解决方法
查看>>
Android OpenGL ES(九)绘制线段Line Segment .
查看>>
Ubuntu下安装配置JDK1.7
查看>>
转载:STM32之中断与事件---中断与事件的区别
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.10
查看>>
设计模式(十四)单例模式(创建型)
查看>>
JAVA修饰符类型(public,protected,private,friendly)
查看>>
haxm intelx86加速模拟器的安装
查看>>
(ETW) Event Tracing for Windows 入门 (含pdf下载)
查看>>
OSSEC
查看>>
我的前端学习历程
查看>>
Linux Module
查看>>
jquery 自定义click事件执行多次
查看>>
计划给予心脏公式
查看>>
[leetcode]3 Sum closest
查看>>
Android批量图片加载经典系列——afinal框架实现图片的异步缓存加载
查看>>
java Long的iniValue出错
查看>>
Cocos2d-x3.0下一个 Lua与C++打电话给对方
查看>>
伪装隐藏Nginx,PHP版本号提升服务器安全性
查看>>