Android R.fraction

编程入门 行业动态 更新时间:2024-10-18 01:38:56

<a href=https://www.elefans.com/category/jswz/34/1771384.html style=Android R.fraction"/>

Android R.fraction

来源

我是在看Android10原生代码,绘制状态栏蓝牙电量相关类中第一次看到R.fraction的,如类BatteryMeterDrawable

<fraction name="battery_button_height_fraction">10%</fraction>

mButtonHeightFraction = context.getResources().getFraction(
                R.fraction.bt_battery_button_height_fraction, 1, 1);

方法解释

public float getFraction(@FractionRes int id, int base, int pbase) 
源码中方法解释如下:
Retrieve a fractional unit for a particular resource ID.
Params:
id – The desired resource identifier, as generated by the aapt tool. This integer encodes the package, type, and resource entry. The value 0 is an invalid identifier. base – The base value of this fraction. In other words, a standard fraction is multiplied by this value. pbase – The parent base value of this fraction. In other words, a parent fraction (nn%p) is multiplied by this value.
Returns:
Attribute fractional value multiplied by the appropriate base value.
Throws:
Resources.NotFoundException – Throws NotFoundException if the given ID does not exist.

用处

我自己没用过,待补充

测试

分别测试fraction的两种声明:有p的跟没p的

<item name="fraction" type="fraction">30%</item>
<item name="fraction" type="fraction">30%p</item>

测试没p的:

测试案例1:保持第三个参数不变

测试:

        //<item name="fraction" type="fraction">30%</item>float fraction1 = this.getResources().getFraction(R.fraction.fraction, 1, 1);float fraction2 = this.getResources().getFraction(R.fraction.fraction, 2, 1);float fraction3 = this.getResources().getFraction(R.fraction.fraction, 3, 1);float fraction4 = this.getResources().getFraction(R.fraction.fraction, 4, 1);

结果:

分析:

都是30%乘以第二个参数(base)

 测试案例1:第三个参数改变

 测试:

        //<item name="fraction" type="fraction">30%</item>float fraction1 = this.getResources().getFraction(R.fraction.fraction, 1, 2);float fraction2 = this.getResources().getFraction(R.fraction.fraction, 1, 3);float fraction3 = this.getResources().getFraction(R.fraction.fraction, 2, 2);float fraction4 = this.getResources().getFraction(R.fraction.fraction, 2, 3);

结果:

分析:

都是30%乘以第二个参数(base)

 总结以上两个测试案例可知:在没p的情况下,getFraction方法返回的结果就是乘以第二个参数;

测试有p的:

 测试:

        //<item name="fraction" type="fraction">30%p</item>float fraction1 = this.getResources().getFraction(R.fraction.fraction, 1, 2);float fraction2 = this.getResources().getFraction(R.fraction.fraction, 1, 3);float fraction3 = this.getResources().getFraction(R.fraction.fraction, 2, 2);float fraction4 = this.getResources().getFraction(R.fraction.fraction, 2, 3);

结果:

分析:

都是30%乘以第三个参数(pbase)

更多推荐

Android R.fraction

本文发布于:2023-11-15 01:53:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1591621.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Android   fraction

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!