【仿二手车之家下拉列表】效果展示
基础知识
认识 类
和我们上次在这篇文章 仿.0主页面侧滑效果(第二种实现方法) 中所讲的 类一样,类也是系统给我们提供的 一种处理用户拖拽 View 的手势处理类 。
不能直接 new 出来(因为源码中构造方法前是 ),但是,系统给我们提供了一个创建方法.() 。
![仿二手车之家下拉列表](http://img.gansulong.com/230625/005A1MG-0.jpg)
文章插图
代码演示
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 高度未过半自动收起,过半自动展开与结合,处理事件冲突 有偿提问
如果大家觉得这篇文章帮助你了,可以支持一下 。
有偿提问
- 贝壳采集器:二手车之家 数据采集
- 爬取汽车之家北京二手车信息
- 基于 stm32f103 芯片的直流电机驱动控制仿真系统
- 二手车捡便宜,15万买当年101万的宝马730是什么体验? 宝马730老款图片
- 智能控制技术_基于Matlab的二阶系统模糊控制仿真实例_课程学习
- 在虚拟机中对阿克曼转向车进行导航及避障的仿真测试
- 有关edem仿真中,旋转与平移的相关问题。
- 【控制工程1】弹簧系统运动控制方案及simulink仿真
- 基于matlab的costas锁相环仿真
- 圣手书生萧让的绰号由来是因为他善于模仿?