该项目主要记录平时学习过程中的一些零碎知识点(2017年2月),具体目录如下:
仿照iOS的效果实现的一个三状态按钮,效果如下:
具体代码实现细节可以参考第一个demo中的具体示例。
比较重要的一个话题,本demo中给出最基本的实现方式。
通过系统的:
getContentResolver().query(ContactsContract.CommonDataKinds.
Phone.CONTENT_URI, null, null, null, null);
访问手机上的联系人信息。
另外一个不错的实现头部悬停效果的PinnedListView
Android仿联系人列表分组悬浮列表实现,自定义PinnedHeaderListView实现
@OnClick(R.id.first_notification)
public void sendFirstNotification() {
// 第一步,获取NotificationManager
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// 第二步,创建Notification
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("通知的标题")
.setContentText("通知的内容")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.build();
// 第三步,发送通知
manager.notify(1, notification);
}
关键之处,在于构建PendingIntent:
// 创建PendingIntent
Intent intent = new Intent(this, Notification2Activity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
而后再创建Notification时:
.setContentIntent(pi)
关于PendingIntent是一个非常重要的概念,可以参照《Android开发艺术探索》一书的第五章内容进行相应的学习。
.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg")))
.setVibrate(new long[]{0, 1000, 1000, 1000})
.setLights(Color.GREEN, 1000, 1000)
.setDefaults(NotificationCompat.DEFAULT_ALL)
上面的实现根据各个应用的需求选择性的设置即可。
setStyle(new NotificationCompat.BigTextStyle().bigText()
.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.big_image)))
.setPriority(NotificationCompat.PRIORITY_MAX)