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 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Fragment中包含ListView 同时监听上下左右的滑动 -> 正文阅读

[移动开发]Fragment中包含ListView 同时监听上下左右的滑动

上下滚动:在fragment中监听listview上下滑动,用AbsListView.OnScrollListener方法就行

private void initListener() {? ? ? ?
?? ?AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {? ? ? ? ? ??
?? ??? ?@Override? ? ? ? ? ??
?? ??? ?public void onScrollStateChanged(AbsListView view, int scrollState) {//滚动结束后,状态变化的监听? ? ? ? ? ? ? ??
?? ??? ??? ?switch (scrollState) {? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?case AbsListView.OnScrollListener.SCROLL_STATE_FLING://滑动且投掷过一次,并且现在滑动已停止? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ??? ?break;? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?case AbsListView.OnScrollListener.SCROLL_STATE_IDLE://视图没有滚动(滚动已停止)? ? ? ? ? ? ? ?? ? ??? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ??? ?break;? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL://通过触摸滑动,并且手指仍按在屏幕上? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ??? ?break;? ? ? ? ? ? ? ??
?? ??? ??? ??? ?}? ? ? ? ? ??
?? ??? ??? ?}? ? ? ? ? ??
?? ??? ?@Override? ? ? ? ? ??
?? ??? ?public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {? ? ? ? ? ? ? ??
?? ??? ??? ?if (firstVisible == firstVisibleItem) {//滚动范围太小了,一个界面都没有变动? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?return;? ? ? ? ? ? ? ??
?? ??? ??? ?}else{

? ? ? ? //do some thing? ? ? ??

????????}

?????????}? ? ? ??
?? ?};? ? ? ??
mylistview.setOnScrollListener(onScrollListener);

}??

左右滚动

在listview中重写onTouchEvent,用来监听左右滚动

private float xInScreen; //当前手指位置在屏幕上的横坐标值
    private float xDownInScreen; //手指按下时在屏幕上的横坐标的值
    private int movex;//手指横向位移的长度(大于200的距离才能判定滑动窗口)
    public boolean onTouchEvent( MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN://0
                // 手指按下时记录必要数据,纵坐标的值都需要减去状态栏高度
                xDownInScreen = event.getRawX();
                xInScreen = event.getRawX();
                break;
            case MotionEvent.ACTION_MOVE://2
                xInScreen = event.getRawX();
                movex = (int) (xDownInScreen - xInScreen);
                break;
            case MotionEvent.ACTION_UP://1
                if (abs(movex) > 200) {//横向有效滑动
                    if(movex>0){
//                       窗口向右滑动
                    }
                    else{
//                        窗口向左滑动
                    }
                }
                break;
            default:
                break;
        }
        //直接交给ListView来处理onTouchEvent事件
        return super.onTouchEvent(event);
    }

最后在XML布局中使用该ListView就行了

<com.demo.my_listview
    android:id="@+id/my_list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@null"/>

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:44:27  更:2021-11-19 17:46:23 
 
开发: 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年11日历 -2024/11/24 3:48:31-

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