返回顶部
首页 > 资讯 > 精选 >android仿微信联系人索引列表功能
  • 516
分享到

android仿微信联系人索引列表功能

2023-05-30 17:05:01 516人浏览 八月长安
摘要

前言  因为自己在做的一个小软件里面需要用到从A-Z排序的ListView,所以自然而然的想到了微信的联系人,我想要的就是那样的效果。本来没打算自己去写,想要第三方写好的东西,搜了几个之后发现有的太复杂了,有的简单是

前言

  因为自己在做的一个小软件里面需要用到从A-Z排序的ListView,所以自然而然的想到了微信的联系人,我想要的就是那样的效果。本来没打算自己去写,想要第三方写好的东西,搜了几个之后发现有的太复杂了,有的简单是简单,但是不符合我的要求,所以我就来个整合,把复杂性和简单性合二为一。

实现

  先来看效果图吧:

android仿微信联系人索引列表功能

要点分析

  要实现这样的效果需要考虑下面的几个问题:

  • 右边字母栏的绘制
  • 点击效果的实现
  • 汉字按A-Z的排序问题
  • 正常的Item和字母分隔符的Item的实现

  下面我们就解决这几个问题,然后就可以出现上面的效果了。

【第一步】

  我们需要先自定义一个类,就叫SlideBar吧,让它继承Button,然后我们覆盖onDraw方法,绘制字母a-z就可以出现右边字母栏的效果了。

看一下源码

public class SlideBar extends Button{  public interface OnTouchAssortListener{  public void onTouchAssortListener(String s);  }  // 分类  private static final String[] ASSORT_TEXT = {"A", "B", "C", "D", "E", "F", "G",   "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",   "U", "V", "W", "X", "Y", "Z" ,"#"}; private Paint mPaint = new Paint();  private int mSelectIndex = -1;  private OnTouchAssortListener mListener = null; private Activity mAttachActivity; PopupWindow mPopupWindow = null; View layoutView; TextView text; public SlideBar(Context context){  this(context,null);  }  public SlideBar(Context context, AttributeSet attrs) {  this(context, attrs,0);  }  public SlideBar(Context context, AttributeSet attrs, int defStyle){  super(context, attrs, defStyle); mAttachActivity = (Activity)context; init(context); }  private void init(Context context) { layoutView = LayoutInflater.from(context).inflate(R.layout.alert_dialog_menu_layout, null); text = (TextView) layoutView.findViewById(R.id.content); } public void setOnTouchAssortListener(OnTouchAssortListener listener) { this.mListener = listener; } @Override  protected void onDraw(canvas canvas){  super.onDraw(canvas); int nHeight = getHeight();  int hWidth = getWidth();  int nAssortCount = ASSORT_TEXT.length; int nInterval = nHeight / nAssortCount; for (int i = 0; i < nAssortCount; i++){   mPaint.setAntiAlias(true); // 抗锯齿   mPaint.setTypeface(Typeface.DEFAULT_BOLD); // 默认粗体   mPaint.setColor(Color.parseColor("#5f5f5f")); // 白色   if (i == mSelectIndex){   // 被选择的字母改变颜色和粗体   mPaint.setColor(Color.parseColor("#3399ff"));   mPaint.setFakeBoldText(true);   mPaint.setTextSize(30);   }   float xPos = hWidth / 2 - mPaint.measureText(ASSORT_TEXT[i]) / 2; // 计算字母的X坐标   float yPos = nInterval * i + nInterval; // 计算字母的Y坐标   canvas.drawText(ASSORT_TEXT[i], xPos, yPos, mPaint);   mPaint.reset();  }  }  @Override public boolean dispatchTouchEvent(MotionEvent event) { //判断是哪一个字母被点击了 int nIndex = (int) (event.getY() / getHeight() * ASSORT_TEXT.length); if (nIndex >= 0 && nIndex < ASSORT_TEXT.length){  switch (event.getAction()){   case MotionEvent.ACTION_MOVE:   // 如果滑动改变   if (mSelectIndex != nIndex){    mSelectIndex = nIndex;   showCharacter(ASSORT_TEXT[mSelectIndex]);   if (mListener != null){   mListener.onTouchAssortListener(ASSORT_TEXT[mSelectIndex]);   }  }   break;   case MotionEvent.ACTION_DOWN:   mSelectIndex = nIndex;   showCharacter(ASSORT_TEXT[mSelectIndex]);  if (mListener != null){    mListener.onTouchAssortListener(ASSORT_TEXT[mSelectIndex]);   }   break;   case MotionEvent.ACTION_UP:   disshowCharacter();  mSelectIndex = -1;   break;   }  } else {   mSelectIndex = -1;   disShowCharacter(); }  invalidate(); return true; } private void disShowCharacter() { if (mPopupWindow != null) {  mPopupWindow.dismiss();  mPopupWindow=null; } }  private void showCharacter(String string){ if (mPopupWindow != null){  text.setText(string); } else{   mPopupWindow = new PopupWindow(layoutView, 100, 100, false);  mPopupWindow.showAtLocation(mAttachActivity.getWindow().getDecorView(), Gravity.CENTER, 0, 0); } text.setText(string); }} 

--结束END--

本文标题: android仿微信联系人索引列表功能

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

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

猜你喜欢
  • android仿微信联系人索引列表功能
    前言  因为自己在做的一个小软件里面需要用到从A-Z排序的ListView,所以自然而然的想到了微信的联系人,我想要的就是那样的效果。本来没打算自己去写,想要第三方写好的东西,搜了几个之后发现有的太复杂了,有的简单是...
    99+
    2023-05-30
  • Android仿微信联系人列表字母侧滑控件
    仿微信联系人列表字母侧滑控件, 侧滑控件参考了以下博客:Android实现ListView的A-Z字母排序和过滤搜索功能首先分析一下字母侧滑控件应该如何实现,根据侧滑控件的高度和字母的数量来平均计算每个字母应该占据的高度。在View的onD...
    99+
    2023-05-31
    android 侧滑控件
  • Android仿微信联系人按字母排序
    App只要涉及到联系人的界面,几乎都是按照字母排序以及导航栏的方式。既然这个需求这么火,于是开始学习相关内容,此篇文章是我通过参考网上资料独立编写和总结的,希望多多少少对大家有...
    99+
    2022-06-06
    联系 字母 排序 Android
  • Android仿微信联系人字母排序效果
    本文实例为大家分享了Android联系人字母排序的具体代码,供大家参考,具体内容如下 实现思路:首先说下布局,整个是一个相对布局,最下面是一个listview,listvie...
    99+
    2022-06-06
    联系 字母 排序 Android
  • iOS实现联系人列表功能
    本文实例为大家分享了iOS实现联系人列表功能的具体代码,供大家参考,具体内容如下 按照顺序排列联系人列表,需要引入一些工具(详见demo): 主要部分代码: #import "...
    99+
    2022-05-24
    iOS 联系人 列表
  • Android仿微信实现下拉列表
     本文要实现微信6.1中点击顶部菜单栏的“+”号按钮时,会弹出一个列表框。这里用的了Activity实现,其实最好的方法可以用ActionBar,不过这货好像只支持3...
    99+
    2022-06-06
    列表 下拉列表 Android
  • Android仿微信语音聊天功能
    本文实例讲述了Android仿微信语音聊天功能代码。分享给大家供大家参考。具体如下: 项目效果如下: 具体代码如下: AudioManager.java package...
    99+
    2022-06-06
    Android
  • Android实现可浏览和搜索的联系人列表
    通过这篇文章,我想说明一下如何创建一个可搜索的“联系人列表”Android应用程序。使用这个应用程序,用户可以通过使用导航按钮浏览所有保存的联系人和根据联系人名称搜索联系人。该...
    99+
    2022-06-06
    列表 联系 Android
  • Android实现屏蔽微信拉黑和删除联系人功能示例
    Android实现屏蔽微信拉黑和删除联系人功能,废话不多说,具体如下: 实现效果: 让微信永远弹不出那个删除的对话框不就相当于屏蔽掉该功能了吗?哈哈效果如图: 实现原理:...
    99+
    2022-06-06
    联系 示例 Android
  • Android如何实现仿微信@好友功能
    这篇文章主要介绍Android如何实现仿微信@好友功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先上个效果图就是这么个功能1. 分析需求输入@跳转到联系人界面,选中一个或者多个好友返回到当前界面按退格键删除整块内...
    99+
    2023-05-30
    android
  • Android仿QQ附近的人搜索展示功能
     1.概述 老规矩,先上图 原装货(就不录制gif了,大家可以自己在Q群助手开启共享地理位置,返回群聊天页面就看到看到附近的人): 看起来还是挺像的吧。 ...
    99+
    2022-06-06
    展示 Android
  • Android Compose如何实现联系人列表
    这篇文章主要介绍“Android Compose如何实现联系人列表”,在日常操作中,相信很多人在Android Compose如何实现联系人列表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-05
  • Android仿微信通讯录列表侧边栏效果
    先看Android仿微信通讯录列表侧边栏效果图 这是比较常见的效果了吧 列表根据首字符的拼音字母来排序,且可以通过侧边栏的字母索引来进行定位。 实现这样一个效果并不难,只...
    99+
    2022-06-06
    列表 Android
  • Android仿微信对话列表滑动删除效果
    微信对话列表滑动删除效果很不错的,借鉴了github上SwipeListView(项目地址:https://github.com/likebamboo/SwipeListVie...
    99+
    2022-06-06
    列表 Android
  • Android开发中模仿qq列表信息滑动删除功能
    这个效果的完成主要分为两个部分 自定义view作为listview的列表项 一个view里面包括 显示头像,名字,消息内容等的contentView和滑动才能显示出来的删除,...
    99+
    2022-06-06
    android开发 Android
  • Android仿微信、录制音频并发送功能
    MyRecorder(仿微信,录制音频并发送功能) ①布局实现(activity_main.xml) 布局采用线性布局,上面使用的一个ListView,下面使用的是一个自定...
    99+
    2022-06-06
    并发 Android
  • Android 高仿微信支付数字键盘功能
    现在很多app的支付、输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便、其效果着实精致。 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中。 先...
    99+
    2022-06-06
    仿微信 微信支付 Android
  • Android仿微信选择图片和拍照功能
    本文实例为大家分享了 Android微信选择图片的具体代码,和微信拍照功能,供大家参考,具体内容如下 1.Android6.0系统,对于权限的使用都是需要申请,选择图片和拍照...
    99+
    2022-06-06
    选择 图片 Android
  • Android仿微信支付密码弹出层功能
    预览使用这个弹出层是一个DialogFragment,逻辑都封装在其内部,使用起来很简单:Bundle bundle = new Bundle();bundle.putString(PayFragment.EXTRA_CONTENT, "提...
    99+
    2023-05-31
    android 支付 密码
  • Android仿微信列表滑动删除 如何实现滑动列表SwipeListView
    接上一篇,本篇主要讲如何实现滑动列表SwipeListView。 上篇完成了滑动控件SwipeItemView,这个控件是一个自定义的ViewGroup,作为列表的一个ite...
    99+
    2022-06-06
    列表 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作