Android特殊字体引入,以及描边和投影

第 48 章:SystemUI 第三方 App 实现可以添加快捷磁贴。SystemUI 通过CustomTile管理。管理第三方的绑定生命周期,维护接口。做绑定节流,避免资源耗尽。时钟自定义:通过可替换时钟样式快捷入口:锁屏角落快捷图标(相机、钱包)Complication 小组件:AOD 上天气、日期、电池信息独立锁屏壁纸Communal(可一瞥 Hub):锁屏上小组件面板实操练习,演示如何给 SystemUI 新增内置快捷设置 Tile。我们实现一个 “Caffeine” Tile,保持屏幕常亮。 阅读详情

Android特殊字体引入,以及描边和投影

标签(空格分隔): Android 字体 描边


这篇文章并非纯原创,因为项目原因,忘记记载出处,还望原作者海涵。

主要功能就是实现了特殊字体的描边

字体文件放在Asset文件夹中
这里写图片描述

public class GoldTextView extends TextView {

    TextPaint m_TextPaint;
    int mInnerColor;
    int mOuterColor;

    public GoldTextView(Context context,int outerColor,int innnerColor) {
        super(context);
        m_TextPaint = this.getPaint();
        this.mInnerColor = innnerColor;
        this.mOuterColor = outerColor;
    }

    public GoldTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        m_TextPaint = this.getPaint();
        //获取自定义的XML属性名称
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.StrokeTextView);
        //获取对应的属性值
        this.mInnerColor = a.getColor(R.styleable.StrokeTextView_innnerColor,0xffffff);
        this.mOuterColor = a.getColor(R.styleable.StrokeTextView_outerColor,0xffffff);

    }

    public GoldTextView(Context context, AttributeSet attrs, int defStyle,int outerColor,int innnerColor) {
        super(context, attrs, defStyle);
        m_TextPaint = this.getPaint();
        this.mInnerColor = innnerColor;
        this.mOuterColor = outerColor;
        // TODO Auto-generated constructor stub
    }

    private boolean m_bDrawSideLine = true; // 默认采用描边

    /**
     *
     */
    @Override
    protected void onDraw(Canvas canvas) {
        if (m_bDrawSideLine) {
            // 描外层
            // super.setTextColor(Color.BLUE); // 不能直接这么设,如此会导致递归
            setTextColorUseReflection(mOuterColor);
            m_TextPaint.setStrokeWidth(8); // 描边宽度
            m_TextPaint.setStyle(Paint.Style.FILL_AND_STROKE); // 描边种类
            m_TextPaint.setFakeBoldText(true); // 外层text采用粗体
            m_TextPaint.setShadowLayer(1, 0, 0, 0); // 字体的阴影效果,可以忽略
            super.onDraw(canvas);

            // 描内层,恢复原先的画笔

            // super.setTextColor(Color.BLUE); // 不能直接这么设,如此会导致递归
            setTextColorUseReflection(mInnerColor);
            m_TextPaint.setStrokeWidth(0);
            m_TextPaint.setStyle(Paint.Style.FILL_AND_STROKE);
            m_TextPaint.setFakeBoldText(false);
            m_TextPaint.setShadowLayer(0, 0, 0, 0);

        }
        super.onDraw(canvas);
    }

    /**
     * 使用反射的方法进行字体颜色的设置
     * @param color
     */
    private void setTextColorUseReflection(int color) {
        Field textColorField;
        try {
            textColorField = TextView.class.getDeclaredField("mCurTextColor");
            textColorField.setAccessible(true);
            textColorField.set(this, color);
            textColorField.setAccessible(false);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        m_TextPaint.setColor(color);
    }

}

xml文件

<GoldTextView
        android:layout_marginTop="@dimen/y125"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="仅仅是个测试"
        android:shadowColor="#9d4e0c"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="10"
        android:textSize="19sp"
        android:layout_gravity="center_horizontal|top"
        android:textColor="#ffe226"
        app:outerColor="#9d4e0c"
        app:innnerColor="#ffe226"
        android:paddingTop="@dimen/x520"
        android:id="@+id/gold_info_tv"/>
【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库02 每个分支下又细分了四个关键方向,并按照“研究对象/焦点、基本问题、核心理论/概念、研究方法、应用/目标、前沿/发展”的框架进行阐述,严格遵循了六级编码体系。在最终整合时,应建立唯一的学科分类编码表(例如,用两位数字或“ART”、“MED”、“ECO”等字母前缀),并确保所有下级编码(尺度、层次、类别、子类、具体项)的逻辑一致性。此回答中的编码为示例,实际系统需据此调整。控制过程(前馈、同期、反馈)、全面质量管理(TQM)、平衡计分卡(BSC)定量(调查、实验)、定性(访谈、民族志)、混合方法、大数据。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库01

此方案可满足千万级并发需求,同时支持时序数据、知识图谱和文档数据库的高效处理,通过云原生架构实现极致弹性。​:每月约$15-20万(100节点K8s集群+数据库集群+CDN流量)1. 宠物上架/下架流程。

weixin_49199313的博客 1476

android开发步步为营之104:文字加阴影效果和描边效果的实现

有时候为了文字的美观,我们需要给文字加阴影,或者加边框,这个效果怎么实现呢?最近项目里也用到了,这里总结一下。          一、文字加阴影效果          1、通过xml实现 <TextView android:id="@+id/txt_shadom" android:layout_width="wrap_content" an

飞在江湖的专栏 6210

android文字描边功能的实现

本文介绍的是android文字描边功能的实现,文字描边的功能在开发中还是听实用的,有需要的可以参考学习

TextView描边、渐变、阴影效果

前段时间的需求,涉及到大量带各种效果的字体的使用,比如描边、渐变、阴影等。一般情况下,我们在Android开发中用到花里胡哨字体的情况不多。但是,拿到了这样的需求,我们还是要实现这样一款支持多种效果的字体。其实,网上也有一些实现各种效果字体的方法。这篇博客,将把描边,渐变,阴影等结合到一起,实现一款自定义的文本框。 一.撸代码前的思考 在开始动手之前,我们先明确...

zhaojun的博客 2万+

电力电子技术文章:ACOT控制模式在Buck变换器中的频率稳定性分析

本文深入分析了ACOT控制模式在Buck变换器中实现频率稳定性的原理与优势。通过对比传统COT模式,阐述了ACOT如何通过自适应调整导通时间,将开关频率锁定在设定值,从而有效应对输入电压与负载变化。文章还探讨了其在轻载DCM模式下的高效与平滑切换特性,并提供了关键的设计考量与实战指南。

cc789的博客 1149

adams案例分析_案例1(麦弗逊悬架子系统创建)

本文字数3292字83图,建议阅读时间26分钟首先看下案例1的麦弗逊悬架数模结构就不细讲了,从数模上主要是获取硬点坐标(铰接点、安装点、参考点)及大部件结构(副车架、摆臂、转向节等实际运动过程中会产生变形的部件,在ADAMS Car中我们就可以用柔性体来搭建)再来回顾下上一篇讲到的模型元素1、Hardpoint——硬点(只有位置没有方向)2、Parameter Variable——参数...

weixin_39609407的博客 6475

Android TextView加上阴影效果

废话不多说 字体阴影需要四个相关参数: 1. android:shadowColor:阴影的颜色 2. android:shadowDx:水平方向上的偏移量 3. android:shadowDy:垂直方向上的偏移量 4. android:shadowRadius:阴影的范围

hewence1的专栏 8万+

声音编程(Voice Coding) Talon(一) 基本介绍与安装使用

语音编程平台简介 语音编程工具有哪些:Talon是一款声音编程平台,它追求的意义在于完全取代键盘和鼠标。。当前,全球有两个领先的语音编程平台(Programming-By-Speech Platforms)。一是Serenade,它的作用有点像数字助手,可以让你描述正在编程的命令,而不要求你必须逐字逐句地口述每条指令。另一个就是Talon,它提供了对每一行代码更精细的控制,这也意味着你需要对每一个被编入机器的任务有更细致的把握。具体的差别可以参考文章末尾的Serenade 和 Talon编程的例子。 除了这

yinglang19941010的专栏 4139

android中给TextView或者Button的文字添加阴影效果

1在代码中添加文字阴影 TextView 有一个方法 /**      * Gives the text a shadow of the specified radius and color, the specified      * distance from its normal position.      *      * @attr ref android.R.styleab

hahahacff的专栏 1万+

在昇腾910B服务上部署搭建适配PDF解析工具Mineru2.5开源项目

本文介绍了在昇腾910B服务器上部署开源PDF解析工具Mineru2.5的过程。首先从昇腾社区下载mindie镜像并运行容器,安装系统依赖。针对部署过程中遇到的多个报错问题(如torchvision与torch版本不匹配、昇腾软件栈与NumPy 2.0不兼容等),提供了具体解决方案和兼容版本。通过设置环境变量、安装指定版本的Python依赖包,成功部署Mineru项目并下载模型。最后运行测试,验证了在NPU设备上运行pipeline的可行性。整个过程详细记录了版本适配和错误处理方法,为类似部署场景提供了参考

一起加油吧 2163

BMS短路测试避坑指南:从炸管到稳定,我是如何搞定MOS管和TVS的

本文详细记录了BMS短路测试中MOS管和TVS的优化过程,从驱动电阻调整、PCB寄生参数控制到TVS选配策略,提供了一套实用的调试方法论。通过实战案例解析,帮助工程师避免常见陷阱,实现稳定可靠的短路测试性能。

weixin_30652897的博客 140

android 字体描边实现,Android自定义View实现简单文字描边功能

本文实例为大家分享了Android实现简单文字描边功能的具体代码,供大家参考,具体内容如下效果图:实现代码:package com.example.zhangyu.myview.widget;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;impo...

weixin_32019949的博客 479

使用moveit中的报错及解决

1.fatal error: moveit/move_group_interface/move_group.h: 没有那个文件或目录。// #include <moveit/move_group_interface/move_group.h> 改为。问题1 moveit/move_group_interface/move_group.h: 没有那个文件或目录。在运行c++程序时报错。

qq_60566155的博客 2285

CSS字体与文本样式实战指南:从基础排版到高级特效

字体与文本样式是前端开发中直接影响用户体验的核心技术。其原理在于通过CSS属性控制字体的选择、大小、粗细、间距及装饰效果,从而构建清晰、美观的文本视觉层次。掌握这些技术对于提升网站的可读性、专业感和品牌一致性具有重要价值,广泛应用于博客、新闻、电商、后台管理系统等各类内容型网站。本文聚焦于font-family降级策略、响应式单位、line-height设置等关键细节,并深入探讨了text-shadow、background-clip: text等高级特效的实现与性能考量,旨在提供一套从基础到进阶的完整解决

weixin_30883311的博客 552

YOLOv11改进 | 注意力篇 | YOLOv11引入24年动态卷积块注意力(Dynamic-CBAM),并构建C2PSA_DynamicCBAM

1.Dynamic-CBAM介绍1.1 摘要:重度抑郁症是一种普遍而严重的心理健康状况,对您的情绪,思想,行动和对世界的整体感知产生负面影响。由于抑郁症的症状不明显,确定一个人是否抑郁是很复杂的。然而,他们的声音可能是我们可以识别抑郁症迹象的因素之一。抑郁的人会表现出不适、悲伤,他们可能说话缓慢、颤抖,声音中失去情感。在这项研究中,我们提出了动态卷积块注意力模块(DynamicCBAM),用于在注意力-GRU网络中通过分析人类的音频信号来分类情感。

tsg6698的博客 1001

全栈拆解华为乾崑 ADS 5:WEWA2.0智能体架构与安全风险场技术、实现多传感器全融合感知与主动安全预判、助力城市NOA/高速领航/全场景无人通行极致落地

华为乾崑ADS 5的核心颠覆性,不在于单一功能的小幅升级,而在于实现了自动驾驶从“工具式辅助驾驶”到“拟人化智能体驾驶”的全栈范式革命。通过WEWA 2.0端云协同AI智能体架构,解决了传统智驾决策僵硬、博弈能力弱、学习效率低的行业痛点;通过行业首发安全风险场技术,将自动驾驶安全体系从被动避险升级为主动预判,直接减半行车风险;通过乾崑OS专属车规系统底座,保障高阶智驾的低时延、高稳定、高可靠运行;通过多传感器超融合感知体系,实现全场景、全天候、无盲区的精细化环境理解。

getusushu的博客 288

C++图形开发实战:基于FreeType与纹理图集的高性能字体渲染方案

在计算机图形学与游戏开发领域,字体渲染是构建用户界面和数据可视化的基础技术。其核心原理是将字体文件中的矢量轮廓信息通过光栅化转换为位图,再通过图形API绘制到屏幕上。传统系统API渲染在复杂场景下常面临性能瓶颈与质量损失,因此掌握自定义渲染管线对追求高性能与跨平台一致性的项目至关重要。FreeType库作为跨平台的字体解析引擎,提供了从轮廓提取到位图生成的全流程控制,是实现高质量字体渲染的技术基石。结合纹理图集技术,将大量零散字形纹理合并为单张大纹理,能极大减少GPU绘制调用,显著提升大批量文字渲染效率。这

weixin_30904593的博客 383

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

UGUI扩展项目全解析:从TextMeshPro到性能优化实战指南

在Unity游戏和应用开发中,UI系统是连接用户与内容的核心桥梁。UGUI作为Unity官方的UI解决方案,提供了基础的渲染与交互框架,但其原生功能往往难以满足现代应用对复杂视觉效果和高性能的需求。通过扩展项目,开发者可以在UGUI的稳定基础上,集成更强大的功能模块,从而提升开发效率和最终产品的表现力。例如,TextMeshPro利用SDF技术实现了高质量的文字渲染,解决了原生文本缩放锯齿和特效支持弱的问题;而EnhancedScroller则通过对象池和按需渲染机制,优化了长列表的性能,避免了大量Game

weixin_33785108的博客 321

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Gemini 3.1 Pro推理与SVG生成能力深度解析

SVG是一种结构化矢量图形语言,其本质是可编程的视觉逻辑表达;而AI推理能力正从浅层模式匹配转向深层因果建模。当大模型不仅能生成符合W3C规范的SVG代码,还能内嵌CSS变量、贝塞尔曲线参数与时间驱动动画,说明它已具备工程级设计意图理解能力。这种能力依托于对抽象规则的泛化、跨领域知识的溯源验证,以及动态权重调整的系统思维。在UI动效生成、日夜模式切换、复杂图标形变等真实前端场景中,SVG输出直接替代传统切图+手写动画流程,显著压缩设计-开发协同链路。本文聚焦Gemini 3.1 Pro在SVG生成与因果推理

cnvdkx2837的博客 482

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2D矢量绘制引擎thorvg源码剖析

内容是介绍thorvg库、特点、框架等。需要抓住核心:轻量级2D矢量库,类似Skia,社区资料稀缺,作者分享笔记;ThorVG功能丰富、跨平台、场景图架构、支持多种后端;文章介绍了构建、功能、框架等。摘要应精炼。</think>ThorVG是一款轻量级2D矢量图形库,类似Skia但更小巧(核心约170KB),采用场景图架构,支持多后端渲染及Lottie动画。因社区资料稀缺,作者基于研究整理并分享学习笔记,涵盖构建、功能、框架解析,旨在为

微小的鱼的博客 519

Cocos基础概念知识

【架构透视与数据流向图解】Cocos Creator 3.x 引入了高度可定制的现代渲染管线(Render Pipeline),支持跨平台的高性能图形渲染。其工作原理可以抽象为一个从“逻辑数据”到“屏幕像素”的数据流转换过程。【工作原理数据流图】场景图 (Scene Graph)➔渲染收集 (RenderFlow)➔渲染队列 (RenderQueue)➔渲染管线 (RenderPipeline)➔图形 API (WebGL/Vulkan)1. 场景漫游与数据收集(RenderFlow)

qq_52269550的博客 562

基于HarmonyOS API 24旧书回收应用@Entry @Component 与 struct BookRecycleApp入口组件与状态管理:声明式 UI 的核心引擎

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。

2401_86031952的博客 248

HarmonyOS ArkTS API 24实现智能日程管家进行双数据模型隔离、@Observed 双数据模型、Stack 弹框层级控制、Builder 平铺渲染到设计令牌集中管理

食材保险App是一款基于鸿蒙ArkTS开发的单页面应用,核心解决两个生活痛点:一是家庭食材管理混乱、过期浪费严重;二是食材变质引发健康问题后缺乏保障机制。通过数字化的方式将食材采购、保鲜跟踪、保险理赔三个环节串联起来,用户只需在发现食材问题时一键发起理赔,系统自动审核并在1-3个工作日内完成赔付。本文围绕完整代码逐模块讲解,涵盖数据模型设计、响应式状态管理、弹框交互、列表渲染等核心功能。 项目采用单文件架构,所有代码集中在一个文件中,便于整体阅读和调试。实际工程中建议按组件拆分为独立文件。 设计要点:装饰器

qq_46340842的博客 177

安卓中设置渐变字体和描边字体

【代码】安卓中设置渐变字体和描边字体。

CruelLei的博客 784

Android 自定义TextView实现文字描边效果

Android 自定义TextView实现文字描边效果

Roy1986613的博客 1464

Android之文字描边

结果是最不重要的,重要的是过程 * [问题] 本文主要解决白色背景下,白色的文字看不见的问题 * [解决思路] 给文字加阴影,ios下很好解决,苹果提供了很好 View.layer.shadow**属性,奈何android虽然提供了,但是效果不好, 解决方案是利用TextView在onDraw的时候,获取到画笔,先进行一次比默认大小的文字内容稍微大一点的绘制,然后再进行一次默认大小的文字内容的绘

I_do_can的博客 3060
上一篇: Android微信登录(shareSDK)注意事项
下一篇: Android 7.0新特性
PirateBrook
博客等级 码龄11年 90粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值