<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Android無(wú)布局文件下自定義通知欄notification的

Android無(wú)布局文件下自定義通知欄notification的

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

在開(kāi)發(fā)項目一個(gè)與通知欄有關(guān)的功能時(shí),由于自己的項目是基于插件形式的所以無(wú)法引入系統可用的布局文件,這樣無(wú)法自定義布局,造成無(wú)法自定義通知欄的icon。

本文引用地址:http://dyxdggzs.com/article/201609/304412.htm

在網(wǎng)上也有一種不用布局文件更換icon的方法,但是由于A(yíng)ndroid的開(kāi)放性,某些手機廠(chǎng)商會(huì )修改通知的源碼,不是使用系統原有的布局文件方法有一定的局限性。文章如下http://blog.csdn.net/z1074971432/article/details/10446715有興趣的朋友可以看下。

為了適配大多數的機型這里衍生出一種比較曲線(xiàn)救國的方式。。。

public void show(String title, CharSequence content, Bitmap bitmap, PendingIntent intent)

{

// 在2.3的機子上,如果id相同的notifation,有一個(gè)帶ContentIntent一個(gè)不帶就會(huì )拋異常

_notification.setLatestEventInfo(_context, , , null);

_notification.flags = _flag;

RemoteViews hide = _notification.contentView;

initView(_notification,hide, title, content, intent,bitmap);

_manager.notify(_id, _notification);

}

public void cancel()

{

_manager.cancel(_id);

}

@SuppressWarnings(deprecation)

void initView(final Notification bar, final RemoteViews views, String title, CharSequence text, PendingIntent intent, final Bitmap bitmap)

{

bar.contentView = null;

bar.setLatestEventInfo(_context, title, text, intent);

Notification notification = new Notification();

notification.setLatestEventInfo(_context, , , null);

View view = notification.contentView.apply(_context, null);//以notification實(shí)例化一個(gè)View,這個(gè)就是系統當前使用的布局視圖

ViewGroup group = (ViewGroup) view;

findView(group, new ViewVisitor()

{

@Override

public void onFindView(View item)

{

if (item instanceof ImageView)//查找這個(gè)布局下的ImageView就是icon控件

{

bar.contentView.setInt(item.getId(), setAlpha, 0);//將原有的icon隱藏,由于在小米系統中系統設置的icon會(huì )覆蓋原有設置的

views.setViewPadding(item.getId(), item.getPaddingLeft(), item.getPaddingTop(), item.getPaddingRight(), item.getPaddingBottom());

if (bitmap != null)

views.setImageViewBitmap(item.getId(), bitmap);//設置icon圖片

else views.setImageViewResource(item.getId(), _context.getApplicationInfo().icon);

}

else if(item instanceof TextView)

{

views.setViewVisibility(item.getId(), View.GONE);//隱藏最上層的view里的所有的TextView,不與底層的重疊

}

}

});

views.setInt(view.getId(), setBackgroundColor, Color.argb(0, 0, 0, 0));設置上層布局的背景透明

views.setViewPadding(view.getId(), 0, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom());

bar.contentView.addView(view.getId(), views);//將views添加到原有的布局視圖上

}

public interface ViewVisitor

{

void onFindView(View view);

}

void findView(ViewGroup group, ViewVisitor visitor)//查找視圖里面的所有子視圖

{

for (int i = 0; i group.getChildCount(); i++)

{

View view = group.getChildAt(i);

if (visitor != null)

visitor.onFindView(view);

if (view instanceof ViewGroup)

findView((ViewGroup) view, visitor);

}

}

由于無(wú)法對自定義的布局進(jìn)行準確定位,所以這種方式的icon和布局大小與原有系統樣式可能有一點(diǎn)偏差!



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>