记得在我刚接触Android的时候对系统联系人中的特效很感兴趣,它会根据手机中联系人姓氏的首字母进行分组,并在界面的最顶端始终显示一个当前的分组.如下图所示: 最让我感兴趣的是,当后一个分组和前一个分组相碰时,会产生一个上顶的挤压动画.那个时候我思考了各种方法想去实现这种特效,可是限于功夫不到家,都未能成功.如今两年多过去了,自己也成长了很多,再回头去想想这个功能,突然发现已经有了思路,于是立刻记录下来与大家分享. 首先讲一下需要提前了解的知识点,这里我们最需要用到的就是SectionIndex…
在上一篇文章中,我和大家一起实现了类似于Android系统联系人的分组导航和挤压动画功能,不过既然文章名叫做<Android系统联系人全特效实现>,那么没有快速滚动功能显然是称不上"全"的.因此本篇文章我将带领大家在上篇文章的代码基础上改进,加入快速滚动功能. 如果还没有看过我上一篇文章,请抓紧去阅读一下 Android系统联系人全特效实现(上),分组导航和挤压动画 . 其实ListView本身是有一个快速滚动属性的,可以通过在XML中设置android:fastScrol…
要实现这种功能,只需要在   android系统联系人分组特效实现(1)---分组导航和挤压动画  的基础上再加上一个自定义控件即可完成. 1.新建项目,继续新建一个java类,BladeView,用于作为导航栏 public class BladeView extends View {     private Handler handler = new Handler();     public BladeView(Context context, AttributeSet attrs) {…
1.打开activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="ma…
一.代码 1.ContactsEngine.java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; public class Conta…
读取系统联系人 由于我们之前一直使用的都是模拟器,电话簿里面并没有联系人存在,所以现在需要自 己手动添加几个,以便稍后进行读取.打开电话簿程序,界面如图 7.1 所示. 图   7.1 可以看到,目前电话簿里是没有任何联系人的,我们可以通过点击 Create a new contact按钮来对联系人进行创建.这里就先创建两个联系人吧,分别填入他们的姓名和手机号,如 图 7.2 所示. 图   7.2 这样准备工作就做好了,现在新建一个 ContactsTest 项目,让我们开始动手吧. 首先还是…
1.重要: 系统删除一个联系人,默认情况下并不是把这个联系人直接删除掉了,只是做了一个标记,标记为被删除. 2.前面一讲说过了如何获取系统联系人信息(通过ContentProvider),获取联系人信息是经常使用,下面封装成工具类,方便以后调用: 下面通过案例说明一下: (1)Android工程如下图: (2)其中工具类ContactInfoUtils.java,如下: package com.himi.readcontacts.utils; import java.util.ArrayList…
1.系统联系人的数据库(3张最重要的表) (1)raw_contacts  联系人表        保存联系人的id   contact_id (2)data 数据表       保存联系人的数据 (3)mimetypes       MIME数据类型表    2.因为如果要访问ContentProvider,必须要了解URI的设置(authority,path等):只有查看源代码才能够知道:AndroidManifest.xml为清单文件,列出了ContactProvider的authorit…
1.重要: 系统删除一个联系人,默认情况下并不是把这个联系人直接删除掉了,只是做了一个标记,标记为被删除. 2.前面一讲说过了如何获取系统联系人信息(通过ContentProvider),获取联系人信息是经常使用,下面封装成工具类,方便以后调用: 下面通过案例说明一下: (1)Android工程如下图: (2)其中工具类ContactInfoUtils.java,如下: package com.himi.readcontacts.utils; import java.util.ArrayList…
1.系统联系人的数据库(3张最重要的表) (1)raw_contacts  联系人表        保存联系人的id   contact_id (2)data 数据表       保存联系人的数据 (3)mimetypes       MIME数据类型表    2.因为如果要访问ContentProvider,必须要了解URI的设置(authority,path等):只有查看源代码才能够知道:AndroidManifest.xml为清单文件,列出了ContactProvider的authorit…