QuickIndex 通讯录快速检索
QuickIndex 通讯录快速检索
欢迎入群交流
public class QuickIndexBar extends View {private String[] indexArr = {"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"};Paint paint = null;int ColorDefault = Color.GRAY;//默认颜色int ColorPressed = Color.BLUE;//按下颜色public QuickIndexBar(Context context) {this(context, null);}public QuickIndexBar(Context context, @Nullable AttributeSet attrs) {this(context, attrs, 0);}public QuickIndexBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);paint = new Paint(Paint.ANTI_ALIAS_FLAG);//设置抗锯齿paint.setColor(ColorDefault);int size = getResources().getDimensionPixelSize(R.dimen.text_size);paint.setTextSize(size);//文字绘制的默认起点是文字的左下角,CENTER表示底边的中心,而不是正中心paint.setTextAlign(Paint.Align.CENTER);//Baseline:基准线}float cellHeight;//一个格子的高度@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);cellHeight = getMeasuredHeight() * 1f / indexArr.length;}@Overrideprotected void onDraw(Canvas canvas) {//遍历绘制26个字母for (int i = 0; i < indexArr.length; i++) {String text = indexArr[i];float x = getMeasuredWidth() / 2;//整个宽的一半//格子高度一半+文字高度一半+i*格子高度int textHeight = getTextHeight(text);float y = cellHeight / 2 + textHeight / 2 + i * cellHeight;//变色paint.setColor(i == index ? ColorPressed : ColorDefault);canvas.drawText(text, x, y, paint);}}int index = -1;//用来记录触摸的索引的@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_MOVE:int temp = (int) (event.getY() / cellHeight);if (temp != index) {index = temp;//对index进行一下安全性的检查if (index >= 0 && index < indexArr.length) {String word = indexArr[index];if (listener != null) {listener.onLetterChange(word);}}}break;case MotionEvent.ACTION_UP://抬起重置变量index = -1;break;}//重绘invalidate();return true;}/*** 获取文字的高度** @param text* @return*/private int getTextHeight(String text) {Rect bounds = new Rect();paint.getTextBounds(text, 0, text.length(), bounds);//对bounds进行赋值return bounds.height();}private OnLetterChangeListener listener;public void setOnLetterChangeListener(OnLetterChangeListener listener) {this.listener = listener;}public interface OnLetterChangeListener {void onLetterChange(String word);}}
微信公众号(他晓),关注并转发,谢谢
QuickIndex 通讯录快速检索相关推荐
- Android自定义控件之实现快速检索
前言:关于这个快速检索我们平常见到的app应用的很多,比如手机通讯录联系人.微信朋友,以及其他的商品列表等,实现的功能就是通过右侧或者左侧的字母进行快速检测,OK!今天我就带领大家来实现这个功能! - ...
- Elasticsearch 如何做到快速检索 - 倒排索引的秘密
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://ricstudio.top/archives/es-lucene-reverted-index 一.前言 最近 ...
- Elasticsearch 为什么能做到快速检索?— 倒排索引的秘密
来源:https://ricstudio.top/archives/es-lucene-reverted-index "All problems in computer science ca ...
- Elasticsearch 如何做到快速检索?
" 最近接触的几个项目都使用到了 Elasticsearch (以下简称 ES ) 来存储数据和对数据进行搜索分析,就对 ES 进行了一些学习.本文整理自我自己的一次技术分享. 本文不会关注 ...
- 快速检索并引用你在CSDN上所有的博文笔记
简 介: 利用CSDN提供的博文的列表,编写了一个快速检索自己博文,并自动插入索引连接的程序.这样就可以大大提高博文写作的效率,将之前记录学习.工作的内容更好的进行连接.最后,感谢CSDN技术人员的大 ...
- 快速检索2021年EI会议论文的方法
1. EI检索条件设置 1.1选择数据库 在SELECT DATABASE的下拉菜单中选择Compendex,系统默认数据库为Compendex, 其他数据库为: INSPEC(科学文摘).Paten ...
- python批量检索文献pubmed_PubMed快速检索文献,学学这些技巧!
原标题:PubMed快速检索文献,学学这些技巧! PubMed为科研路上必不可少的数据库,今天传授PubMed高手常用的7个技巧,让你快速找到自己想要的文献. 1,获取全文技巧 Pubmed提供的文献 ...
- 【每日一题】快速检索
[每日一题]快速检索 1.笔试-选择题 [笔试-选择题] 2.有关字符串 [每日一题]删除公共字符 [每日一题]字符串筛选-去除所有相同的字符 [每日一题]倒置字符串-巧用cin输入流 ...
- 虹软人脸识别SDK接入Milvus实现海量人脸快速检索
虹软人脸识别SDK接入Milvus实现海量人脸快速检索 背景 虹软SDK及Milvus简介 开发环境 虹软人脸识别SDK使用简介 Milvus环境搭建 快速检索实现 人脸识别流程简介 快速检索 虹软S ...
最新文章
- 一种新颖的流程控制方式
- 《Adobe Flash Professional CC经典教程》——1.15 复习
- android异步编程,AsyncTask简单的异步编程android 中的实现
- Jenkins 使用slave管理进行持续集成测试说明
- So, from the AI ​​application level, what problems does
- Django开发利器——django-debug-toolbar
- 基于Javaweb实现进销存管理系统
- AO采集用友oracle,用SQL快速生成用友GRP-U8的AO财务账套的方法2017
- html如何解决412问题,网站412怎么解决?
- NVIDIA显卡驱动报错
- 交换刀片和计算刀片的区别_有关编写自定义刀片指令的所有信息
- Linux内核抢占机制(preempt)
- java 算出下一个工作日_如何计算JAVA中两个不同日期之间的工作日(不包括周末)?...
- vue中 根据权限 动态的设置路由
- 【报告分享】2021年Q2中国新经济创业投资数据分析报告-IT桔子(附下载)
- 1到50中7的倍数的数值之和
- 原生jq下载文件的方式
- Linux下ffmpeg添加 x265
- XMOS软件开发入门(1) - 开发板硬件资源介绍
- 使用 smartmontools 查看硬盘的健康状态
热门文章
- 【单目标优化求解】基于matlab黑猩猩算法求解单目标问题【含Matlab源码 1413期】
- PTA实验题:6-2 Tree类的构造函数和成员函数 (10 分)
- [ffmpeg]ffmpeg yasm not found, use --disable-yasm for a crippled build
- 理论篇-地图学与GIS制图的基础理论(二)
- 哥特巴赫猜想 尾递归 湘潭孕妇之后的自我检讨
- [NC1105B]下雨天
- 【设计模式】依赖倒转原则(Dependence Inversion Principle)
- /home/wxl/jdk1.8.0_91/jre/lib/i386/libawt_xawt.so: libXext.so.6: cannot open shared object file: No
- ubuntu18.04下YOLOV4测试和训练自己的数据集
- 测试apk-异常管控Gps攻击者开发