android Activity右滑返回,退出当前activity

来源:互联网 发布:吴裕彬 水平 知乎 编辑:程序博客网 时间:2024/06/14 07:29

:添加依赖 compile ‘me.imid.swipebacklayout.lib:library:1.0.0’ 
至于为什么是添加库文件呢?后面在做解释。当然第二种方案也不是不可以的。

先写一个 BaseActivity 继承 SwipeBackActivity:

public class BaseActivity extends SwipeBackActivity {    private SwipeBackLayout mSwipeBackLayout;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mSwipeBackLayout = getSwipeBackLayout();        //设置滑动方向,可设置EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOM        mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);        //mSwipeBackLayout.setEdgeSize(200);//滑动删除的效果只能从边界滑动才有效果,如果要扩大touch的范围,可以调用这个方法    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

然后,下面依次是:MainActivity ,SecondActivity ,ThreeActivity 分别继承自 BaseActivity 。 
方法的调用都添加了注释,就不在多说啦。

public class MainActivity extends BaseActivity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        setSwipeBackEnable(false); //主 activity 可以调用该方法,禁止滑动删除        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                startActivity(new Intent(MainActivity.this, SecondActivity.class));            }        });    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
public class SecondActivity extends BaseActivity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                startActivity(new Intent(SecondActivity.this, ThreeActivity.class));            }        });    }    @Override    public void onBackPressed() {        scrollToFinishActivity();//左滑退出activity    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
public class ThreeActivity extends BaseActivity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_three);    }    /**     * 当按下返回键时     */    @Override    public void onBackPressed() {        scrollToFinishActivity();//左滑退出activity    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

最后你还需要在清单文件中,AppTheme 主题上,加上这个属性,要不然activity的背景应该是黑色的,很难看:

 <item name="android:windowIsTranslucent">true</item>
  • 1

到此,SwipeBackLayout基本用法就介绍完了。

SwipeBackLayout 的git地址

下面就解释一下,为什么项目依赖库,而不是直接添加依赖。 
看一下,添加依赖后 SwipeBackActivity继承的是 FragmentActivity。 
这里写图片描述

而我发现,依赖库的话,是这样的: 
这里写图片描述

至于 继承 AppCompatActivity 和 继承 FramgmentActivity 有什么区别,我就不在多说啦。 
总结:希望开源这个框架的大神,早日把 继承FramgmentActivity改成AppCompatActivity吧。当然继承FramgmentActivity也是可以的,不过后者更好一些,兼容性也更好。


当然如果你不想用别人的开源框架,自己写一个,来实现 activity 的滑动返回的效果,也是可以的。

原创粉丝点击