在使用百分比布局的过程中,大家可能会遇到一个问题,Textview的控件大小是由百分比分数算出来的,但是字体大小Textsize却没法确定。于是我想到继承textview写一个自定义的PercentTextView,使字体可以根据相应的设备屏幕尺寸进行百分比缩放。

适用场景:使用官方百分比布局库做屏幕适配,Textsize不能确定的情况(尤其是适配屏幕宽高比例一致的设备,效果最好)

用法:此控件用法与官方textview基本一致,可以使字体大小跟着屏幕尺寸和比例变化。

举个栗子:

美工给的标注图是1200*1920   字体标注为36px

用了本少侠的控件后,你可以直接在布局文件里面的textsize属性上写36px

然后app跑在1200*1920设备上,该textview里的字体大小依然是36px大小

在720*1280设备上,字体大小会变为21.6px

在800*1280设备上,字体大小会变为24px

下面是代码和具体用法。

1、首先需要在values中创建一个attrs.xml文件用于做自定义属性

2、把下面的代码复制的Android工程中(实现方式很简单,相信不用解释就能看懂)

public classPercentTextView extendsTextView {

private static finalString TAG= PercentTextView.class.getSimpleName();private static intbaseScreenHeight= 1200;private floatmTextSizePercent= 1f;publicPercentTextView(Context context) {

super(context);setDefaultPercent(context);setTextSize(getTextSize());}

publicPercentTextView(Context context,AttributeSet attrs) {

super(context,attrs);getAttrs(context,attrs);setDefaultPercent(context);LogUtil.i(TAG,"PercentTextView() getTextSize() == "+getTextSize());setTextSize(getTextSize());}

publicPercentTextView(Context context,AttributeSet attrs, intdefStyleAttr) {

super(context,attrs,defStyleAttr);getAttrs(context,attrs);setDefaultPercent(context);setTextSize(getTextSize());}

@Overridepublic voidsetTextSize(intunit, floatsize) {

size = (int)(size * mTextSizePercent);LogUtil.i(TAG,"setTextSize() == "+size);super.setTextSize(unit,size);}

@Overridepublic voidsetPaintFlags(intflags) {

super.setPaintFlags(flags);}

@Overridepublic voidsetTextSize(floatsize) {

setTextSize(TypedValue.COMPLEX_UNIT_PX,size);}

public floatgetTextSizePercent() {

returnmTextSizePercent;}

public voidsetTextSizePercent(intunit, floattextSizePercent) {

mTextSizePercent= textSizePercent;setTextSize(unit,getTextSize());}

public voidsetTextSizePercent(floattextSizePercent) {

mTextSizePercent= textSizePercent;setTextSize(TypedValue.COMPLEX_UNIT_PX,getTextSize());}

/*** 得到自定义的属性值**@paramcontext*@paramattrs*/private voidgetAttrs(Context context,AttributeSet attrs) {

TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.PercentTextView);baseScreenHeight= ta.getInt(R.styleable.PercentTextView_baseScreenHeight,baseScreenHeight);ta.recycle();}

/*** 获取当前设备屏幕的宽高**@paramcontext*@return*/public static intgetScreenHeight(Context context) {

WindowManager wm = (WindowManager) context

.getSystemService(Context.WINDOW_SERVICE);intheight = wm.getDefaultDisplay().getHeight();returnheight;}

/*** 设置默认的百分比**@paramcontext*/private voidsetDefaultPercent(Context context) {

floatscreenHeight = getScreenHeight(context);mTextSizePercent= screenHeight / baseScreenHeight;}

}

3、在布局文件中使用此控件,只需要引入全类名,如下:唯一比官方textview多的一个属性就是

app:baseScreenHeight="1200"

这个属性是我自定义的,所需要填的参数是美工给你标注图所参照的设备的屏幕高度,比如美工给你的切图都是以720*1280的设备为基准,那么你就填720,要是嫌写这个属性麻烦,你也可以直接在percentTextview里

private static intbaseScreenHeight= 1200;

直接把值修改成你自己工作所需要的720就行,就不用在布局里写这个属性了

android:layout_width="0dp"android:layout_height="0dp"android:gravity="center"android:textColor="#ffffff"android:textSize="240px"android:textStyle="bold"app:baseScreenHeight="1200"app:layout_heightPercent="73.17%"app:layout_widthPercent="100%"/>

android 字体百分比,android 解决百分比布局适配时Textview的字体Textsize比例缩放问题...相关推荐

  1. python中文字体下载_解决Linux系统下python matplotlib中文字体显示问题

    最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些 ...

  2. 【技术贴】完美解决win7字体模糊!解决360浏览器在win7的标签字体图标模糊。最新办法收集。...

    装好了win7之后发现 怎么看都觉得win7的屏幕非常模糊,越看越模糊,越看越觉得是不是自己要求太高了.安装了360浏览器之后发现,我的浏览器里面的工具栏那个地方的所有文字都是模糊的仿佛蒙娜丽莎的微笑 ...

  3. textview html字体颜色变粗,安卓使用Html实现textview部分字体变色加粗的效果(使用Html实现多种字体效果)-Go语言中文社区...

    先祝大家新年快乐呀. 写这个只是个人觉得Html的标签用起来比较方便的,直接拼接字符串就实现了, 用这种方法是和前端一样使用标签的形式完成的,但不是支持所有的功能,毕竟是textview,只支持一部分 ...

  4. Source Insight Win10上显示字体很模糊解决办法

    Source Insight Win10上显示字体很模糊解决办法 Source Insight Win10上显示字体很模糊解决办法 1 打开文件所在位置 2 右键点击应用图标 3 然后点击" ...

  5. jQuery实现等比例缩放大图片让大图片自适应页面布局

    在布局页面时,有时会遇到大图片将页面容器"撑破"的情况,尤其是加载外链图片(通常是通过采集的外站的图片).那么本文将为您讲述使用jQuery如何按比例缩放大图片,让大图片自适应页面 ...

  6. Android 入门第二讲03-约束布局ConstraintLayout(可视化介绍,Chains链,MATCH_CONSTRAIN,百分比布局,圆形定位,Guideline,Barrier)

    Android 入门第二讲03-约束布局ConstraintLayout(可视化介绍,Chains链,MATCH_CONSTRAIN,百分比布局,圆形定位,Guideline,Barrier) 1.可 ...

  7. android 边距 百分比,Android百分比布局:PercentRelativeLayout

     Android百分比布局:PercentRelativeLayout 在最新的Android support包中,增加了开发者期待的百分比布局PercentRelativeLayout和Perc ...

  8. android+自定义键盘之汉字,android自定义键盘(解决弹出提示的字体颜色问题)

    最近准备要做一个项目,需要用到自定义小键盘来确保安全,而且还需要精确获得用户点击键盘时的落点位置.力度.指尖接触屏幕的面积等参数. 在写自定义键盘的时候,用到了国内网上的一些代码,出处是 向先人致敬! ...

  9. android电量百分比,Android P 状态栏显示电量百分比

    状态栏默认显示电量百分比 在Android P 的BatteryMeterView中有集成显示电量百分比相关代码,所以我们只需要将其显示控制条件默认打开就行. 在Settings的Battery的子页 ...

最新文章

  1. 解决Office 2010出现the setup controller has encountered a problem...
  2. 裴礼文数学分析中的典型问题与方法第4章一元函数积分学练习
  3. java jmenuitem重新渲染_的Java的JMenuItem添加邊框的第二菜單項
  4. 云南计算机专升本数据结构_怎么查找云南省2019年专升本计算机专业试题
  5. Win2D 入门教程 VB 中文版 - 防止内存泄漏
  6. 面试必备:CAS无锁机制
  7. 二十一世纪Windows简史
  8. 解决:mysql 连接报错 Authentication plugin ‘caching_sha2_password‘cannot be loaded
  9. select中option解析
  10. Python IDE集成开发工具
  11. 虚拟机队列实战虚拟化存储设计之LUN Sizing
  12. 腾讯会议瞩目会议开启共享屏幕时候出现卡顿时候,是显卡问题。
  13. 拼图复原_玩过上百款拼图后,我总结出这份超详细的拼图年龄对照表!(收藏贴)...
  14. 数字金额转换为大写金额python_python 实现金额数字转成大写
  15. IRP、IO_STACK_LOCATION、文件三种读写方式(buffer/driect/other)、DeviceIoControl
  16. 如何使用cygwin在windows下Linux编程
  17. 为了推动仓库无纸化操作我们做了什么?
  18. Origin 纵坐标名称栏中插入公式
  19. 嵌入式Linux是学驱动还是应用,嵌入式LINUX应该学什么?做驱动还是做应用
  20. PHP_递归函数时return

热门文章

  1. 【最新版全插件】多功能同城优选小程序源码
  2. 笔记本电脑安装ubuntu18.04系统后wifi驱动缺失的解决方法
  3. 3D游戏建模如火如荼,你还在为未来迷茫吗?
  4. 事业单位数字推理技巧(一)
  5. 离散数学22_第8章图__握手定理
  6. 人人都是极客网络电子书出炉!!!
  7. 小虎电商浏览器:店查查对于做的电商的朋友有何帮助?
  8. linux parted rpm,为Everest Linux构建QtParted的rpm包(六)
  9. 前端知识15:webpack打包其他资源之字体图标
  10. 计算机硬件硬盘分区,电脑硬盘分区知多少 怎么分区才合理?