微信消息提醒与消息数字提示之BadgeView

底边栏Tab切换Fragment,带角标显示效果 类似于手机版qq的底边栏Tab效果有很多种实现方法,比如TabActivity、自定义RadioGroup等。由于高版本下TabActivity已经被废弃,而且Activity比较重量级,所以一般不使用TabActivity。这里分享一种我写的自定义底部Tab的方法,顺带加上底部标签的角标显示效果。效果如下: 关于Demo需要交代几点: 1.这个Demo中并没有对尺寸做适配,在不同机型的手 阅读详情

微信消息提醒与消息数字提示之BadgeView

BadgeView 一个可以自由定制外观、支持拖拽消除的 MaterialDesign 风格 Android BadgeView。
GitHub地址:https://github.com/stefanjauker/BadgeView
代码:

MainActivity:

package com.example.jash.badgeview;

import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.DragEvent;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.jauker.widget.BadgeView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extendsAppCompatActivity {

    private ViewPager pager;
    private FragmentPagerAdapter mAdapter;
    private List<Fragment> mDatas;
    private TextView FirstText;
    private TextView SecText;
    private TextView ThridText;
    private LinearLayout layout;
    private BadgeView badgeView;

    @Override
   
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pager =(ViewPager) findViewById(R.id.viewPager);
        initView();
        initText();
        badgeView.setOnDragListener(new View.OnDragListener() {
            @Override
           
public boolean onDrag(View view, DragEvent dragEvent) {
                switch (dragEvent.getAction()) {
                }
                return false;
            }
        });
    }


    private void initText() {
        FirstText = (TextView) findViewById(R.id.first);
        SecText = (TextView) findViewById(R.id.second);
        ThridText = (TextView) findViewById(R.id.thirid);
        layout =(LinearLayout) findViewById(R.id.first_layout);
    }

    private void initView() {
        mDatas = new ArrayList<>();
        FirstFragment firstFragment = new FirstFragment();
        SecondFragment secondFragment = new SecondFragment();
        ThridFragment thridFragment = new ThridFragment();
        mDatas.add(firstFragment);
        mDatas.add(secondFragment);
        mDatas.add(thridFragment);
        mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()){
            @Override
           
public FragmentgetItem(int position) {
                return mDatas.get(position);
            }

            @Override
           
public int getCount() {
                return mDatas.size();
            }
        };
        pager.setAdapter(mAdapter);
        pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {


            @Override
           
public void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {

            }

            @Override
           
public void onPageSelected(int position) {
                resetTextView();
                switch (position) {
                    case 0:
                        if (badgeView!= null) {
                            layout.removeView(badgeView);
                        }
                        badgeView = new BadgeView(MainActivity.this);
                        badgeView.setBadgeCount(20);
                        badgeView.setBadgeGravity(Gravity.BOTTOM | Gravity.RIGHT);
                        layout.addView(badgeView);
                        FirstText.setTextColor(Color.GREEN);
                        break;
                    case 1:
                        layout.removeView(badgeView);
                        SecText.setTextColor(Color.GREEN);
                        break;
                    case 2:
                        layout.removeView(badgeView);
                        ThridText.setTextColor(Color.GREEN);
                        break;
                }
            }

            private void resetTextView() {
                FirstText.setTextColor(Color.BLACK);
                SecText.setTextColor(Color.BLACK);
                ThridText.setTextColor(Color.BLACK);
            }

            @Override
           
public void onPageScrollStateChanged(int state) {

            }
        });
    }
}

mainXML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.jash.badgeview.MainActivity">

    <include layout="@layout/top1" />

    <include layout="@layout/top2" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

Top1XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="#000"
    android:paddingLeft="12dp"
    android:paddingRight="12dp">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/actionbar_icon" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="12dp"
            android:text="微信"
            android:textColor="#d3d3d3"
            android:textSize="18dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/actionbar_search_icon" />

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/actionbar_add_icon" />

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/actionbar_more_icon" />
    </LinearLayout>
</RelativeLayout>

Top2XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:background="#eee"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="37dp"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/first_layout"
            android:orientation="horizontal"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center">

            <TextView
                android:id="@+id/first"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="聊天"
                android:textColor="#0f0" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center">

            <TextView
                android:id="@+id/second"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="发现"
                android:textColor="#000" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center">

            <TextView
                android:id="@+id/thirid"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="通讯录"
                android:textColor="#000" />
        </LinearLayout>

    </LinearLayout>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:background="@drawable/tabline" />

</LinearLayout>

三个Fragment的Activity:

package com.example.jash.badgeview;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


/**
 * A simple {@link Fragment} subclass.
 */
public class FirstFragment extends Fragment {


    public FirstFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_first, container, false);
    }

}

Fragment的XML

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.jash.badgeview.FirstFragment">

    <TextView
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="聊天" />

</FrameLayout>
 
 

BadgeView的主要方法:
·       setTargetView(View) 
设置控件
·       setBadgeCount(int) 
设置显示的数字
·       setBadgeGravity(Gravity) 
设置显示的位置
·       setBackgroundColor() 
设置背景色
·       setBackgroundResource() 
设置背景图片
·       setTypeface() 
设置显示字体
·       setShadowLayer() 
设置字体阴影
·       setVisibility
设置显藏状态

 

 


Android最新消息数目提醒控件BadgeView的使用 最近项目中需要用到这样的一个功能 就是消息数量的提示,本想着自己去在布局中自定义一个控件 把它写死  给它一个num(消息数量的属性 )可以进行设置消息数量,但是考虑后后期的样式  以及在不同View上显示  就果断放弃了  偶尔一次机会  看到一位大神在放微信app的时候用到了一个控件  是的  就是BadgeView  这是github上一个开源的控件 专门用来做消息数目提示的  这个是它的g 阅读详情

相关推荐

微信消息通知图标创建BadgeView

微信好友消息通知图标,显示消息条数那个带数字的红色图标的View实现源代码

Android实战简易教程<四十二>(github实用控件推荐BadgeView-图标左上角消息提示控件)

微信和QQ的左上角消息提示大家都十分有印象,有强迫症的童鞋总是忍不住的要点掉它,我们怎么将这样一个小功能引入到自己的项目中呢? github上有一款控件可以帮助我们实现这个功能,下面我们就看一下这个控件的使用吧。 下面我们看一下自带的实例,分别介绍了普通控件和ListView控件中如何使用消息提示控件,首先我们看一下普通控件的使用。 一、普通控件引入消息提示控件:

逸轩 851

Android 自定义气泡布局

Android自定义气泡布局 支持4个方向 1.设置三角形偏移位置 2.设置阴影颜色,大小 3.设置圆角 4.自定义背景颜色

ViewPage和Fragment上 实现BadgeView消息提醒(仿旧微信)

先上图: 这里只是使用了viewpage和 Fragment,没有用GitHob上viewpagerindicator,而是自己写了个指示器,使用了badgeView显示消息提醒。 首先,是上面的titleBar没什么好说的带过。。。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayou...

weixin_30247781的博客 128

Android仿微信未读消息数提示显示数字BadgeView大于99条显示99+

Android仿微信未读消息数提示显示数字BadgeView大于99条显示99+

ANSYS APDL 后处理:用*GET和ETABLE命令把节点/单元应力结果导出到TXT文件(附完整命令流)

本文详细介绍了在ANSYS APDL中使用*GET和ETABLE命令导出节点和单元应力数据到TXT文件的完整方案。通过节点解和单元解的核心逻辑分析,提供了从基础到进阶的数据导出方法,包括节点应力、单元应力数据的提取与格式化输出,以及高级技巧如选择性导出与数据过滤。帮助工程师高效完成有限元分析后处理工作。

weixin_26805597的博客 635

GitHub控件之BadgeView(数字提醒)

数字提醒大家肯定都见识过。QQ、微信等app中如果有消息或者提醒的时候,就会展现给用户一个红点或者带有数字的点。前段时间微信上流行把自己的头像换成带有数字提醒的头像,让那些有强迫症的人真是抓狂。     下面我们就看一下怎么在自己的app中实现这种效果。     开发者当然可以自己用相对布局来实现这样的效果。一个还好,但是多了呢!就会很繁琐。GitHub上有一个开源的第三方控件,叫做B

crazy_jack 6万+

【嵌入式Linux】EC20模块多运营商自适应PPP拨号实战:从IMSI识别到网络配置

本文详细介绍了在嵌入式Linux系统中,如何基于EC20 4G模块实现多运营商自适应PPP拨号。通过解析SIM卡的IMSI识别运营商,并动态配置对应的APN和拨号参数,结合AT指令交互与健壮的pppd脚本,解决了设备跨地域部署时的网络自动连接问题,提升了物联网设备的部署效率和稳定性。

fox11的博客 904

开源框架BadgeView的使用简介

在做聊天应用时,处理用户新消息时主流的聊天软件都会在消息的左上角或者右上角有一个小红点,并且里面有消息数量的提示,给人很好的交互体检,最近项目在移植聊天功能,感觉这个需求还是有必要加进项目中的,从github上发现一个比较好用的开源框架,简单易用,而且效果也挺好,所以推荐给大家使用。 BadgeView像其他控件一样,可以直接在xml中声明,也可以在java中new出来。 1.在xml中使用,...

谢栋的专栏 3461

YOLOv8中间特征层可视化

在通过观察这些特征,可以清楚地看到模型如何逐步将输入图像转化为有意义的表示。

weixin_45314480的博客 6894

产品经理如何运用AI提升工作效率

AI技术的应用为产品经理的工作流程带来了显著的效率提升。从需求收集到产品上线,AI可以在多个阶段提供智能化支持,帮助产品经理更好地理解用户需求、优化产品设计、提高开发和测试效率。在未来,随着AI技术的不断发展,产品经理将能够更加高效地管理产品生命周期,为用户提供更优质的产品体验。应用 | AI + 千行百业欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

不想宅的冷同学 1338

android 未读信息反复提醒,Android仿微信未读消息数提示显示数字BadgeView大于99条显示99+...

【实例简介】Android仿微信未读消息数提示显示数字BadgeView大于99条显示99+【实例截图】【核心代码】BadgeView└── BadgeView├── app│ ├── app.iml│ ├── build.gradle│ ├── proguard-rules.pro│ └── src│ ├── androidTest│ │ └── ja...

weixin_31009269的博客 969

自动驾驶开发者必看:nuscenes数据集23类物体标注全解析(附避坑指南)

本文深入解析nuscenes数据集的23类物体标注系统,为自动驾驶开发者提供全面的标注规范解读和实战避坑指南。涵盖多模态数据组织、类别细分规则、属性系统应用技巧以及标注质量验证方法,帮助开发者高效利用这一标杆数据集提升模型性能。

weixin_29041767的博客 258

扣扣 、微信中的数字提醒

第一次在项目中遇到了像扣扣、微信中的红色小圆点数字提醒的功能,就是有消息通知的时候就会给用户显示一个带有数字小红点,好不容易在网上找了这些,现在把这个技术点整理出来,希望方便以后的使用!同是也希望方便开发者。。。。。。。 首先这个红色的数字提醒小圆点使用Android中的第三方的一个jar包,这个jar包是BadgeView.jar,下面是我利用这个jar包实现的页面功能,可以看一下效果

android123it的博客 1380

Raspberry Pi 4B 蓝牙串口(SPP)配置与使用

Linux、Android、Windows 等操作系统带有在引导期间启动的蓝牙守护进程/蓝牙服务。 对于与监视器连接并使用 GUI(如 GTK 等)运行的设备,只需多次单击即可轻松启用并连接到附近的设备。 但是在无头设备的情况下,我们必须依赖于需要在命令行上运行的不同命令。 这篇博客我们将讨论如何在无头树莓派上通过蓝牙设备连接附近。

视觉与物联智能 2745

NX二次开发PK获取对象类型

PK_ENTITY_ask_class(),获取对象类型建议用这个函数,比较通用,包含所有对象类型,可以替代UF_MODL_ask_edge_type(),UF_MODL_ask_body_type(),UF_MODL_ask_face_type()等函数。

qq_39541524的博客 828

BadgeView-仿微信朋友圈数字提醒功能

转载请注明出处:http://blog.youkuaiyun.com/sky_pjf     数字提醒大家肯定都见识过。QQ、微信等app中如果有消息或者提醒的时候,就会展现给用户一个红点或者带有数字的点。前段时间微信上流行把自己的头像换成带有数字提醒的头像,让那些有强迫症的人真是抓狂。 下面我们就看一下怎么在自己的app中实现这种效果。     开发者当然可以自己用相对布局来实

ArcticOcean's blog 1844

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

GitHub控件之BadgeView(数字提醒) android 未读消息红点

转载出处:http://blog.youkuaiyun.com/crazy1235/article/details/42262369     数字提醒大家肯定都见识过。QQ、微信等app中如果有消息或者提醒的时候,就会展现给用户一个红点或者带有数字的点。前段时间微信上流行把自己的头像换成带有数字提醒的头像,让那些有强迫症的人真是抓狂。     下面我们就看一下怎么在自己的app中实现这

qq_29755359的博客 8989

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

BadgeView微信消息数字提醒

目前这个应用十分火,所以也琢磨了一下,可以自定义去实现,但是后来发现了个开源的东东,挺好用的,所以就拿来用了。使用起来特别简单只需要四步就能搞定了:**1、找到要显示数字的控件2、实例化BadgeView,并设置参数3、设置BadgeView的相关属性4、显示BadgeView**//1、找到控件, mLinearLayout = (LinearLayout) findViewById(R.id.l

hello_1s的博客 1487

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

GitHub控件之BadgeView(消息提醒的红点)

数字提醒大家肯定都见识过。QQ、微信等app中如果有消息或者提醒的时候,就会展现给用户一个红点或者带有数字的点。前段时间微信上流行把自己的头像换成带有数字提醒的头像,让那些有强迫症的人真是抓狂。 下面我们就看一下怎么在自己的app中实现这种效果。     开发者当然可以自己用相对布局来实现这样的效果。一个还好,但是多了呢!就会很繁琐。GitHub上有一个开源的第三方控件,叫

张小鹏的博客 2089

SwiftUI实战之仿微信TabView新消息提醒

本文价值与收获 看完本文后,您将能够作出下面的界面 Jietu20200305-125402.gif 看完本文您将掌握的技能 创建消息提醒 支持增加与清除提醒 解决方案 本文我们将学习如何在SwiftUI的标签栏项上显示徽章编号。徽章在引起用户注意方面起着不可或缺的作用,许多场景都需要使用到数字提示。例如,当新消息到达消息传递应用程序时,微信会在tab上提示我们有新...

iCloudEnd的博客 1177

手机红点消息提醒java开发_Android BadgeView红点更新信息提示示例代码

应用市场很多应用程序中都会看见一些数字红点提示的效果,如QQ、微信以及一些提示更新应用的APP,以达到更好的提示功能的应用,本文将介绍一开源控件的使用实现红点更新信息提示效果。一、BadgeView常用方法介绍:1.setBadgeCount(int):设置提醒数字2.setBadgeGravity(Gravity):设置位置布局3.setTargetView(View):设置提示控件对象4.se...

weixin_30094815的博客 452

Android 一个可以自由定制外观、支持拖拽消除的MaterialDesign风格Android BadgeView

支持自由定制外观、拖拽消除的MaterialDesign风格Android BadgeView,自定义消息右上角的数字提示或红点(类似微信或QQ的未读消息提示)

shenggaofei的博客 1423
上一篇: Android碎片Fragment详讲(1)
下一篇: RecyclerView的使用
JSON_ZJS
博客等级 码龄9年 30粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值