联系人快速索引.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
联系人快速索引

## 快速索引 1. 字母A-Z绘制 // 绘制方法: 参数1: 被绘制的字符串, 参数2,3: 绘制的坐标点, 参数4: 画笔 canvas.drawText(letter, x, y, paint); // 求字母x坐标: 控件高度/2 float x = mWidth * 0.5f; // 求字母y坐标: 单元格高度/2 + 文本高度/2 + 索引*单元格高度 float y = mCellHeight * 0.5f + textHeight * 0.5f + i * mCellHeight; 2. 响应触摸事件 // 重写onTouchEvent,在ACTION_DOWN/ACTION_MOVE中解析MotionEvent private void getCurrentLetter(MotionEvent event) { // 获取当前字母索引 int index = (int) (event.getY() / mCellHeight); // 判断是否在正确的范围内 if(index = 0 index LETTERS.length){ // 和上一个字母索引不同 if(index != currentIndex){ System.out.println(index: + index + letter: + LETTERS[index]); // 将字母传出去 if(onLetterUpdateListener != null){ onLetterUpdateListener.onLetterUpdate(LETTERS[index]); } // 记录最后摸到的字母索引 currentIndex = index; } } } 3. 通过监听回调将字母传出来 4. ListView 汉字-拼音 5. ListView 排序 // 集合中的对象必须实现Comparable接口 Collections.sort(persons); 6. ListView 条目分组 // 比较当前首字母和上一个首字母是否不同, 不同, 则显示 String currentLetter = p.getLetter(); // 如果此变量被赋值了, 说明需要显示. String letter = null; if(position == 0){ // 1. position == 0 letter = currentLetter; }else { // 2. 当前首字母和上一个不同 String preLetter = getItem(position - 1).getLetter(); if(!TextUtils.equals(currentLetter, preLetter)){ // 需要显示 letter = currentLetter; } } 7. 自定义控件 和 ListView 结合 // 遍历数据集合, 找到首个 首字母为letter的条目的索引. for (int i = 0; i persons.size(); i++) { Person person = persons.get(i); if(TextUtils.equals(letter, person.getLetter())){ // 跳转到i位置即可 lv.setSelection(i); break; } } ## 视差特效: (继承已有控件ListView) * 应用场景: QQ控件, 微信好友圈, 微博等信息展示界面 * 实现步骤: 1. 重写View的o

您可能关注的文档

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档