如何在任何地方从左向右滑动以打开抽屉?

时间:2017-10-13 22:45:25

标签: android android-fragments navigation-drawer drawerlayout slidingdrawer

我对代码很陌生,在构建我的第一个应用程序时遇到了很多问题。 我想创建一个抽屉,我可以从任何地方从左到右滑动打开。 (不从边缘滑动) 所以我的MainActivity视图的组件树是:

  • DrawerLayout
    • 导航视图(抽屉布局)
    • ConstraintLayout(主页布局)

这是MainActivity.Java:

import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;

import android.support.v4.view.GestureDetectorCompat;
import android.os.Bundle;

import android.view.GestureDetector;
import android.widget.TextView;
import android.view.MotionEvent;




public class MainActivity extends Activity  {

    private GestureDetectorCompat gestureObject;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        gestureObject = new GestureDetectorCompat(this, new LearnGesture());


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        this.gestureObject.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    private class LearnGesture extends GestureDetector.SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent event1, MotionEvent event2,
                               float velocityX, float velocityY) {


            if (event2.getX() > event1.getX()) {

            }



             else if (event2.getX() < event1.getX()){
                Intent intent = new Intent(
                        MainActivity.this, UpcomingActivity.class);
                finish();
                startActivity(intent);
                overridePendingTransition(R.anim.right_in,R.anim.left_out);
            }
            return true;
        }


    }

}

这是AndroidManifest.xml

?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
 >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
        <activity
            android:name=".MainActivity"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".UpcomingActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_upcoming"
            android:screenOrientation="landscape"
            android:theme="@style/FullscreenTheme" />
    </application>

</manifest>

代码可以运行,但有以下渲染问题:

1.使用设计库需要使用Theme.AppCompat或desecendant (在主题选择器中选择Theme.AppCompat或desecendant。) 2.无法实例化一个或多个类

实际上我甚至不确定我是否朝着正确的方向前进,我不知道是否应该使用片段或者drawerlayout来完成这项活动? 有人可以帮我一个忙,或者跟我分享一些相关的教程吗?

提前致谢。

0 个答案:

没有答案