- 浏览: 85728 次
- 性别:
- 来自: 北京
最新评论
-
LiuYiJie2007:
public static String getPublicK ...
Android publickey获取 -
LiuYiJie2007:
getPublicKey( )是你自己写法方法 是什么?new ...
Android publickey获取 -
liujia9234:
我试了,不行,最不靠谱了
最靠谱的禁止ViewPager滑动方法 -
kedongjun:
非常强大
关于android通讯录加载大数据的优化问题 -
xunhuan01:
view.getImageMatrix(), savedMat ...
多点触摸放大图片的自定义listener
在我们开发一些如短消息、应用商店等应用时,会考虑在短消息的图标上加上未读短信的数量,在应用商店上加上可以升级的应用数量,这样不占太大空间还能达到提示的目的。
本节eoe就以一个展示手机内联系人数量的例子来演示怎么在一个图标的上面加上数字的例子,也就是一个数字overlay。做过google map开发的知道overlay这个东西。
一:你可学到
1.手机内依据Uri查看联系人
2.权限的添加
3.获取手机内任意一款应用的应用图标
4.对图形的处理,如复制,为图片加上覆盖层--数字。
5.使用RemoteView自定义Notification
二:开始行动
1.新建名为NotificationIconCount的Android Project。附件中有最终版本的项目工程
2.首先修改AndroidManifest.xml,加入权限<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>,因为我们要读取联系人。
3.修改main.xml如下,这里定义一个ImageView,勇于预览我们处理好的加上数字的图标。
4.先来获取手机内通讯录的图标,如果没有获取到,则使用该应用的图标.
这里用到一个自定义的根据资源图标id获取图片的函数,很简单,代码如下:
5.获取到图标之后就要对这个图标进行处理了,要为该图标加上联系人数量的覆盖,首先我们看获取联系人个数的函数。
这里采用Uri的方式获取联系人的cursor,然后获取个数。
6. 有了图标和联系人个数就可以生成带联系人个数的图标了,我们看下生成的这个函数。
本节eoe就以一个展示手机内联系人数量的例子来演示怎么在一个图标的上面加上数字的例子,也就是一个数字overlay。做过google map开发的知道overlay这个东西。
一:你可学到
1.手机内依据Uri查看联系人
2.权限的添加
3.获取手机内任意一款应用的应用图标
4.对图形的处理,如复制,为图片加上覆盖层--数字。
5.使用RemoteView自定义Notification
二:开始行动
1.新建名为NotificationIconCount的Android Project。附件中有最终版本的项目工程
2.首先修改AndroidManifest.xml,加入权限<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>,因为我们要读取联系人。
3.修改main.xml如下,这里定义一个ImageView,勇于预览我们处理好的加上数字的图标。
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 03. android:orientation="vertical" 04. android:layout_width="fill_parent" 05. android:layout_height="fill_parent" 06. > 07. <ImageView 08. android:id="@+id/icon" 09. android:layout_width="wrap_content" 10. android:layout_height="wrap_content" 11. android:scaleType="center" 12. android:adjustViewBounds="true"/> 13.</LinearLayout>
4.先来获取手机内通讯录的图标,如果没有获取到,则使用该应用的图标.
super.onCreate(savedInstanceState); 02. setContentView(R.layout.main); 03. mImageView=(ImageView)findViewById(R.id.icon); 04. //优先采用联系人的图标,如果不存在则采用该应用的图标 05. Drawable contactIcon; 06. try { 07. contactIcon = getPackageManager().getApplicationIcon("com.android.contacts"); 08. } catch (NameNotFoundException e) { 09. contactIcon=null; 10. } 11. Bitmap icon; 12. if(contactIcon instanceof BitmapDrawable){ 13. icon=((BitmapDrawable)contactIcon).getBitmap(); 14. }else{ 15. icon=getResIcon(getResources(), R.id.icon); 16. }
这里用到一个自定义的根据资源图标id获取图片的函数,很简单,代码如下:
/** 02. * 根据id获取一个图片 03. * @param res 04. * @param resId 05. * @return 06. */ 07. private Bitmap getResIcon(Resources res,int resId){ 08. Drawable icon=res.getDrawable(resId); 09. if(icon instanceof BitmapDrawable){ 10. BitmapDrawable bd=(BitmapDrawable)icon; 11. return bd.getBitmap(); 12. }else{ 13. return null; 14. } 15. }
5.获取到图标之后就要对这个图标进行处理了,要为该图标加上联系人数量的覆盖,首先我们看获取联系人个数的函数。
/** 02. * 获取联系人的个数 03. * @return 手里通讯录中联系人的个数 04. */ 05. private int getContactCount(){ 06. Cursor c=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts._COUNT}, null, null, null); 07. try{ 08. c.moveToFirst(); 09. return c.getInt(0); 10. }catch(Exception e){ 11. return 0; 12. }finally{ 13. c.close(); 14. } 15. }
这里采用Uri的方式获取联系人的cursor,然后获取个数。
6. 有了图标和联系人个数就可以生成带联系人个数的图标了,我们看下生成的这个函数。
/** 02. * 在给定的图片的右上角加上联系人数量。数量用红色表示 03. * @param icon 给定的图片 04. * @return 带联系人数量的图片 05. */ 06. private Bitmap generatorContactCountIcon(Bitmap icon){ 07. //初始化画布 08. int iconSize=(int)getResources().getDimension(android.R.dimen.app_icon_size); 09. Log.d(TAG, "the icon size is "+iconSize); 10. Bitmap contactIcon=Bitmap.createBitmap(iconSize, iconSize, Config.ARGB_8888); 11. Canvas canvas=new Canvas(contactIcon); 12. 13. //拷贝图片 14. Paint iconPaint=new Paint(); 15. iconPaint.setDither(true);//防抖动 16. iconPaint.setFilterBitmap(true);//用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果 17. Rect src=new Rect(0, 0, icon.getWidth(), icon.getHeight()); 18. Rect dst=new Rect(0, 0, iconSize, iconSize); 19. canvas.drawBitmap(icon, src, dst, iconPaint); 20. 21. //在图片上创建一个覆盖的联系人个数 22. int contacyCount=getContactCount(); 23. //启用抗锯齿和使用设备的文本字距 24. Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG); 25. countPaint.setColor(Color.RED); 26. countPaint.setTextSize(20f); 27. countPaint.setTypeface(Typeface.DEFAULT_BOLD); 28. canvas.drawText(String.valueOf(contacyCount), iconSize-18, 25, countPaint); 29. return contactIcon; 30. }
发表评论
-
Android_低版本使用ActionBar
2014-08-26 11:09 1069转载 http://blog.csdn.net/tianjf0 ... -
如何屏蔽android webview高度选中框
2014-02-19 12:04 713如标题所述,解决方法是在 html的样式中加入 *{-webk ... -
屏蔽ScrollView惯性滚动的方法
2013-08-08 13:36 5670ScrollView中有一种惯性滚动的效果,想让这个Scrol ... -
android 图片LOMO效果
2013-07-25 13:59 844import android.graphics.Bitmap; ... -
GitHub最火的android 项目
2013-07-25 13:14 755GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到 ... -
listview 点击列表项时,项中的Button会触发点击效果
2013-06-05 19:21 1256开发中,难免会在列表项中, 加入Button ,而button ... -
圆形不滚动的进度条
2013-05-17 11:38 809这种效果的进度条 代码如下: package com. ... -
最靠谱的禁止ViewPager滑动方法
2013-05-15 14:44 4922最近做项目要求某种情况下ViewPager不能滑动,在网上找了 ... -
viewpager主页面响应子页面 onkeydown事件的方法
2013-05-13 19:35 1558大家在开发中不少地方要用到ViewPager这个类,ViewP ... -
Mina 学习笔记 TCP主要接口
2013-05-05 23:21 1180(1.)IoService: 这个接口 ... -
android动画插件器
2013-04-27 10:01 788首先要了解为什么需要插值器,因为在补间动画中,我们一般只定义关 ... -
imageView 的 android:maxHeight,maxWidth属性
2013-03-29 10:17 782大家使用android:maxHeight,maxWidth属 ... -
android中获取下载地址文件的类型的方法
2013-03-28 11:33 982MimeTypeMap mimeTypeMap = Mime ... -
res与res-auto的区别
2013-03-27 14:55 3924通常我们在布局文件中使用自定义属性的时候 会这样写 xmln ... -
滑动开关控件
2013-03-26 22:39 764public class SlidButton exten ... -
TextView使用SpannableString设置复合文本
2013-03-23 23:35 8451、BackgroundColorSpan 背景色 Sp ... -
Android编程之SparseArray<E>详解
2013-03-21 23:03 945一、构造 从构造方法我 ... -
判断系统是否支持 DownloadManager服务
2013-03-18 14:25 820public static boolean isDownloa ... -
android ndk native_activity.h
2013-03-12 15:25 1737#ifndef ANDROID_NATIVE_ACTIVITY ... -
android ndk obb.h
2013-03-12 15:14 1104#ifndef ANDROID_OBB_H #define A ...
相关推荐
Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等 对应博客 http://blog.csdn.net/michael__li/article/details/6941756
Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
试图在android中为webrtc提供codelab-类似于http://codelabs.developers.google.com/codelabs/webrtc-web上的codelab/
Kustomer Android SDK - 在Android应用中为您的客户提供支持
LiteGo:「迷你」的Android异步并发类库LiteGo是一款基于Java语言的「异步并发类库」,它的核心是一枚「迷你」并发器,它可以自由地设置同一时段的最大「并发」数量,等待「排队」线程数量,还可以设置「排队策略」...
Android中为EditText添加边框的代码清单.pdf 学习资料 复习资料 教学资源
Android中为应用添加多个Activity并实现参数传递案例!
这是一组最小的脚本,用于在容器中为各种系统(如 Docker)运行模拟器,以供外部使用。 这些脚本与 Python 版本 2 和 3 兼容。 *请注意,这仍然是一个实验性功能,我们建议在安装此工具。 如果您发现任何事情都没有...
fyp-android-socket-test 一个简单的应用程序,用于在 Android 中为 FYP 测试套接字
请注意,该项目实际上在git子模块中为JNI代码引用了Android-sqlite-native-driver。 建造 第一步 $ make init # include `Android-sqlite-native-driver` & `sqlite-amalgamation` subprojects 普通身材 $ make ...
Android中为View添加事件监听的使用说明(以Button为例).pdf 学习资料 复习资料 教学资源
Android中为TextView添加超链接的代码清单.pdf 学习资料 复习资料 教学资源
Android中为自定义视图添加单击事件的代码清单.pdf 学习资料 复习资料 教学资源
Android中为字符串添加修饰的练习题代码清单.pdf 学习资料 复习资料 教学资源
Android中为绘制的几何图形添加事件的任务要求.pdf 学习资料 复习资料 教学资源
Android中为字符串添加修饰的练习题要求说明.pdf 学习资料 复习资料 教学资源
Android中为字符串添加修饰的练习题实现提示与解决方案(共9张PPT).ppt
android imageView 读取网络图片并进行
行业资料-电子功用-用于在连续处理装置中为扁平物品提供电接触的装置及方法
InkAnno是一个用java编写的GUI应用程序,用于在InkML文档中为数字墨迹创建注释。创建该应用程序是为了在 AMI-Corpus 中注释此类文档以及 IAMonDo 数据库。它的核心模型 InkML 被外化为 libinkml 项目的库。