美文网首页Android知识Android技术知识Android开发
【苦逼开发】“砖家”给我们埋下了多少坑?

【苦逼开发】“砖家”给我们埋下了多少坑?

作者: 磨砺营 | 来源:发表于2016-10-20 09:09 被阅读152次

【威哥说】官方文档是比较准确的,但是他并一定完全是符合我们实际的应用的。所以,自然的就会让初学者坠入一些“陷阱”,今天我们就一起看看官方文档里面为初学者埋了多少“坑”。

我们知道自定义notification要使用RemoteViews,相信做过自定义notification的都很清楚,这是一个在其它进程中显示的View。可以改变RemoteViews里面的子View的值。但是这样会有一些坑,本文就来带大家总结下有哪些坑。

public void musicNotificationClick(View v){

final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);

builder.setSmallIcon(R.mipmap.ic_launcher);

builder.setOngoing(true);//设置 通知为常驻通知

RemoteViews view = new RemoteViews(getPackageName(),R.layout.custom_layout);

view.setTextViewText(R.id.textView_songName,"我是一匹孤独的狼");

view.setImageViewBitmap(R.id.imageView,BitmapFactory.decodeResource(getResources(),android.R.drawable.ic_media_play));

//        view.setOnClickPendingIntent(); //设置 按钮的事件

builder.setContent(view);

Notification n = builder.build();

NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

nm.notify(NID_4,n);

}

设置不同区域的点击PendingIntent

默认的Notification只能通过setContentIntent设置整体的点击事件。不过通过RemoteViews我们可以设置不同地方不同的点击事件,当然这里的事件指的是PendingIntent。如下,设置了点击R.id.notice_view_type_0打开一个Activity,而点击R.id.close_iv会发出一个广播,可以通过这个广播的广播接收器来做一些事情,如这里是关闭当前的Notification。另外还可以打开一个Service。

PendingIntent.getActivity(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.notice_view_type_0, pendingIntent); int requestCode1 = (int) SystemClock.uptimeMillis(); Intent intent1 = new Intent(ACTION_CLOSE_NOTICE); intent1.putExtra(NOTICE_ID_KEY, NOTICE_ID_TYPE_0); PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, requestCode1, intent1, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.close_iv, pendingIntent1);

设置通知的自定义View

以上我们得到了自定义的RemoteViews。通过下面这段代码就能生成自定义View的Notification,注意这里使用了setContent()方法。这是网上自定义Notification都会使用的方法。

Notification notification = new NotificationCompat.Builder(context).setContent(remoteViews).build();

但是它会有一个问题。

通过setContent()方法获得的Notification是定高的。如果View的高度比默认高度要大的话,就有一部分显示不出来。

默认情况下通知高度为64dp,当然Rom不同可能会有些区别。一般文字在小于两行的情况下都是可以显示。

使用如下方法,可以适配内容的大小

NotificationCompat.Builder builder = new NotificationCompat.Builder(context); if(android.os.Build.VERSION.SDK_INT >= 16) { notification = builder.build(); notification.bigContentView = remoteViews; } notification.contentView = remoteViews;

注意:

这里我们需要明确一个我们很容易忽略的问题,那就是通知是可以展开和收起的。

在上面的代码中我们分别设置了bigContentView 这是展开的自定义视图,而contentView则是收起时的视图。

bigContentView是在sdk16时引入的,所以需要判断一下。如果小于sdk16则只能定高了。

bigContentView 的最大高度是100dp。

bigContentView和contentView的设置不能调转顺序,亲测这样会让contentView不显示。

.

【更多精彩内容】

学编程不能不学项目【53个优秀项目集锦】

想学习必须掌握的9大方法

威哥的真情告白

相关文章

  • 【苦逼开发】“砖家”给我们埋下了多少坑?

    【威哥说】官方文档是比较准确的,但是他并一定完全是符合我们实际的应用的。所以,自然的就会让初学者坠入一些“陷阱”,...

  • 【苦逼开发】“砖家”给我们埋下了多少坑?

    【威哥说】官方文档是比较准确的,但是他并一定完全是符合我们实际的应用的。所以,自然的就会让初学者坠入一些“陷阱”,...

  • 【班级日志】“得”与“失”

    寄语: 现在偷的每个懒,都是给未来挖的坑,以后的日子要付出数倍的努力来填补这个坑;现在吃的每个苦,都是给未来添砖加...

  • <蛋蛋购物>项目上线后总结

    1 挖的坑, 肯定是要埋的。你最初在开发的时候,挖了多大的坑, 有多深, 你都得一个个的给填上 2 开发人员, 一...

  • Android开发,切图网站推荐。

    在开发过程中,我们经常会发现一些UI给的图是根据iphone的切图来的。 所以导致我们苦逼的安卓开发人员的图片适配...

  • 随笔

    不知不觉,来北京已经三年了。回首向来萧瑟处,多少苦逼多少路。时间如白驹过隙,且留下了深深的痕迹。 这天,看了一期《...

  • 2018-03-14.0.springboot初探

    埋坑

  • 《是谁用道德,绑架了谁的幸福之愚孝》

    *是谁常把坑死坑埋, 路死路埋挂在嘴边。 是谁用道德的枷锁, 捆绑谁行走的脚尖。 是谁总在无事生非, 把家搅的鸡犬...

  • 给自己埋个坑吧

    目前在从事Java开发:(就把自己一些经常需要用到的,绕不开的一些技术工具和数据格式做一些列举,以后过来11点明清...

  • 埋坑。

    埋下一个巨坑—————— 建立一个属于自己多幻想世界,缤纷多彩,悲喜交加,流...

网友评论

    本文标题:【苦逼开发】“砖家”给我们埋下了多少坑?

    本文链接:https://www.haomeiwen.com/subject/rfrfuttx.html