登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

Activity 滑动返回

[复制链接]
来自: bingoogolapple 分类: Android精品源码 上传时间: 2017-1-5 14:13:12
Tag:

项目介绍:

:running:BGASwipeBackLayout-Android:running:

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

功能介绍

  • [x] 通过修改 support-v4 包中 SlidingPaneLayout 的源码来实现滑动返回布局

  • [x] 动态设置滑动返回是否可用

  • [x] 动态设置是否仅仅跟踪左侧边缘的滑动返回

  • [x] 动态设置是否是微信滑动返回样式「如果需要启用微信滑动返回样式,必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this)」

  • [x] 动态设置是否显示滑动返回的阴影效果

效果图与示例 apk

普通滑动返回样式微信滑动返回样式
BGASwipeBackLayoutDemoBGASwipeBackLayoutDemo-WeChat

点击下载 BGASwipeBackLayoutDemo.apk 或扫描下面的二维码安装

BGABannerDemo apk文件二维

1.添加 Gradle 依赖

Download bga-swipebacklayout 后面的「latestVersion」指的是左边这个 Download 徽章后面的「数字」,请自行替换。

dependencies {
    compile 'cn.bingoogolapple:bga-swipebacklayout:latestVersion@aar'

    // 换成己工程里依赖的 support-v4 的版本
    compile 'com.android.support:support-v4:25.1.0'
}

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

<!-- 这里面的内容改成你自己项目里的 -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!--colorPrimaryDark对应状态栏的颜色-->
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <!--colorPrimary对应ActionBar的颜色-->
    <item name="colorPrimary">@color/colorPrimary</item>
    <!-- 底部导航栏的颜色 -->
    <item name="android:navigationBarColor" tools:targetApi="lollipop">@color/navigationBarColor</item>
    <item name="android:windowBackground">@color/windowBackground</item>
    <!--colorAccent 对应EditText编辑时、RadioButton选中、CheckBox等选中时的颜色-->
    <item name="colorAccent">@color/colorAccent</item>
</style>

<!-- 用于开启滑动返回功能的 Activity -->
<style name="AppTheme.Transparent">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsTranslucent">true</item>
</style>

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

public abstract class BaseActivity extends AppCompatActivity implements BGASwipeBackHelper.Delegate, View.OnClickListener {
    protected BGASwipeBackHelper mSwipeBackHelper;
    protected Toolbar mToolbar;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        // 在 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();
    }
}

4.如果需要启用微信滑动返回样式,必须在 Application 的 onCreate 方法中配置

BGASwipeBackManager.getInstance().init(this)

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

demo 中用到的第三方库

  • StatusBarUtil A util for setting status bar style on Android App

  • BGAAdapter-Android 在 AdapterView 和 RecyclerView 中通用的 Adapter 和 ViewHolder。RecyclerView 支持 DataBinding 、多种 Item 类型、添加 Header 和 Footer

  • BGAProgressBar-Android 带百分比数字的水平、圆形进度条

  • BGARefreshLayout-Android 多种下拉刷新效果、上拉加载更多、可配置自定义头部广告位

  • 谷爹的 support 包

代码是最好的老师,更多详细用法请查看 demo:feet:

相关源码推荐:

我来说两句
所有评论(17)
Mr_Zhao 2017-1-5 14:41:30
不错不错,楼主辛苦了。。。
回复
Frank_z 2017-1-5 15:01:25
感谢分享,楼主V5~
回复
belle 2017-1-5 15:12:47
感谢大神~
回复
深思 2017-1-5 15:14:49
apkbus好的内容真的很多~赞
回复
葫芦_eRDJw 2017-1-5 15:20:32
写的真的很不错
回复
遗失的流年 2017-1-5 15:24:12
apkbus好的内容真的很多~赞
回复
bingoogolapple 2017-1-5 15:52:23
已发布的安卓巴士不能修改,源码地址   https://github.com/bingoogolapple/BGASwipeBackLayout-Android
回复
123下一页
2602 3 0
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,769657487

如何获得代码达人称号

如何成为签约作者

联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表