仿二手车之家下拉列表

【仿二手车之家下拉列表】效果展示
基础知识
认识 类
和我们上次在这篇文章 仿.0主页面侧滑效果(第二种实现方法) 中所讲的 类一样,类也是系统给我们提供的 一种处理用户拖拽 View 的手势处理类 。
不能直接 new 出来(因为源码中构造方法前是 ),但是,系统给我们提供了一个创建方法.() 。

仿二手车之家下拉列表

文章插图
代码演示
xml布局

自定义布局的 java 代码逻辑
package com.wust.myslidingmenu;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.FrameLayout;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.customview.widget.ViewDragHelper;public class VerticalDragListView extends FrameLayout {private ViewDragHelper mDragHelper;public VerticalDragListView(@NonNull Context context) {this(context,null);}public VerticalDragListView(@NonNull Context context, @Nullable AttributeSet attrs) {this(context, attrs,0);}public VerticalDragListView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);//第一步:创建 ViewDragHelper 类mDragHelper = ViewDragHelper.create(this,new cb());}//第二步:继承回调,并实现里面的方法private class cb extends ViewDragHelper.Callback {//是否允许子代滑动 false表示不允许 true表示允许,单单实现这个方法还不够,//垂直的话还得复写 clampViewPositionVertical,水平:clampViewPositionHorizontal@Overridepublic boolean tryCaptureView(@NonNull View child, int pointerId) {return true;}//这个方法的返回值就是 你拖拽的View最终要到达的地方@Overridepublic int clampViewPositionVertical(@NonNull View child, int top, int dy) {return top;}@Overridepublic int clampViewPositionHorizontal(@NonNull View child, int left, int dx) {return left;}}@Overridepublic boolean onTouchEvent(MotionEvent event) {//第三步:接收 onTouch 传来的事件mDragHelper.processTouchEvent(event);return true;}}
优化 只能让前面 View 拖拽前面 View 向下拖拽不能超过 后面 View 高度未过半自动收起,过半自动展开与结合,处理事件冲突 有偿提问
如果大家觉得这篇文章帮助你了,可以支持一下 。
有偿提问