欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

滑动菜单

程序员文章站 2022-08-19 19:09:49
1,添加依赖2,使用依赖作为框架androidx.drawerlayout.widget.DrawerLayout3,1)创建主界面...

1,添加依赖

2,使用依赖作为框架

androidx.drawerlayout.widget.DrawerLayout

3,

1)创建主界面

<!--主菜单-->
<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/cl_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#9ADBFF"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/tv_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="主界面"
        tools:layout_editor_absoluteX="51dp"
        tools:layout_editor_absoluteY="-16dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

2)创建左滑菜单,使用依赖:navigation.NavigationView

<!--左滑菜单-->
<com.google.android.material.navigation.NavigationView
    android:id="@+id/nv_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
        //左滑菜单需要的两个xml文件
    app:menu="@menu/menu_nv"
    app:headerLayout="@layout/layout_header"
    android:layout_gravity="left"
    />
//menu_nv,是第一个文件,是左滑菜单的功能项
<item
    android:id="@+id/item1"
    android:icon="@drawable/ic_people"
    android:title="联系人"/>
<item
    android:id="@+id/item2"
    android:icon="@drawable/ic_settings"
    android:title="设置"/>
<item
    android:id="@+id/item3"
    android:icon="@drawable/ic_fastfood"
    android:title="收付款"/>
<item
    android:id="@+id/item4"
    android:icon="@drawable/ic_arrow"
    android:title="主题"/>
//layout_header,是第二个文件,是左滑菜单的头部
<ImageView
    android:id="@+id/iv_header"
    android:layout_width="150dp"
    android:layout_height="150dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="50dp"
    android:src="@drawable/aa"/>
<TextView
    android:id="@+id/tv_header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/iv_header"
    android:text="登录"
    android:gravity="center"
    android:textSize="20sp"
    android:layout_marginTop="20dp"/>

3,添加监听

1)对菜单功能项的监听:setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener())

nv_main.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1:
                Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.item2:
                Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.item3:
                Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
                //用代码关闭滑页
                //点击关闭滑动页面
                dl_main.closeDrawer(Gravity.LEFT);
                break;
            case R.id.item4:
                //点击跳出
                startActivity(new Intent(MainActivity.this, HomeActivity.class));
                break;
        }

        return false;
    }
});

2)对抽屉的监听:addDrawerListener(new DrawerLayout.DrawerListener())

dl_main.addDrawerListener(new DrawerLayout.DrawerListener() {
    @Override
    public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
        Log.e("TAG", "抽屉正在滑动");
        //主界面随着抽屉的打开移动
        int right = drawerView.getRight();
        cl_main.setX(right);
    }

    @Override
    public void onDrawerOpened(@NonNull View drawerView) {
        Log.e("TAG", "打开抽屉");
    }

    @Override
    public void onDrawerClosed(@NonNull View drawerView) {
        Log.e("TAG", "关闭抽屉");
    }

    @Override
    public void onDrawerStateChanged(int newState) {
        Log.e("TAG", "抽屉状态改变");
    }
});

3)对头部的监听

//先获取头部的两个id,然后再点击进行监听
View headerView = nv_main.getHeaderView(0);
ImageView iv = headerView.findViewById(R.id.iv_header);
TextView tv = headerView.findViewById(R.id.tv_header);
//点击图片
iv.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this,"别点我了",Toast.LENGTH_SHORT).show();
    }
});
//点击登录
tv.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this,"登录",Toast.LENGTH_SHORT).show();
    }
});
//用代码滑动
//点击主页面
tv_main.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //点击主页面进入滑动页面
        dl_main.openDrawer(Gravity.LEFT);
    }
});

4,toolbar的设置

//logo
toolbar.setLogo(R.mipmap.ic_launcher);
//主标题
toolbar.setTitle("安卓");
//副标题
toolbar.setSubtitle("真狗");
//设置menu中的图片正常显示
nv_main.setItemIconTintList(null);

setSupportActionBar(toolbar);

//抽屉开关
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, dl_main, toolbar, R.string.app_name, R.string.app_name);
dl_main.addDrawerListener(toggle);
//滑动与toolbar同步状态
toggle.syncState();

标题透明度改变

先把左上角更改为Priject,然后打开app文件夹下的src,然后在src文件夹下创建values-21,把style.xml复制过去,然后添加

<item name="android:statusBarColor">#00ffffff</item>

00是透明度,后面是颜色

本文地址:https://blog.csdn.net/kc527347568/article/details/108876344