返回顶部
首页 > 资讯 > 移动开发 >Android ListView实现仿iPhone实现左滑删除按钮的简单实例
  • 200
分享到

Android ListView实现仿iPhone实现左滑删除按钮的简单实例

listviewiphone按钮Android 2022-06-06 07:06:09 200人浏览 独家记忆
摘要

需要自定义ListView。这里就交FloatDelListView吧。 复写onTouchEvent方法。如下: @Override public boolean on

需要自定义ListView。这里就交FloatDelListView吧。

复写onTouchEvent方法。如下:


@Override
  public boolean onTouchEvent(MotionEvent ev) { 
    switch (ev.getAction()) { 
      case MotionEvent.ACTION_DOWN:<BR>          // 获取按下的条目视图(child view) 
        int childCount = getChildCount(); 
        int[] listViewCoords = new int[2]; 
        getLocationOnScreen(listViewCoords); 
        int x = (int) ev.getRawX() - listViewCoords[0]; 
        int y = (int) ev.getRawY() - listViewCoords[1]; 
        for (int i = 0; i < childCount; i++) { 
          downChild = getChildAt(i); // 
          Rect rect = new Rect(); 
          assert downChild != null; 
          downChild.getHitRect(rect); 
          int childPosition = getPositionForView(downChild); 
          if (rect.contains(x, y)) { 
            downX = ev.getRawX(); 
            int downPosition = childPosition; 
            velocityTracker = VelocityTracker.obtain(); 
            assert velocityTracker != null; 
            velocityTracker.addMovement(ev); 
            break; 
          } 
        } 
        isSwipe = false; 
        break; 
      case MotionEvent.ACTION_MOVE: 
        velocityTracker.addMovement(ev);<BR>          // 计算水平和垂直方向移动速度 
        velocityTracker.computeCurrentVelocity(1000); 
        float velocityX = Math.abs(velocityTracker.getXVelocity()); 
        float velocityY = Math.abs(velocityTracker.getYVelocity()); 
<BR>          // 水平移动距离 
        float deltaX = ev.getRawX() - downX; 
        float deltaMode = Math.abs(deltaX); 
        if (deltaX > 150) {// right swipe(右滑) 
          isSwipeToLeft = false; 
        } else if (deltaX < -150) {// left swipe(左滑) 
          isSwipeToLeft = true; 
        }<BR>          // 如果水平滑动距离大于零,并且水平滑动速率比垂直大,说明是水平滑动 
        if (deltaMode > 0 && velocityY < velocityX) {<BR>            // 这里的FloatDelButtonLayout是自定义的LinearLayout。 
          ((FloatDelButtonLayout) downChild).showDelButton(ev, isSwipeToLeft); 
          isSwipe = true; 
        } 
        break; 
      case MotionEvent.ACTION_CANCEL: 
      case MotionEvent.ACTION_UP: 
        downChild.setSelected(false); 
        if (isSwipe) { 
          isSwipe = false; 
          return true; 
        } 
        break; 
    } 
    return super.onTouchEvent(ev); 
  }

FloatDelButtonLayou.java :


public class FloatDelButtonLayout extends LinearLayout { 
<BR>   // 提供删除按钮的接口 
  private OnDelListener delListener; 
<BR>   // 当前视图在列表中的索引,在delListener中使用 
  private int index; 
<BR>   // 右滑 还是 左滑?<BR>  private boolean isSwipeToLeft;<BR> 
  public void setOnDelListener(OnDelListener listener, int i) { 
    delListener = listener; 
    index = i; 
  } 
  public FloatDelButtonLayout(Context context) { 
    super(context, null); 
  } 
  public FloatDelButtonLayout(Context context, AttributeSet attrs) { 
    super(context, attrs, 0); 
  } 
  public FloatDelButtonLayout(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
  } 
<BR>   // 用来显示或者隐藏删除按钮。 
  public void showDelButton(MotionEvent ev, boolean isSwipeToLeft) { 
    this.isSwipeToLeft = isSwipeToLeft; 
    onTouchEvent(ev); 
  } 
  private OnClickListener clickDel = new OnClickListener() { 
    @Override
    public void onClick(View v) { 
      delListener.onDel(index); 
    } 
  }; 
<BR>   
  @Override
  public boolean onTouchEvent(MotionEvent event) { 
    switch (MotionEventCompat.getActionMasked(event)) { 
      case MotionEvent.ACTION_MOVE:<BR>          // 获取删除按钮对象,视图layout中必须要有id为del_button的Button标签 
        Button view = (Button) findViewById(R.id.del_button); 
        view.setText(R.string.del);<BR>          // 设置Button的MarginLayoutParams,当然可以做成各种动作,比如渐隐之类的显示出来。 
        MarginLayoutParams layoutParams = (MarginLayoutParams) view.getLayoutParams(); 
        assert layoutParams != null; 
        if (isSwipeToLeft) { 
          view.setVisibility(View.VISIBLE); 
          view.setOnClickListener(clickDel); 
          layoutParams.leftMargin = -200; 
        } else { 
          view.setVisibility(View.GoNE); 
          layoutParams.leftMargin = 0; 
        } 
        view.setLayoutParams(layoutParams); 
        invalidate(); 
        break; 
    } 
    return super.onTouchEvent(event); 
  } 
  public interface OnDelListener { 
    void onDel(int i); 
  } 
}

以上这篇Android ListView实现仿iPhone实现左滑删除按钮的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文章:android为ListView每个Item上面的按钮添加事件android中在Activity中响应ListView内部按钮的点击事件的两种方法Android自定义View制作动态炫酷按钮实例解析Android自定义View实现拖动选择按钮Android ListView ImageView实现单选按钮实例Android自定义View之圆形进度条式按钮Android自定义View实现开关按钮Android基于ImageView绘制的开关按钮效果示例自定义滑动按钮为例图文剖析Android自定义View绘制Android自定义View实现可展开、会呼吸的按钮


--结束END--

本文标题: Android ListView实现仿iPhone实现左滑删除按钮的简单实例

本文链接: https://lsjlt.com/news/24228.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android ListView实现仿iPhone实现左滑删除按钮的简单实例
    需要自定义ListView。这里就交FloatDelListView吧。 复写onTouchEvent方法。如下: @Override public boolean on...
    99+
    2022-06-06
    listview iphone 按钮 Android
  • Android ListView ImageView实现单选按钮实例
    做Android开发两年的时间,技术稍稍有一些提升,刚好把自己实现的功能写出来,记录一下,如果能帮助到同行的其他人,我也算是做了件好事,哈哈!!废话不多说,先上个图。 先上一...
    99+
    2022-06-06
    listview 按钮 Android
  • Android实现ListView左右滑动删除和编辑
    有时候,为了实现项目中的需求,完成设计好的用户交互体验,不的不把这些View重新改造成自己想要的效果。 Android原生的ListView是不支持左右滑动的,但是看到微信电话...
    99+
    2022-06-06
    listview Android
  • Android 实现左滑出现删除选项
    滑动删除的部分主要包含两个部分, 一个是内容区域(用于放置正常显示的view),另一个是操作区域(用于放置删除按钮)。默认情况下,操作区域是不显示的,内容区域的大小是填充整个容 器,操作区域始终位于内容区域的右面。当开始滑动的时候,整个容器...
    99+
    2023-05-31
    android 左滑 删除
  • Android Recyclerview实现左滑删除功能
    本文实例为大家分享了Android Recyclerview实现左滑删除的具体代码,供大家参考,具体内容如下 1.先创建一个工具类 SlideRecyclerView public...
    99+
    2024-04-02
  • 详解Android中实现ListView左右滑动删除条目的方法
    使用Scroller实现绚丽的ListView左右滑动删除Item效果 这里来给大家带来使用Scroller的小例子,同时也能用来帮助初步解除的读者更加熟悉的掌握Scrolle...
    99+
    2022-06-06
    方法 listview Android
  • Android实现单选按钮
    本文实例为大家分享了Android实现单选按钮的具体代码,供大家参考,具体内容如下 单选按钮 在默认情况下,单选按钮显示为一个圆形图标,可以在图标旁放一些说明文字。通常情况下Radi...
    99+
    2024-04-02
  • Android侧滑按钮怎么实现
    这篇文章主要介绍“Android侧滑按钮怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android侧滑按钮怎么实现”文章能帮助大家解决问题。Android侧滑按钮效果如下所示:导入闭包将以...
    99+
    2023-06-29
  • Android App中ListView仿QQ实现滑动删除效果的要点解析
    本来准备在ListView的每个Item的布局上设置一个隐藏的Button,当滑动的时候显示。但是因为每次只要存在一个Button,发现每个Item上的Button相互间不好控...
    99+
    2022-06-06
    listview app Android
  • Android 侧滑按钮的实现代码
    目录导入闭包创建RecyclerView子项布局文件布局代码创建RecyclerView适配器描述子项点击事件应用Android侧滑按钮效果如下所示: 导入闭包 将以下语句倒入目录...
    99+
    2024-04-02
  • Android实现带有删除按钮的EditText示例代码
    一、首先来看看效果 这是一个带有删除按钮的输入文本框, 需要新建一个类继承自EditText, 先把代码贴出来, 然后在解释: 示例代码如下: public class E...
    99+
    2022-06-06
    edittext 按钮 Android
  • vue怎么实现仿qq左滑置顶删除组件
    这篇文章主要讲解了“vue怎么实现仿qq左滑置顶删除组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现仿qq左滑置顶删除组件”吧!效果图:HTML代码:主要的html代码:&l...
    99+
    2023-07-04
  • Android studio实现单选按钮
    本文实例为大家分享了Android studio实现单选按钮的具体代码,供大家参考,具体内容如下 创建空activity编辑activity_main.xml文件 代码如下: <...
    99+
    2024-04-02
  • 如何用javascript实现左滑删除
    这篇文章主要讲解了“如何用javascript实现左滑删除”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用javascript实现左滑删除”吧! ...
    99+
    2024-04-02
  • jquery实现移动端按钮组左右滑动
    本文实例为大家分享了jquery实现移动端按钮组左右滑动的具体代码,供大家参考,具体内容如下 学习移动端触摸相关功能时写了一个例子,共享一下,其中最不好理解的是screen、page...
    99+
    2024-04-02
  • Android实现左侧滑动菜单
    本文实例为大家分享了Android实现左侧滑动菜单的具体代码,供大家参考,具体内容如下 效果图: SlideActivity.java: package com.demo.slid...
    99+
    2024-04-02
  • 如何在Android中实现渐显按钮的左右滑动效果
    先看下运行效果:    程序结构: MainActivity文件中代码: 代码如下:package com.android.buttonpageflippe...
    99+
    2022-06-06
    动效 按钮 Android
  • Android自定义view实现左滑删除的RecyclerView详解
    目录概述需求编写代码I编写代码II编写代码III优化总结概述 最近安卓自定义view的知识看的很熟,但是却很久没动手了,这几天用kotlin手撕了原先一个左滑删除的RecyclerV...
    99+
    2022-11-13
    Android RecyclerView Android 左滑删除RecyclerView
  • Android程序开发之ListView 与PopupWindow实现从左向右滑动删除功能
    文章实现的功能是:在ListView的Item上从右向左滑时,出现删除按钮,点击删除按钮把Item删除。 看过文章后,感觉没有必要把dispatchTouchEvent()和...
    99+
    2022-06-06
    popupwindow listview Android
  • vue2如何实现左滑删除功能
    这篇文章主要介绍vue2如何实现左滑删除功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!左滑删除,很多UI框架里有,比如Mint-UI, Muse-UI等,一开始我们就是用的这两个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作