欢迎访问宙启技术站
智能推送

Android 侧边滑动关闭Activity的示例代码

发布时间:2023-05-15 15:23:01

Android 侧边滑动关闭Activity的示例代码

在Android应用程序中,经常需要使用侧边滑动关闭Activity的功能。本文将介绍如何在Android应用程序中实现侧边滑动关闭Activity的功能。

首先,需要在项目中引入Android侧滑库SlidingMenu。在build.gradle文件中添加以下代码:

dependencies {
    implementation 'com.jeremyfeinstein.slidingmenu:slidingmenu:1.3@aar'
}

然后,在布局文件中添加SlidingMenu控件,并设置其侧边栏的内容和主页面的内容。以下是示例布局代码:

<?xml version="1.0" encoding="utf-8"?>
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:sliding="http://schemas.android.com/apk/res-auto"
    android:id="@+id/sliding_menu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    sliding:viewAbove="@layout/activity_main"
    sliding:viewBehind="@layout/menu_layout"
    sliding:behindOffset="120dp"
    sliding:behindScrollScale="0.5"
    sliding:mode="left">

</com.jeremyfeinstein.slidingmenu.lib.SlidingMenu>

在activity中,需要初始化SlidingMenu控件,设置其监听事件和滑动方向。以下是示例代码:

SlidingMenu slidingMenu = new SlidingMenu(this);
slidingMenu.setMode(SlidingMenu.LEFT);
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
slidingMenu.setMenu(R.layout.menu_layout);
slidingMenu.setBehindOffset(120);
slidingMenu.setBehindScrollScale(0.5f);
slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
slidingMenu.setOnOpenedListener(new SlidingMenu.OnOpenedListener() {
    @Override
    public void onOpened() {
        // 侧边栏被打开
    }
});
slidingMenu.setOnClosedListener(new SlidingMenu.OnClosedListener() {
    @Override
    public void onClosed() {
        // 侧边栏被关闭
    }
});

最后,需要在activity中处理侧边滑动事件,当滑动距离达到一定值时关闭当前Activity。以下是示例代码:

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            downX = event.getX();
            break;
        case MotionEvent.ACTION_UP:
            float upX = event.getX();
            if (upX - downX > 300) {
                finish();
            }
            break;
    }
    return super.onTouchEvent(event);
}

在上面的代码中,通过记录按下的x轴坐标和抬起的x轴坐标,计算出滑动的距离,当距离大于300时关闭Activity。

完整的Activity示例代码如下:

public class MainActivity extends AppCompatActivity {

    private float downX;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SlidingMenu slidingMenu = new SlidingMenu(this);
        slidingMenu.setMode(SlidingMenu.LEFT);
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        slidingMenu.setMenu(R.layout.menu_layout);
        slidingMenu.setBehindOffset(120);
        slidingMenu.setBehindScrollScale(0.5f);
        slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
        slidingMenu.setOnOpenedListener(new SlidingMenu.OnOpenedListener() {
            @Override
            public void onOpened() {
                // 侧边栏被打开
            }
        });
        slidingMenu.setOnClosedListener(new SlidingMenu.OnClosedListener() {
            @Override
            public void onClosed() {
                // 侧边栏被关闭
            }
        });

        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                downX = event.getX();
                break;
            case MotionEvent.ACTION_UP:
                float upX = event.getX();
                if (upX - downX > 300) {
                    finish();
                }
                break;
        }
        return super.onTouchEvent(event);
    }
}

总结:本文介绍了如何通过SlidingMenu控件实现在Android应用程序中侧边滑动关闭Activity的功能。关键点包括引入SlidingMenu库、初始化SlidingMenu控件、处理SlidingMenu监听事件和滑动事件等。