电话通讯录demo 包括按字母排序
来源:互联网 发布:开通淘宝客要多少钱 编辑:程序博客网 时间:2024/05/17 02:05
最近闲着没事,就把自己没事做的一些菜鸟级别的demo发上来,和大家分享,请高人指点
这个demo就是一个模仿通信录的应用,可以打电话,后来不爱写下去了就没在做下去,有喜欢做的同志可以把他完善一下,呵呵
demo的编码格式UT8-8;
下面上效果图
一不小心差点把自己的电话号都泄漏出去
先说一下这个应用的思路
首先 自定义了一个view 就是右面那一天有27个字母的竖条,根据屏幕的高度,平均分配了每个字母的高度和固定的宽度。
其次 为了提高checkbox的点击体验,使用了覆盖更宽FrameLayout 为这个FrameLayout设置了点击事件,然后模拟checkbox的点击 触发checkbox效果
再次 利用了一个第三方的jar做中文转化为拼音(为了排序) 支持中文,英文,拼音混合排序,可能有的地方逻辑不是很好,请高手指教
再再次 添加了滑动和点击拼音首字母提示(在上一张图吧)
下面来点代码吧:
右面27个字母自定义的view
package com.testcontact;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;
import android.widget.SectionIndexer;
import android.widget.TextView;
public class SideBar extends View {
private char[] l;
private SectionIndexer sectionIndexter = null;
private ListView list;
private TextView mDialogText;
private int width = 0;
private int hight = 0;
public SideBar(Context context)
{
super(context);
init();
}
public SideBar(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
private void init() {
l = new char[] {'@', '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'};
}
public SideBar(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}
public void setListView(ListView _list) {
list = _list;
sectionIndexter = (SectionIndexer) _list.getAdapter();
}
public void setTextView(TextView mDialogText) {
this.mDialogText = mDialogText;
}
//判断点击的趋于
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
int i = (int) event.getY();
if (hight <= 0)
{
hight = getHeight();
}
int idx = i / (hight / 26);
if (idx >= l.length)
{
idx = l.length - 1;
} else if (idx < 0)
{
idx = 0;
}
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE)
{
//显示提示点击的字母
mDialogText.setVisibility(View.VISIBLE);
mDialogText.setText("" + l[idx]);
if (sectionIndexter == null)
{
sectionIndexter = (SectionIndexer) list.getAdapter();
}
int position = sectionIndexter.getPositionForSection(l[idx]);
if (position == -1)
{
return true;
}
list.setSelection(position);
} else
{
mDialogText.setVisibility(View.INVISIBLE);
}
return true;
}
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setTextSize(20);
paint.setTextAlign(Paint.Align.CENTER);
paint.setColor(Color.WHITE);
paint.setTypeface(Typeface.DEFAULT_BOLD);
paint.setAntiAlias(true);
hight = getHeight();
// float widthCenter = getMeasuredWidth() / 2;
for (int i = 0; i < l.length; i++)
{
float xPos = getWidth() / 2 /*- paint.measureText(String.valueOf(l[i])) / 2*/;
float yPos = (getHeight() / l.length) * i + (getHeight() / l.length);
canvas.drawText(String.valueOf(l[i]), xPos, yPos, paint);//关键的绘制,根据屏幕的高度,单独绘制每个字母。
// canvas.drawText(String.valueOf(l[i]), widthCenter, m_nItemHeight
// + (i * m_nItemHeight), paint);
}
super.onDraw(canvas);
}
}
还是上传demo源码吧 虽然功能不多,但是代码都粘上来有点太庞大了,demo中关键的地方都有注释
转载的同志,麻烦标下出处!
demo下载地址 : http://download.csdn.net/download/eye_hello/4547682
- 电话通讯录demo 包括按字母排序
- 仿IOS通讯录效果,实现获取手机通讯录、字母排序显示、搜索联系人、拨打电话
- 将列表按字母排序如通讯录
- ios按字母排序的通讯录
- 通讯录按字母排序的工具类
- 自定义SlideBar实现仿通讯录效果按字母排序
- Android实现通讯录功能,排序+字母索引
- 用系同自带的排序神器对通讯录按字母分组排序
- 高仿android通讯录--右边字母排序功能
- (字母排序搜索)类似微信通讯录效果
- Android仿微信通讯录功能,好友排序+字母索引
- Android通讯录字母排序城市列表展示效果
- Android仿微信通讯录功能,好友排序+字母索引
- 仿苹果手机通讯录按字母定位
- 如何增加一个通讯录信息,信息包括姓名,地址和电话
- 高仿通讯录按照26字母排序和右边放置字母快捷查找
- IOS数组按中文关键字以字母序排序(稍后添加 demo)
- iOS 通讯录拨打电话
- mfc实现播放器功能,双击全屏,再双击还原
- 成本分析报表
- 雨中飘荡的回忆
- php访问webservice之scoap方法
- freemarker
- 电话通讯录demo 包括按字母排序
- 在ext4文件系统,虚拟机关于Host I/O cache的启动警告
- graphlab试用笔记
- 在Linux下adb连接不上android手机的终极解决方案
- 囧
- ok6410之linux2.6.36内核添加logo显示
- apache中mod_cache mod_disk_cache
- 设计原本:计算机科学巨匠Frederick P.Brooks的思考(评注版)(Design of Design名作精读)
- 山区行