首页 > 其他 > 详细

侧滑关闭Activity的解决方案——SwipeBackLayout

时间:2019-11-06 01:05:13      阅读:137      评论:0      收藏:0      [点我收藏+]

项目地址:ikew0ng/SwipeBackLayout: An Android library that help you to build app with swipe back gesture.

我对它做点补充:P)

SwipeBackXActivity.java

public abstract class SwipeBackXActivity extends SwipeBackActivity {
    protected abstract int getStatusBarColorId();

    protected boolean makeStatusBarContentBlack() {
        return false;
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        setStatusBarToTransparent();
        setSystemUiVisibilityForDecorView();
        initContentView();
    }

    private void setStatusBarToTransparent() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
    }

    private void setSystemUiVisibilityForDecorView() {
        int visibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
        if (makeStatusBarContentBlack()) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                visibility |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
            }
        }
        getWindow().getDecorView().setSystemUiVisibility(visibility);
    }

    private void initContentView() {
        ViewGroup content = getWindow().getDecorView().findViewById(android.R.id.content);
        content.setFitsSystemWindows(true);
        int height = StatusBarUtils.getHeight(this);
        content.getChildAt(0).setPadding(0, height, 0, 0);
        View statusBar = new View(this);
        int id = getStatusBarColorId();
        if (id != 0) {
            statusBar.setBackgroundColor(getResources().getColor(id));
        }
        content.addView(statusBar, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, StatusBarUtils.getHeight(this)));
    }
}

SwipeBackXActivity避免了布局与状态栏的“撕裂”效果

下图就是我所说的撕裂效果

技术分享图片

SwipeBackXActivity的效果如微信

技术分享图片

 

SwipeBackXActivity的补充参考自:DyncKathline/SwipeBackLayout: 沉浸式侧滑关闭Activity

 

侧滑关闭Activity的解决方案——SwipeBackLayout

原文:https://www.cnblogs.com/buyishi/p/11802725.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!