小编sle*_*ica的帖子

Android Paint:.measureText()vs .getTextBounds()

我正在测量文本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)

android textview android-layout

188
推荐指数
6
解决办法
9万
查看次数

我为什么要make()或new()?

引入文件奉献许多段落解释之间的区别new()make(),但在实践中,您可以创建本地范围内的物体并返回它们.

你为什么要使用(坦率地说是愚蠢的)配对器?

go

187
推荐指数
10
解决办法
6万
查看次数

为什么C++中没有基类?

快速问题:从设计的角度来看,为什么在C++中,没有母语所有的基类,通常object在其他语言中是什么?

c++ language-design

84
推荐指数
4
解决办法
9001
查看次数

有一种简单的方法可以将"原始"字符串传递给grep吗?

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来实现呢?

bash grep escaping command-line-interface

50
推荐指数
4
解决办法
4万
查看次数

改善g ++输出

g ++有时会产生相当复杂的输出.特别是在处理模板时.有没有什么工具可以让g ++输出更具可读性?......至少有些颜色?

在这里提出这个问题可能听起来很愚蠢,但我一直无法用谷歌来解决这个问题.

c++ g++

43
推荐指数
5
解决办法
2万
查看次数

Scala,Android和Eclipse

我开始学习Scala了,我...我想我爱上了.到目前为止,我只编写了小测试片段,但由于我目前正在开发Android,我真正想做的就是尝试在Scala中编写Android应用程序.

我已经找到了关于这个问题的文章和问题,但主要是指三个工具的旧版本(Android SDK/Scala/Eclipse),所以一般的问题是:

有人在Scala中编写Android应用程序,使用最新的SDK,Scala 2.9和Eclipse Indigo吗?它有多可行?

特别是:

  1. Scala的功能与Android库之间的交互/集成如何?

  2. Eclipse的Scala插件的状态是什么?我已经阅读了你期望的所有功能,但我想了解第一手的故事,特别是有关调试器的故事.

  3. 构建过程(scala到java到dalvik,ant,proguard等)的自动化程度如何?

谢谢!

eclipse android scala

32
推荐指数
1
解决办法
2717
查看次数

Java方法引用是否稳定?

如果我使用新语法获取方法引用:

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变量中保存引用以保持其稳定?

java java-8

23
推荐指数
2
解决办法
1308
查看次数

用cat加入mp3文件.这件黑色巫术是什么?

我的一个朋友刚刚使用普通的cat连接两个mp3文件,...

cat file1.mp3 file2.mp3 > out.mp3
Run Code Online (Sandbox Code Playgroud)

...并且生成的文件完全可重现,播放一首歌然后播放下一首歌.

这个黑魔法是什么?标题,元数据怎么了?这怎么办?持续时间甚至可以正确显示.

mp3

22
推荐指数
2
解决办法
3671
查看次数

GNU默认情况下使用静音

是否有可能在默认情况下禁止命令回显Makefile

我知道make--silent模式下运行会这样做,因为它会为每个命令添加前缀@.

我正在寻找一个我可以包含 Makefile中的命令或节,省去了乱扔垃圾@或让用户手动静音的麻烦.

makefile gnu-make

20
推荐指数
3
解决办法
1万
查看次数

Android:在片段之间跳转的正确方法

这是一个设计问题,而不是技术问题.

一般情况:我希望片段中的UI事件进行活动范围的更改.

具体案例:我有两个片段,托管在同一个活动中.当用户单击其中一个片段中的按钮时,我希望它被另一个片段替换.

不想,但是,我的碎片摸我的活动.我可能想稍后改变行为(也许,在更大的屏幕中,显示两个片段而不是替换第一个),我不希望我的片段代码具有该逻辑.

我所做的是Listener在我的片段中实现一个类,它将事件报告给Activity.这样,如果我想使用Activity具有不同显示行为的另一个类,我只需更改监听器并Fragment保持代码不变.

这是一个很好的方法吗?是否有标准的良好做法或更好的设计模式?

android design-patterns android-fragments

19
推荐指数
1
解决办法
1万
查看次数