滑动字母定位listview的对应字母的item
来源:互联网 发布:与连接网络相关的单词 编辑:程序博客网 时间:2024/05/29 17:54
效果图:
自定义右侧sideBar获取焦点改变背景颜色. 显示有焦点的字母;
主要代码:
/** * 重写这个方法 */ protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 获取焦点改变背景颜色. int height = getHeight();// 获取对应高度 int width = getWidth(); // 获取对应宽度 int singleHeight = height / b.length;// 获取每一个字母的高度 for (int i = 0; i < b.length; i++) { paint.setColor(Color.rgb(33, 65, 98)); // paint.setColor(Color.WHITE); paint.setTypeface(Typeface.DEFAULT_BOLD); paint.setAntiAlias(true); paint.setTextSize(20); //选中的状�? if (i == choose) { paint.setColor(Color.parseColor("#3399ff")); paint.setFakeBoldText(true); } //x坐标等于中间-字符串宽度的�?�?. float xPos = width / 2 - paint.measureText(b[i]) / 2; float yPos = singleHeight * i + singleHeight; canvas.drawText(b[i], xPos, yPos, paint); paint.reset();// 重置画笔 } } @SuppressLint("NewApi") @Override public boolean dispatchTouchEvent(MotionEvent event) { final int action = event.getAction(); final float y = event.getY();// 点击y坐标 final int oldChoose = choose; final OnTouchingLetterChangedListener listener = onTouchingLetterChangedListener; final int c = (int) (y / getHeight() * b.length);// 点击y坐标�?占�?�高度的比例*b数组的长度就等于点击b中的个数. switch (action) { case MotionEvent.ACTION_UP:// setBackgroundDrawable(new ColorDrawable(0x00000000)); setBackground(new ColorDrawable(0x00000000)); choose = -1;// invalidate(); if (mTextDialog != null) { mTextDialog.setVisibility(View.INVISIBLE); } break; default: setBackgroundResource(R.drawable.sidebar_background); if (oldChoose != c) { if (c >= 0 && c < b.length) { if (listener != null) { listener.onTouchingLetterChanged(b[c]); } if (mTextDialog != null) { mTextDialog.setText(b[c]); mTextDialog.setVisibility(View.VISIBLE); } choose = c; invalidate(); } } break; } return true; }
汉子转拼音
* /* * 汉字转成ASCII码 * * @param chs * @return */
private int getChsAscii(String chs) {
int asc = 0;
try {
byte[] bytes = chs.getBytes(“gb2312”);
if (bytes == null || bytes.length > 2 || bytes.length <= 0) {
throw new RuntimeException(“illegal resource string”);
}
if (bytes.length == 1) {
asc = bytes[0];
}
if (bytes.length == 2) {
int hightByte = 256 + bytes[0];
int lowByte = 256 + bytes[1];
asc = (256 * hightByte + lowByte) - 256 * 256;
}
} catch (Exception e) {
System.out.println(“ERROR:ChineseSpelling.class-getChsAscii(String chs)” + e);
}
return asc;
}
/** * 单字解析 * * @param str * @return */ public String convert(String str) { String result = null; int ascii = getChsAscii(str); if (ascii > 0 && ascii < 160) { result = String.valueOf((char) ascii); } else { for (int i = (pyvalue.length - 1); i >= 0; i--) { if (pyvalue[i] <= ascii) { result = pystr[i]; break; } } } return result;}/** * 词组解析 * * @param chs * @return */ public String getSelling(String chs) { String key, value; buffer = new StringBuilder(); for (int i = 0; i < chs.length(); i++) { key = chs.substring(i, i + 1); if (key.getBytes().length >= 2) { value = (String) convert(key); if (value == null) { value = "unknown"; } } else { value = key; } buffer.append(value); } return buffer.toString();}**
对ListView里面的数据根据ABCDEFG…来排序
**public int compare(SortModel o1, SortModel o2) {
//这里主要是用来对ListView里面的数据根据ABCDEFG…来排序
if (o1.getSortLetters().equals(“@”)
|| o2.getSortLetters().equals(“#”)) {
return -1;
} else if (o1.getSortLetters().equals(“#”)
|| o2.getSortLetters().equals(“@”)) {
return 1;
} else {
return o1.getSortLetters().compareTo(o2.getSortLetters());
}
}**
github下载地址:https://github.com/shenglintang/SlippingSearch
csdn下载地址:http://download.csdn.net/my
- 滑动字母定位listview的对应字母的item
- ListView实现SectionIndex,实现右侧栏字母的快速滑动
- 微信小程序带字母滑动的listview----项目实战
- 自定义listview右侧的字母导航view,滑动view时,listview显示的分组为自定义view的滑动到的字母
- 滑动删除ListView的Item
- listView 的item滑动删除
- &和&&、字母数字对应的ASCII码。
- 全国地区车牌字母对应的地区
- 类通讯录右侧滑动的字母条
- android 根据字母排序ListView item数据
- [插件/工具]微信小程序实用组件:带字母滑动的listview
- android ListView根据字母排序和定位
- Android UI ListView实现字母索引 定位
- android ListView根据字母排序和定位
- listview按字母A-Z快速定位
- ListView获取Item对应的model注意事项
- 滑动删除ListView的Item的效果
- ListView的Item的滑动删除
- 使用ffmpeg合并视频文件的三种方法
- 浅谈TCP/UDP、IP 、Socket、HTTP
- css hack 详解
- lvs和keepalived的结合配置
- Android开发常用片段
- 滑动字母定位listview的对应字母的item
- iOS 基于AFNetworking 调用 Web services 接口
- APP开发后端服务器
- 近期工作总结
- HTTP请求报文和HTTP响应报文
- 修改Android签名文件keystore作为eclipse默认debug签名文件
- linux sed替换命令s举例
- 负载均衡session会话保持方法
- linux下利用iptables配置路由器