zoukankan      html  css  js  c++  java
  • 分分钟教你集成沉浸式侧滑关闭Activity

    网上搜索侧滑关闭Activity,几乎没有系统状态栏跟随页面一起联动的,有明显的撕裂感,而这里则是状态栏跟随页面联动的,说来集成也是简单,等会你就知道了。

    个人习惯,写博客前喜欢先截图

    image

    1.首先以项目的形式导入到你的项目中

    image

    2.然后在你要侧滑的Activity集成SwipeBackActivity,注意只要集成就好的,其他的什么都不要你写,就能实现侧滑了

    下面列出代码: Mainactivity.java

    public class MainActivity extends AppCompatActivity {
        private TextView textView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textView = (TextView) findViewById(R.id.text);
        }
    
        public void click(View view) {
            if (view.getId() == R.id.button) {
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            } else {
                startActivityForResult(new Intent(MainActivity.this, ThirdActivity.class), 1);
            }
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            String result = data.getStringExtra("result");
            if (requestCode == 1 && resultCode == 0) {
                textView.setText(result);
            }
        }
    }

    SecondActivity.java

    public class SecondActivity extends SwipeBackActivity {
        private ViewPager viewPager;
        private int []imageIdArray;//图片资源的数组
        private List<View> viewList;//图片资源的集合
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
            viewPager = (ViewPager)findViewById(R.id.viewpager);
    
            setStatusBarColor(getResources().getColor(R.color.colorPrimary));
    
            imageIdArray = new int[]{R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d};
            viewList = new ArrayList<>();
            //获取一个Layout参数,设置为全屏
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
            //循环创建View并加入到集合中
            int len = imageIdArray.length;
            for (int i = 0;i<len;i++){
                //new ImageView并设置全屏和图片资源
                ImageView imageView = new ImageView(this);
                imageView.setLayoutParams(params);
                imageView.setBackgroundResource(imageIdArray[i]);
    
                //将ImageView加入到集合中
                viewList.add(imageView);
            }
            viewPager.setAdapter(new ViewPagerAdapter(viewList));
        }
    }

    ThirdActivity.java

    public class ThirdActivity extends SwipeBackActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_third);
        }
    
        @Override
        public void dothingBeforeFinish() {//这里是你要返回一些数据个启动的那个Activity,你可以在此做操作
            super.dothingBeforeFinish();
            Intent intent = new Intent();
            intent.putExtra("result", "来自ThirdActivity返回的值");
            setResult(0, intent);
        }
    }

    代码是不是很简单,这样就轻易的实现了沉浸式侧滑了。至于侧滑的Activity状态栏为什么是灰色的,是因为我在SwipeBackActivity中写死了,你可以修改此颜色。通过 setStatusBarColor(getResources().getColor(R.color.colorPrimary)); 好了,在此附上github源码,喜欢的请start、fork。 https://github.com/DyncKathline/SwipeBackLayout

    转载请注明出处,谢谢!

  • 相关阅读:
    C语言高速入口系列(七)
    数据结构:最小生成树--Prim算法
    poj2387-Til the Cows Come Home dijkstra获得水的问题
    iOS开展UI一片—简单的浏览器观看节目
    spark安装mysql与hive
    键入强力推进并解决强转
    华为u8800怎样root?
    用友ERP-U8最新破解(再次更新版本,附安装过程中的解决办法)
    Delphi 自带的那个 Hand 光标很难看?没关系,一行代码解决问题:
    阿里余额宝的来龙与去脉
  • 原文地址:https://www.cnblogs.com/xiongxuesong/p/5845121.html
Copyright © 2011-2022 走看看