模仿模仿微信收到新的信息时,图标里有小原点

这是一个模仿微信下面导航的一个demo,大神们清喷,求指教。

需求:收到新的收消息后,图标下有提示的小红点

说一个我的思路:1.在LinearLayout 里有三个FrameLayout布局

    android:id="@+id/message"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1" >
            android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:orientation="vertical" >
                    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" >
        
                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="信息">
    
            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"/>
这是其中一项


实现起来是这个样的,但是在软件中我们不能让他每时每刻都显示,必须按照需求来。

那么我的方法是接受到新的信息就发一个本地广播

@Override
public void updaUI(List 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);
}
搞掂!

你可能感兴趣的:(需求)