用SwipeBackLayout让activity具有滑动返回的效果

本文详细介绍了如何通过自定义样式解决Android中滑动Activity切换时出现的黑屏问题,并展示了如何在Activity中集成SwipeBackLayout组件,实现流畅的滑动效果。通过应用特定的主题样式,以及继承SwipeBackActivity类,可以有效避免切换过程中的视觉延迟,提升用户体验。此外,文章还提供了一个简单的示例代码,包括设置滑动区域和方向的方法,便于开发者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目地址:
https://github.com/ikew0ng/SwipeBackLayout
一、让需要滑动的Activity基础自定义的style
这里就是为了解决滑动黑屏的问题

    <style name="KaleTheme" parent="AppBaseTheme">
        <!-- 解决activity切换时的黑屏问题 -->
        <item name="android:windowIsTranslucent">true</item>  
    </style>
styles.xml中的全部文件:
<resources>
    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>
    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>
    
    <style name="KaleTheme" parent="AppBaseTheme">
        <!-- 解决activity切换时的黑屏问题 -->
        <item name="android:windowIsTranslucent">true</item>  
    </style>
</resources>
我是直接用Application使用了这个样式,仅仅为了演示。
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/KaleTheme" >

二、 用Activity继承一个类

如果你是要兼容Actionbar那么就继承SwipeBackActionbarActivity,这个类是我自己改的,原来的lib中没有。如果不用兼容,那么直接用SwipeBackActivity即可。
三、在方法中找到SwipeBackLayout,并设置滑动的区域和方向

这个就是简单的设置,我直接贴代码了。

package com.kale.swipbacklayouttest;
import me.imid.swipebacklayout.lib.SwipeBackLayout;
import me.imid.swipebacklayout.lib.app.SwipeBackActionbarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


/**
 * @author:Jack Tony
 * @tips  :如果要兼容,那么继承SwipeBackActionbarActivity,否则继承SwipeBackActivity
 * @date  :2014-10-31
 */
public class MainActivity extends SwipeBackActionbarActivity {


     private SwipeBackLayout mSwipeBackLayout;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mSwipeBackLayout = getSwipeBackLayout();
        //设置可以滑动的区域,推荐用屏幕像素的一半来指定
        mSwipeBackLayout.setEdgeSize(200);
        //设定滑动关闭的方向,SwipeBackLayout.EDGE_ALL表示向下、左、右滑动均可。EDGE_LEFT,EDGE_RIGHT,EDGE_BOTTOM
        mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_ALL);
        
        Button btn = (Button)findViewById(R.id.open_button);
        btn.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                startActivity(new Intent(MainActivity.this,MainActivity.class));
            }
        });
    }




}
上面还添加了一个button,是用来开启新的Activity,主要是便于测试的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值