IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android 底部抽屉 BottomSheet+CoordinatorLayout 实现 AndroidX版本 -> 正文阅读

[移动开发]android 底部抽屉 BottomSheet+CoordinatorLayout 实现 AndroidX版本

android 底部抽屉 BottomSheet+CoordinatorLayout 实现 AndroidX版本

activity_coordinator.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cl_chouti"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
        <RelativeLayout
            android:id="@+id/bottom_sheet"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            app:behavior_hideable="false"
            app:behavior_peekHeight="60dp"
            app:layout_behavior="@string/bottom_sheet_behavior">
                <include layout="@layout/poi_detail_bottom" />
        </RelativeLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

CoordinatorActivity.java

package com.wdkh.dw.GPS.activity;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Context;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.wdkh.dw.GPS.model.adapter.CarListAdapter;
import com.wdkh.dw.GPS.model.adapter.CoListAdapter;
import com.wdkh.dw.GPS.utils.DeviceUtils;
import com.wdkh.dw.R;

import java.util.ArrayList;
import java.util.List;

public class CoordinatorActivity extends AppCompatActivity {

    //底部抽屉中的自定义布局
    private RecyclerView recycler_view;
    //抽屉的主view
    private View bottomSheet;
    //抽屉view的id
    private LinearLayout chou_ti_id;

    private BottomSheetBehavior<View> behavior;
    private List<String> carList = new ArrayList<>();



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_coordinator);
        //设置抽屉最大高度
        chou_ti_id = findViewById(R.id.chou_ti_id);
        ViewGroup.LayoutParams para;
        para = chou_ti_id.getLayoutParams();
        int height1 = (int) (getResources().getDisplayMetrics().heightPixels * 0.7);
        para.height=height1;
        chou_ti_id.setLayoutParams(para);
        //底部抽屉栏展示地址
        bottomSheet = findViewById(R.id.bottom_sheet);
        behavior = BottomSheetBehavior.from(bottomSheet);
        int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.2);
        behavior.setPeekHeight(height);
       // bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); 设置展开折叠的默认状态
        behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, @BottomSheetBehavior.State int newState) {
                String state = "null";
                switch (newState) {
                    case 1:
                        state = "STATE_DRAGGING";//过渡状态此时用户正在向上或者向下拖动bottom sheet

                        break;
                    case 2:
                        state = "STATE_SETTLING"; // 视图从脱离手指自由滑动到最终停下的这一小段时间
                        break;
                    case 3:
                        state = "STATE_EXPANDED"; //处于完全展开的状态

                        break;
                    case 4:
                        state = "STATE_COLLAPSED"; //默认的折叠状态
                        break;
                    case 5:
                        state = "STATE_HIDDEN"; //下滑动完全隐藏 bottom sheet
                        break;
                }

            }

            //实时返回滚动数据
            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                Log.d("BottomSheetDemo", "slideOffset:" + slideOffset);
            }
        });

        //用于测试的列表数据
        recycler_view = findViewById(R.id.recycler_view);
        List<String> strList = new ArrayList<>();
        for(int i = 0;i<100;i++){
            strList.add("fffff"+i);
        }

        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        recycler_view.setLayoutManager(layoutManager);
        CoListAdapter adapter = new CoListAdapter(strList, this);
        recycler_view.setAdapter(adapter);
        adapter.setOnItemClickListener(postion -> {
            String chepaihao = carList.get(postion)+"";

            Log.e("点击", "onItemLongClick: ");

        });
    }
}

poi_detail_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/chou_ti_id"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv_tishi"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="40dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="附近热点"
        android:textSize="10sp"/>
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

CoListAdapter.java

package com.wdkh.dw.GPS.model.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.wdkh.dw.GPS.model.domain.OrderDomain;
import com.wdkh.dw.R;

import java.util.List;

public class CoListAdapter extends RecyclerView.Adapter<CoListAdapter.ViewHolder>{
    private List<String> mOrderList;
    private Context mContext;

    //初始化list_item组件
    static class ViewHolder extends RecyclerView.ViewHolder {
        View fruitView;
        LinearLayout rank_item_banck;
        TextView chepaihao;
        ImageView icon;
        public ViewHolder(View view) {
            super(view);
            fruitView = view;
            rank_item_banck = view.findViewById(R.id.rank_item_banck);
            chepaihao = view.findViewById(R.id.chepaihao);//车牌号
         /*   ZhuangTai = view.findViewById(R.id.ZhuangTai);//车辆审核状态*/
            icon = view.findViewById(R.id.icon);
        }
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.car_list_item, parent, false);
        final ViewHolder holder = new ViewHolder(view);
        return holder;
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        String cph = mOrderList.get(position);
        holder.chepaihao.setText(cph);
        /*holder.ZhuangTai.setText(cph.drivrName);*/


    }
    @Override
    public int getItemCount() {
        return mOrderList.size();
    }
    public CoListAdapter(List OrderReceivedList, Context context) {
        mOrderList=OrderReceivedList;
        this.mContext =context;
    }
    private String getStatus(int state){
        String stateStr = "";
        switch (state){
            case 1:
                stateStr = "待核查";
                break;
            case 2:
                stateStr = "核查通过";
                break;
            default:
                stateStr = "待核查";
                break;
        }
        return stateStr;
    }
    //点击回到多态实现
    OnItemClickListener mClickListener;
    public interface OnItemClickListener {
        void onItemClick(int postion);
    }
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.mClickListener = listener;
    }
}

在这里插入图片描述
在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:02:26  更:2021-09-01 12:03:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/20 21:02:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码