我正在测量文本Paint.getTextBounds()
,因为我有兴趣获得要渲染的文本的高度和宽度.但是,实际呈现的文本总是比填充.width()
的Rect
信息宽一些getTextBounds()
.
令我惊讶的是,我进行了测试.measureText()
,发现它返回了一个不同的(更高)值.我试一试,发现它是正确的.
为什么他们报告不同的宽度?我怎样才能正确获得高度和宽度?我的意思是,我可以使用.measureText()
,但后来我不知道我是否应该相信.height()
返回者getTextBounds()
.
根据要求,这里是重现问题的最小代码:
final String someText = "Hello. I believe I'm some text!";
Paint p = new Paint();
Rect bounds = new Rect();
for (float f = 10; f < 40; f += 1f) {
p.setTextSize(f);
p.getTextBounds(someText, 0, someText.length(), bounds);
Log.d("Test", String.format(
"Size %f, measureText %f, getTextBounds %d",
f,
p.measureText(someText),
bounds.width())
);
}
Run Code Online (Sandbox Code Playgroud)
输出显示的差异不仅得到大于1(且没有最后一分钟的舍入误差),也似乎增加与大小(我正要吸引更多的结论,但它可能是完全的字体相关的):
D/Test ( 607): Size 10.000000, measureText 135.000000, …
Run Code Online (Sandbox Code Playgroud) 引入文件奉献许多段落解释之间的区别new()
和make()
,但在实践中,您可以创建本地范围内的物体并返回它们.
你为什么要使用(坦率地说是愚蠢的)配对器?
快速问题:从设计的角度来看,为什么在C++中,没有母语所有的基类,通常object
在其他语言中是什么?
grep
从命令行使用时不能输入"原始"字符串,因为某些字符需要转义才能被视为文字.例如:
$ grep '(hello|bye)' # WON'T MATCH 'hello'
$ grep '\(hello\|bye\)' # GOOD, BUT QUICKLY BECOMES UNREADABLE
Run Code Online (Sandbox Code Playgroud)
我printf
用来自动转义字符串:
$ printf '%q' '(some|group)\n'
\(some\|group\)\\n
Run Code Online (Sandbox Code Playgroud)
这会生成字符串的bash-escaped版本,并且使用反引号,可以很容易地将其传递给grep调用:
$ grep `printf '%q' '(a|b|c)'`
Run Code Online (Sandbox Code Playgroud)
但是,它显然不适用于此:输出中的某些字符不会被转义,而有些则不必要.例如:
$ printf '%q' '(^#)'
\(\^#\)
Run Code Online (Sandbox Code Playgroud)
该^
传递给角色时,不应该逃脱grep
.
是否有一个cli工具,它接受一个原始字符串并返回一个bash-escaped版本的字符串,可以直接用作grep的模式?如果没有,我怎么能用纯粹的bash来实现呢?
g ++有时会产生相当复杂的输出.特别是在处理模板时.有没有什么工具可以让g ++输出更具可读性?......至少有些颜色?
在这里提出这个问题可能听起来很愚蠢,但我一直无法用谷歌来解决这个问题.
我开始学习Scala了,我...我想我爱上了.到目前为止,我只编写了小测试片段,但由于我目前正在开发Android,我真正想做的就是尝试在Scala中编写Android应用程序.
我已经找到了关于这个问题的文章和问题,但主要是指三个工具的旧版本(Android SDK/Scala/Eclipse),所以一般的问题是:
有人在Scala中编写Android应用程序,使用最新的SDK,Scala 2.9和Eclipse Indigo吗?它有多可行?
特别是:
Scala的功能与Android库之间的交互/集成如何?
Eclipse的Scala插件的状态是什么?我已经阅读了你期望的所有功能,但我想了解第一手的故事,特别是有关调试器的故事.
构建过程(scala到java到dalvik,ant,proguard等)的自动化程度如何?
谢谢!
如果我使用新语法获取方法引用:
anObject::aMethod
Run Code Online (Sandbox Code Playgroud)
我总是得到同一个对象吗?也就是说,我可以相信对同一方法的两个引用是相同的吗?
例如,我很乐意知道是否计划将它们用作Runnable
我可以添加和删除的回调:
someLibrary.addCallback(anObject::aMethod)
// later
someLibrary.removeCallback(sameObject::sameMethod)
Run Code Online (Sandbox Code Playgroud)
这是否需要在Runnable
变量中保存引用以保持其稳定?
我的一个朋友刚刚使用普通的cat
连接两个mp3文件,...
cat file1.mp3 file2.mp3 > out.mp3
Run Code Online (Sandbox Code Playgroud)
...并且生成的文件完全可重现,播放一首歌然后播放下一首歌.
这个黑魔法是什么?标题,元数据怎么了?这怎么办?持续时间甚至可以正确显示.
是否有可能在默认情况下禁止命令回显Makefile
?
我知道make
在--silent
模式下运行会这样做,因为它会为每个命令添加前缀@
.
我正在寻找一个我可以包含在 Makefile中的命令或节,省去了乱扔垃圾@
或让用户手动静音的麻烦.
这是一个设计问题,而不是技术问题.
一般情况:我希望片段中的UI事件进行活动范围的更改.
具体案例:我有两个片段,托管在同一个活动中.当用户单击其中一个片段中的按钮时,我希望它被另一个片段替换.
我不想,但是,我的碎片摸我的活动.我可能想稍后改变行为(也许,在更大的屏幕中,显示两个片段而不是替换第一个),我不希望我的片段代码具有该逻辑.
我所做的是Listener
在我的片段中实现一个类,它将事件报告给Activity
.这样,如果我想使用Activity
具有不同显示行为的另一个类,我只需更改监听器并Fragment
保持代码不变.
这是一个很好的方法吗?是否有标准的良好做法或更好的设计模式?