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

微信消息提醒与消息数字提示之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.ViewPagerandroid: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"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:gravity="center"android:orientation="horizontal"><ImageViewandroid:layout_width="30dp"android:layout_height="30dp"android:src="@drawable/actionbar_icon" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="12dp"android:text="微信"android:textColor="#d3d3d3"android:textSize="18dp" /></LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:gravity="center"android:orientation="horizontal"><ImageViewandroid:layout_width="30dp"android:layout_height="30dp"android:src="@drawable/actionbar_search_icon" /><ImageViewandroid:layout_width="30dp"android:layout_height="30dp"android:src="@drawable/actionbar_add_icon" /><ImageViewandroid: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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="37dp"android:orientation="horizontal"><LinearLayoutandroid:id="@+id/first_layout"android:orientation="horizontal"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"><TextViewandroid:id="@+id/first"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="聊天"android:textColor="#0f0" /></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"><TextViewandroid:id="@+id/second"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="发现"android:textColor="#000" /></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"><TextViewandroid:id="@+id/thirid"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="通讯录"android:textColor="#000" /></LinearLayout></LinearLayout><ImageViewandroid: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}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn 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"><TextViewandroid: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
设置显藏状态

 

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西安理工大学计算机专业毕业,西安理工大学什么专业好找工作?毕业工资大概多少?答案在这里...

文/圆梦志愿 马老师西安理工大学是中央与地方共建的省属高水平大学&#xff0c;在本省的知名度较高&#xff0c;是一所实力还不错的理工类高校。那么&#xff0c;西安理工大学就业最好的专业是哪些&#xff1f;学校毕业生的薪资水平如何呢&#xff1f;一起来了解一下吧。一、西…

这些排序算法的使用时机,你都知道吗?

转载自 这些排序算法的使用时机&#xff0c;你都知道吗&#xff1f; 概述 排序有内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要访问外存…

第二章用表组织数据

第二章用表组织数据 一、数据库的完整性大多数是由设计的时候引起的。 二、可靠性准确性数据完整性 三、数据库的四种完整性约束&#xff1a; 1.实体完整性约束 2.域完整性约束 3.引用完整性约束 4.自定义完整性约束 四、数据库数据的数据类型&#xff1a; 1.char:字符类型&…

2020蓝桥杯省赛---java---A---7(回文日期)

题目描述 思路分析 暴力判断 代码实现 package lanqiao;import java.util.Scanner;public class Main {public static String str"";public static boolean isLeap(int year){return (year%40&&year%100!0)||year%4000;}public static boolean check(int …

小学计算机学情分析报告,小学信息技术_重点文字图说话教学设计学情分析教材分析课后反思...

教学设计一、导入师&#xff1a;为了弘扬传统文化&#xff0c;丰富校园生活&#xff0c;我们学校举办了一场“穿越千年&#xff0c;诗文校园”阅读推广活动。活动要求选取古诗、优美散文、自写文章进行艺术加工&#xff0c;最终遴选出十篇文章入驻学校宣传栏&#xff0c;进行推…

RecyclerView的使用

RecyclerView 1. 为什么叫RecyclerView&#xff1f; 1. 不关心Item是否显示在正确的位置&#xff0c;如何显示。 2. 不关心Item之间如何分隔 3. 不关注Item的增加与删除的动画效果 4. 仅仅关注如何回收与复用View 2. 需要引入的类 LayoutManage确定显示…

Spring Cloud 面试题

转载自 Spring Cloud 面试题 问题一&#xff1a; 什么是Spring Cloud&#xff1f; Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序&#xff0c;提供与外部系统的集成。Spring cloud Task&#xff0c;一个生命周期短暂的微服务框架&#xff0c;用于快…

第三章用sql语句操作数据

一、sql是什么&#xff1a; 1.结构化查询语言 2.在什么情况下使用&#xff1a; &#xff08;1&#xff09;对sqlserver执行所有操作的时候 &#xff08;2&#xff09;对程序进行增删改查的时候 3.sql组成&#xff1a; &#xff08;1&#xff09;DML数据操作语言&#xff0c;ins…

从真实项目中抠出来的设计模式——第二篇:过滤器模式

一&#xff1a;实际场景介绍 我们在给用户做订单催付通知的时候&#xff0c;会有这样的一种场景&#xff0c;用户在系统后台设置一组可以催付的规则&#xff0c;比如说订单金额大于xx元&#xff0c;非黑名单用户&#xff0c;来自 哪个地区&#xff0c;已购买过某个商品&#x…

2015蓝桥杯省赛---java---A---8(移动距离)

题目描述 思路分析 行号的差的绝对值列号的差的绝对值 代码实现 package lanqiao;import java.util.Scanner;public class Main {public static void main(String[] args) {int w0,m0,n0;Scanner scanner new Scanner(System.in);wscanner.nextInt();mscanner.nextInt();…

RecyclerView多布局的简单使用

RecyclerView多布局的简单 RecyclerView 是在Android5.0之后推出的&#xff0c;是一个比ListView更加灵活更加高效的适配器类型控件。但是RecyclerView不同于其他类型的适配器&#xff0c;它还需要一个LayoutManager进行页面控制展示。RecyclerView提供了三种布局管理器&#x…

Spring Boot 面试题

转载自 Spring Boot 面试题 问题一 什么是Spring Boot&#xff1f; 多年来&#xff0c;随着新功能的增加&#xff0c;spring变得越来越复杂。只需访问https://spring.io/projects页面&#xff0c;我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。如果必…

可以代表学计算机的标志,桌面上的图标可以用来表示

语音内容&#xff1a;大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。以计算机为例&#xff0c;桌面上的图标可以用来表示文件、文件夹或快捷方式。“计算机”一般是指“电子计算机”&#xff0c;电子计算机(electronic computer)通…

第四章数据查询基础

第四章数据查询基础 一、查询流程&#xff1a; 1.客户端–》请求一条查询语句–》数据库–》返回查询结果 二、导出数据库脚本&#xff1a; 1.选中数据库–》右击–》任务–》生成脚本–》下一步–》选择存放路径–》高级–》选择架构和数据–》下一步–》确定。 三、查询的语法…

Visual Studio 2017迎来F# 4.1

三月初发布的Visual Studio 2017&#xff0c;包含了F# 4.1和Visual F#工具的更新。F# 4.1带来了语言层面提升以及与C# 7的互操作能力&#xff0c;而那些Visual F#工具是支持Roslyn workspaces的首个版本。 正如上文提到的&#xff0c;F# 4.1带来了语言层面提升以及与C# 7的互操…

Spring 事务原理和使用

转载自 Spring 事务原理和使用 1.SpringTransactional的配置 步骤一、在Spring配置文件中引入命名空间 <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:tx"http://www…

第五章模糊查询和聚合函数

第五章模糊查询和聚合函数 一、模糊查询&#xff1a; 1.关键词&#xff1a;like 2._代表&#xff1a;一个字符&#xff0c;eg:like ‘c’&#xff0c;查询的结果是三个字&#xff0c;中间必须是c 3.%代表&#xff1a;多个字符&#xff0c;eg:like ‘%张’,查询的结果是张结尾的…

Android模拟器之神奇Genymotion的安装

Android模拟器之神奇Genymotion的安装 经常有人问我&#xff0c;Android开发不适用真机的情况下&#xff0c;用什么模拟器比较好用&#xff01;我这里推荐两款&#xff0c;一个是前两年开发时使用的“夜神模拟器”&#xff0c;这个在这就不多说了&#xff01;直接下载安装就可以…

微软在.NET官网上线.NET 架构指南频道

微软在Visual Studio 2017 正式发布的时候也上线了一个参考应用https://github.com/dotnet/eShopOnContainers , 最近微软给这个参考应用写了完善的文档&#xff0c;放在.NET官网的.NET架构频道https://www.microsoft.com/net/architecture。 整个.NET 架构按照4个部分展开&am…