android角标,android角标数字应用适配-成都快上网建站

android角标,android角标数字应用适配

android角标怎么让它一直显示

TextViewellipsize属性,作用文字,该控件该何显示,解释:

成都创新互联是一家专业提供泊头企业网站建设,专注与成都网站建设、成都网站制作、H5技术、小程序制作等业务。10年已为泊头众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

android:ellipsize=start—–省略号显示

android:ellipsize=end——省略号显示结尾

android:ellipsize=middle—-省略号显示间

android:ellipsize=marquee–跑马灯式显示(画横向移)

文字左右滚三属性:

android:singleLine="true"

android:ellipsize="marquee"

android:marqueeRepeatLimit="marquee_forever"

android设置消息角标

xiaomi:

当应用向通知栏发送了一条通知 (除了进度条样式和常驻通知外),应用图标的右上角就会显示「1」。值得一提,角标的数字代表应用的通知数,即应用发送了「x」条通知,角标就会显示为「x」。

try {

Field field = notification.getClass().getDeclaredField(“extraNotification”);

Object extraNotification = field.get(notification);

Method method = extraNotification.getClass().getDeclaredMethod(“setMessageCount”, int.class);

method.invoke(extraNotification, mCount);

} catch (Exception e) {

e.printStackTrace();

}

huawei:

BadgeNotification add_num 否 integer 应用角标累加数字非应用角标实际显示数字 例如,某应用当前有N条未读消息,若add_num设置为3,则每发一次消息,应用角标显示的数字累加3,为N+3

/** set badge number*/

public void setBadgeNum(int num) {

try {

    Bundle bunlde = new Bundle();

    bunlde.putString("package", "com.test.badge"); // com.test.badge is your package name

    bunlde.putString("class", "com.test. badge.MainActivity"); // com.test. badge.MainActivity is your apk main activity

    bunlde.putInt("badgenumber", num);

    this.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bunlde);

} catch (Exception e) {

    mIsSupportedBade = false;

}

}

oppo:

老版本方法

private static boolean setOPPOBadge(int count, Context context) {

    try {

        Bundle extras = new Bundle();

        extras.putInt("app_badge_count", count);

        context.getContentResolver().call(Uri.parse("content://com.android.badge/badge"),

                "setAppBadgeCount", String.valueOf(count), extras);

        return true;

    } catch (Exception e) {

        e.printStackTrace();

        return false;

    }

}

private static boolean setOPPOBadge2(int count, Context context) {

    try {

        Intent intent = new Intent("com.oppo.unsettledevent");

        intent.putExtra("packageName", context.getPackageName());

        intent.putExtra("number", count);

        intent.putExtra("upgradeNumber", count);

        PackageManager packageManager = context.getPackageManager();

        ListResolveInfo receivers = packageManager.queryBroadcastReceivers(intent, 0);

        if (receivers != null receivers.size() 0) {

            context.sendBroadcast(intent);

        } else {

            Bundle extras = new Bundle();

            extras.putInt("app_badge_count", count);

            context.getContentResolver().call(Uri.parse("content://com.android.badge/badge"),

                    "setAppBadgeCount", null, extras);

        }

        return true;

    } catch (Exception e) {

        e.printStackTrace();

        return false;

    }

}

新版本:

新款的OPPO角标功能仅支持内置应用、微信和QQ显示角标,若要使用角标功能,必须提交申请,审核通过了才能开放,官方给的具体审核标准如下:

申请角标接入规则(应用必须适配OPPO手机,保证角标功能测试通过)

a) 系统应用;

b) 国内外各区域用户量排名Top5的三方即时通讯类应用,且只允许显示即时通信消息类通知(如QQ、微信、facebook、line);

c) OPPO公司内部费商业化及运营性质的办公类型即时通信应用(如Teamtalk);

d) 国内外邮件类应用(各区域各属于用户量第一梯队的应用)。

vivo:

桌面图标角标”默认关闭,需要用户手动开启。

开启路径:“设置”-“通知与状态栏”-“应用通知管理”-应用名称-“桌面图标角标”。

未成功接入“桌面图标角标”的应用,无“桌面图标角标”选项。

备注:视OS版本差异,“桌面图标角标”名称可能为“应用图标标记”或“桌面角标”。

a. 添加权限:

uses-permission android:name="com.vivo.notification.permission.BADGE_ICON" /

b. 应用在需要显示桌面角标的场景,通过广播将信息发送给vivoLauncher:

广播参数:

action:launcher.action.CHANGE_APPLICATION_NOTIFICATION_NUM

packageName:应用包名

className:主类名

notificationNum:未读消息数目

简单示例:

Intent intent = new Intent();

int missedCalls = 10;

intent.setAction("launcher.action.CHANGE_APPLICATION_NOTIFICATION_NUM");

intent.putExtra("packageName", "com.android.xxxx");

intent.putExtra("className", "com.android.xxxx.Mainxxxx");

intent.putExtra("notificationNum", missedCalls);

intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);

sendBroadcast(intent);

注意:

在8.0上,还需要给Intent加上下面的flag

Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND

sansung:

private static boolean setSamsungBadge(int count, Context context) {

    try {

        String launcherClassName = getLauncherClassName(context);

        if (TextUtils.isEmpty(launcherClassName)) {

            return false;

        }

        Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE");

        intent.putExtra("badge_count", count);

        intent.putExtra("badge_count_package_name", context.getPackageName());

        intent.putExtra("badge_count_class_name", launcherClassName);

        context.sendBroadcast(intent);

        return true;

    } catch (Exception e) {

        e.printStackTrace();

        return false;

    }

}

android 角标红点怎么设置

角标实现

要实现这个角标:

1、放置一个隐藏的图片在app中,在需要它显示的时候,显示该图片,并以该图片为背景,显示新增消息数;

2、自定义一个控件,用于显示该角标信息。例如,角标相对于控件的位置、底色、数字等;

对比或者使用后,你会发现,自定义一个控件,无疑更符合我们的使用习惯。无需特定的图片,减少了app的大小等,更重要的是,这样方便我们的使用。

在角标实现中,有个开源代码BadgeView写的很符合我们的心理预期。实现了我们常用的所有功能。

BadgeView

这是一个继承TextView控件,自定义而成的一个简单控件。我们通过它,可轻易实现对角标位置、角标底色、角标内容等控制。

package com.readystatesoftware.viewbadger;

import android.content.Context;

import android.content.res.Resources;

import android.graphics.Color;

import android.graphics.Typeface;

import android.graphics.drawable.ShapeDrawable;

import android.graphics.drawable.shapes.RoundRectShape;

import android.util.AttributeSet;

import android.util.TypedValue;

import android.view.Gravity;

import android.view.View;

import android.view.ViewGroup;

import android.view.ViewGroup.LayoutParams;

import android.view.ViewParent;

import android.view.animation.AccelerateInterpolator;

import android.view.animation.AlphaAnimation;

import android.view.animation.Animation;

import android.view.animation.DecelerateInterpolator;

import android.widget.FrameLayout;

import android.widget.TabWidget;

import android.widget.TextView;

/**

* A simple text label view that can be applied as a "badge" to any given {@link android.view.View}. 

* This class is intended to be instantiated at runtime rather than included in XML layouts.

* @author Jeff Gilfelt

*/

public class BadgeView extends TextView {

public static final int POSITION_TOP_LEFT = 1;

public static final int POSITION_TOP_RIGHT = 2;

public static final int POSITION_BOTTOM_LEFT = 3;

public static final int POSITION_BOTTOM_RIGHT = 4;

public static final int POSITION_CENTER = 5;

private static final int DEFAULT_MARGIN_DIP = 5;

private static final int DEFAULT_LR_PADDING_DIP = 5;

private static final int DEFAULT_CORNER_RADIUS_DIP = 8;

private static final int DEFAULT_POSITION = POSITION_TOP_RIGHT;

private static final int DEFAULT_BADGE_COLOR = Color.parseColor("#CCFF0000"); //Color.RED;

private static final int DEFAULT_TEXT_COLOR = Color.WHITE;

private static Animation fadeIn;

private static Animation fadeOut;

private Context context;

private View target;

private int badgePosition;

private int badgeMarginH;

private int badgeMarginV;

private int badgeColor;

private boolean isShown;

private ShapeDrawable badgeBg;

private int targetTabIndex;

public BadgeView(Context context) {

this(context, (AttributeSet) null, android.R.attr.textViewStyle);

}

public BadgeView(Context context, AttributeSet attrs) {

 this(context, attrs, android.R.attr.textViewStyle);

}

/**

* Constructor -

* create a new BadgeView instance attached to a target {@link android.view.View}.

*

* @param context context for this view.

* @param target the View to attach the badge to.

*/

public BadgeView(Context context, View target) {

 this(context, null, android.R.attr.textViewStyle, target, 0);

}

/**

* Constructor -

* create a new BadgeView instance attached to a target {@link android.widget.TabWidget}

* tab at a given index.

*

* @param context context for this view.

* @param target the TabWidget to attach the badge to.

* @param index the position of the tab within the target.

*/

public BadgeView(Context context, TabWidget target, int index) {

this(context, null, android.R.attr.textViewStyle, target, index);

}

public BadgeView(Context context, AttributeSet attrs, int defStyle) {

this(context, attrs, defStyle, null, 0);

}

public BadgeView(Context context, AttributeSet attrs, int defStyle, View target, int tabIndex) {

super(context, attrs, defStyle);

init(context, target, tabIndex);

}

private void init(Context context, View target, int tabIndex) {

this.context = context;

this.target = target;

this.targetTabIndex = tabIndex;

// apply defaults

badgePosition = DEFAULT_POSITION;

badgeMarginH = dipToPixels(DEFAULT_MARGIN_DIP);

badgeMarginV = badgeMarginH;

badgeColor = DEFAULT_BADGE_COLOR;

setTypeface(Typeface.DEFAULT_BOLD);

int paddingPixels = dipToPixels(DEFAULT_LR_PADDING_DIP);

setPadding(paddingPixels, 0, paddingPixels, 0);

setTextColor(DEFAULT_TEXT_COLOR);

fadeIn = new AlphaAnimation(0, 1);

fadeIn.setInterpolator(new DecelerateInterpolator());

fadeIn.setDuration(200);

fadeOut = new AlphaAnimation(1, 0);

fadeOut.setInterpolator(new AccelerateInterpolator());

fadeOut.setDuration(200);

isShown = false;

if (this.target != null) {

applyTo(this.target);

} else {

show();

}

}

private void applyTo(View target) {

LayoutParams lp = target.getLayoutParams();

ViewParent parent = target.getParent();

FrameLayout container = new FrameLayout(context);

if (target instanceof TabWidget) {

// set target to the relevant tab child container

target = ((TabWidget) target).getChildTabViewAt(targetTabIndex);

this.target = target;

((ViewGroup) target).addView(container, 

new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

this.setVisibility(View.GONE);

container.addView(this);

} else {

// TODO verify that parent is indeed a ViewGroup

ViewGroup group = (ViewGroup) parent; 

int index = group.indexOfChild(target);

group.removeView(target);

group.addView(container, index, lp);

container.addView(target);

this.setVisibility(View.GONE);

container.addView(this);

group.invalidate();

}

}

/**

* Make the badge visible in the UI.

*/

public void show() {

show(false, null);

}

/**

* Make the badge visible in the UI.

*

* @param animate flag to apply the default fade-in animation.

*/

public void show(boolean animate) {

show(animate, fadeIn);

}

/**

* Make the badge visible in the UI.

*

* @param anim Animation to apply to the view when made visible.

*/

public void show(Animation anim) {

show(true, anim);

}

/**

* Make the badge non-visible in the UI.

*/

public void hide() {

hide(false, null);

}

/**

* Make the badge non-visible in the UI.

*

* @param animate flag to apply the default fade-out animation.

*/

public void hide(boolean animate) {

hide(animate, fadeOut);

}

/**

* Make the badge non-visible in the UI.

*

* @param anim Animation to apply to the view when made non-visible.

*/

public void hide(Animation anim) {

hide(true, anim);

}

/**

* Toggle the badge visibility in the UI.

*/

public void toggle() {

toggle(false, null, null);

}

/**

* Toggle the badge visibility in the UI.

* @param animate flag to apply the default fade-in/out animation.

*/

public void toggle(boolean animate) {

toggle(animate, fadeIn, fadeOut);

}

/**

* Toggle the badge visibility in the UI.

*

* @param animIn Animation to apply to the view when made visible.

* @param animOut Animation to apply to the view when made non-visible.

*/

public void toggle(Animation animIn, Animation animOut) {

toggle(true, animIn, animOut);

}

private void show(boolean animate, Animation anim) {

if (getBackground() == null) {

if (badgeBg == null) {

badgeBg = getDefaultBackground();

}

setBackgroundDrawable(badgeBg);

}

applyLayoutParams();

if (animate) {

this.startAnimation(anim);

}

this.setVisibility(View.VISIBLE);

isShown = true;

}

private void hide(boolean animate, Animation anim) {

this.setVisibility(View.GONE);

if (animate) {

this.startAnimation(anim);

}

isShown = false;

}

private void toggle(boolean animate, Animation animIn, Animation animOut) {

if (isShown) {

hide(animate  (animOut != null), animOut);

} else {

show(animate  (animIn != null), animIn);

}

}

/**

* Increment the numeric badge label. If the current badge label cannot be converted to

* an integer value, its label will be set to "0".

* @param offset the increment offset.

*/

public int increment(int offset) {

CharSequence txt = getText();

int i;

if (txt != null) {

try {

i = Integer.parseInt(txt.toString());

} catch (NumberFormatException e) {

i = 0;

}

} else {

i = 0;

}

i = i + offset;

setText(String.valueOf(i));

return i;

}

/**

* Decrement the numeric badge label. If the current badge label cannot be converted to

* an integer value, its label will be set to "0".

* @param offset the decrement offset.

*/

public int decrement(int offset) {

return increment(-offset);

}

private ShapeDrawable getDefaultBackground() {

int r = dipToPixels(DEFAULT_CORNER_RADIUS_DIP);

float[] outerR = new float[] {r, r, r, r, r, r, r, r};

RoundRectShape rr = new RoundRectShape(outerR, null, null);

ShapeDrawable drawable = new ShapeDrawable(rr);

drawable.getPaint().setColor(badgeColor);

return drawable;

}

private void applyLayoutParams() {

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

switch (badgePosition) {

case POSITION_TOP_LEFT:

lp.gravity = Gravity.LEFT | Gravity.TOP;

lp.setMargins(badgeMarginH, badgeMarginV, 0, 0);

break;

case POSITION_TOP_RIGHT:

lp.gravity = Gravity.RIGHT | Gravity.TOP;

lp.setMargins(0, badgeMarginV, badgeMarginH, 0);

break;

case POSITION_BOTTOM_LEFT:

lp.gravity = Gravity.LEFT | Gravity.BOTTOM;

lp.setMargins(badgeMarginH, 0, 0, badgeMarginV);

break;

case POSITION_BOTTOM_RIGHT:

lp.gravity = Gravity.RIGHT | Gravity.BOTTOM;

lp.setMargins(0, 0, badgeMarginH, badgeMarginV);

break;

case POSITION_CENTER:

lp.gravity = Gravity.CENTER;

lp.setMargins(0, 0, 0, 0);

break;

default:

break;

}

setLayoutParams(lp);

}

/**

* Returns the target View this badge has been attached to.

*/

public View getTarget() {

return target;

}

/**

* Is this badge currently visible in the UI?

*/

@Override

public boolean isShown() {

return isShown;

}

/**

* Returns the positioning of this badge.

* one of POSITION_TOP_LEFT, POSITION_TOP_RIGHT, POSITION_BOTTOM_LEFT, POSITION_BOTTOM_RIGHT, POSTION_CENTER.

*/

public int getBadgePosition() {

return badgePosition;

}

/**

* Set the positioning of this badge.

* @param layoutPosition one of POSITION_TOP_LEFT, POSITION_TOP_RIGHT, POSITION_BOTTOM_LEFT, POSITION_BOTTOM_RIGHT, POSTION_CENTER.

*/

public void setBadgePosition(int layoutPosition) {

this.badgePosition = layoutPosition;

}

/**

* Returns the horizontal margin from the target View that is applied to this badge.

*/

public int getHorizontalBadgeMargin() {

return badgeMarginH;

}

/**

* Returns the vertical margin from the target View that is applied to this badge.

*/

public int getVerticalBadgeMargin() {

return badgeMarginV;

}

/**

* Set the horizontal/vertical margin from the target View that is applied to this badge.

* @param badgeMargin the margin in pixels.

*/

public void setBadgeMargin(int badgeMargin) {

this.badgeMarginH = badgeMargin;

this.badgeMarginV = badgeMargin;

}

/**

* Set the horizontal/vertical margin from the target View that is applied to this badge.

* @param horizontal margin in pixels.

* @param vertical margin in pixels.

*/

public void setBadgeMargin(int horizontal, int vertical) {

this.badgeMarginH = horizontal;

this.badgeMarginV = vertical;

}

/**

* Returns the color value of the badge background.

*/

public int getBadgeBackgroundColor() {

return badgeColor;

}

/**

* Set the color value of the badge background.

* @param badgeColor the badge background color.

*/

public void setBadgeBackgroundColor(int badgeColor) {

this.badgeColor = badgeColor;

badgeBg = getDefaultBackground();

}

private int dipToPixels(int dip) {

Resources r = getResources();

float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, r.getDisplayMetrics());

return (int) px;

}

}

Android桌面角标提醒功能

您好!

QQ是没有显示消息数字提醒的哦,这个是不能设置的。

如果有任何问题可以随时来咨询我们的。非常感谢您对我们vivo的支持,祝您生活愉快!

如何关闭android 应用角标

设置

应用管理

已安装

找到带有角标的应用

找到通知管理

找到在桌面图标上显示角标,关闭即可


网站标题:android角标,android角标数字应用适配
转载源于:http://kswjz.com/article/dscpooe.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流