这是一个模仿微信下面导航的一个demo,大神们清喷,求指教。
需求:收到新的收消息后,图标下有提示的小红点
说一个我的思路:1.在LinearLayout 里有三个FrameLayout布局
<FrameLayout android:id="@+id/message" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" > <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/message_imgv" android:layout_width="@dimen/dp_30" android:layout_height="@dimen/dp_30" android:layout_marginTop="2dp" android:src="@drawable/selector_message" > </ImageView> <TextView android:id="@+id/messagetext" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:button="@null" android:gravity="center" android:textColor="@drawable/radio_text" android:text="信息"></TextView> </LinearLayout> <TextView android:id="@+id/hint" android:layout_width="@dimen/dp_14" android:layout_height="@dimen/dp_14" android:layout_gravity="top|center" android:layout_marginLeft="10dp" android:layout_marginTop="2dp" android:background="@drawable/tab_msgnum_textbg" android:textSize="8sp" android:gravity="center" android:textColor="#FFFFFF" android:visibility="visible"/> </FrameLayout>这是其中一项
实现起来是这个样的,但是在软件中我们不能让他每时每刻都显示,必须按照需求来。
那么我的方法是接受到新的信息就发一个本地广播
@Override public void updaUI(List<MessageResult> result) { if (this.list != null)list.clear(); this.list = result; int i = 0; if (list != null && list.size()>0){ for (MessageResult mag:list) { //判断是否收到新的消息 if (mag.getRead().equals("0")){ i++; } } } if (i > 0){ LocalBroadcastManager.getInstance(getContext()).sendBroadcast(new Intent(Constants.ACTION_IMAGE_MESSAGE).putExtra("id",1).putExtra("num",i)); }else { LocalBroadcastManager.getInstance(getContext()).sendBroadcast(new Intent(Constants.ACTION_IMAGE_MESSAGE).putExtra("id",2)); } adapter = new MessageAdapter(getContext(),this.list); listView.setAdapter(adapter); listView.setOnItemClickListener(this); listView.setOnItemLongClickListener(this); }到主页面接收
IntentFilter intentFilter = new IntentFilter(Constants.ACTION_ENTER_HOME); LocalBroadcastManager.getInstance(this).registerReceiver(message_br, intentFilter);控件Textview的显示
private BroadcastReceiver message_br = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { int i = intent.getIntExtra("id",0); if (i == 1){ hint_tv.setText(intent.getStringExtra("num")); hint_tv.setVisibility(View.VISIBLE); }else if (i == 2){ hint_tv.setVisibility(View.INVISIBLE); } } };记得关闭页面时取消广播
@Override protected void onDestroy() { super.onDestroy(); ButterKnife.unbind(this); LocalBroadcastManager.getInstance(this).unregisterReceiver(message_br); }搞掂!
本文提供了一个模仿微信导航栏新消息提示小红点的demo,通过在LinearLayout中包含三个FrameLayout实现。当收到新消息时,通过发送本地广播来动态显示提示红点,满足需求。
6786

被折叠的 条评论
为什么被折叠?



