我有一个通过CSS文件格式化的WebView - 我在应用程序内为此视图动态生成HTML,就像Web服务器一样.生成的HTML引用静态CSS文件进行格式化.我有一个图像格式化指令,如:
img {
width: 20px;
height: 20px;
}
Run Code Online (Sandbox Code Playgroud)
为了使这个设备独立,我想使用dip而不是px进行宽度和高度测量.我无法弄清楚(也没有找到)如何在css定义中指定dip作为一个单元.我试过"dp"和"dip",两者都不起作用.可以这样做吗?
我知道我可以通过<"target-densitydpi = high-dpi">类型的选择器选择多个版本的CSS文件,但这意味着我将拥有重复的CSS文件,只是为了能够根据不同的设备密度.可行,但我更喜欢能够在CSS文件中指定dip并让WebView为我工作.
同样可行的是在HTML头中生成内联样式表并将dip转换为特定设备的px,但这会导致CSS定义和HTML生成代码之间的耦合.可能比多个CSS文件(对于我的应用程序)更好,但是只需在CSS文件中设置dip并完成它就会好得多.
(我的图像旨在允许在没有工件的情况下调整当前支持的屏幕密度范围)
关于在我的应用程序中存储下载内容的位置的许多单独但相关的问题.
我有一个从中央服务器下载内容的应用程序.此内容有时是高级内容,或者至少是发布者不希望其自由分发的内容.我知道"外部"存储很容易访问,而"内部"存储是受保护的,除非电话是根的.
如果应用程序安装在SDCARD上(因为我的配置是),那么SDCARD上的"内部"存储也是物理上的吗?因此,如果我的SDCARD安装的应用程序下载了100MB的内容到内部存储,那么它实际上是在SDCARD上结束了,还是最终在设备的物理板载存储中?
如果应用程序安装在SDCARD上,并且带有下载内容的"内部"存储器位于SDCARD上,那么它是以开放格式物理存储还是加密?我似乎记得读过存储在SDCARD上的应用程序是加密的.这也适用于"内部"存储吗?
(删除有关将文件存储在单个目录中的问题,如Context.getDir()意味着可以在内部存储中创建和维护目录系统)
有更好的方法吗?
我需要从drawable文件夹外部加载9补丁文件.这样我的应用程序就可以从服务器下载新的皮肤.我发现在制作.apk时会编译存储在drawable文件夹中的9补丁图像.从assets文件夹读取的完全相同的文件没有9补丁块.因此,制作.apk的行为是在可绘制文件夹中编译源9补丁文件,但不在资源目录中编译.
如何自己编译9补丁文件,以便我可以将它安装在assets目录中?是否有(批量)工具将源转换为带有9补丁块的编译版本?我真的非常喜欢不必使用Eclipse/Ant来构建.apk,然后将其拆开以提取已编译的9补丁文件(如果可能的话).
现在我只想从资源目录中读取(例如,每个皮肤有一个子目录)以保持简单.下一步是编译源映像以添加到9补丁块中.之后我会担心即时下载到/ data文件夹 - 如果我无法编译9补丁文件那么添加服务器端的工作就没什么意义了.
我有一个很大的功能(我知道,见下文)在优化传递过程中打破了proguard.我想保持长期功能和优化.这可能吗?有没有办法说服proguard处理更大的功能?
代码在Eclipse下编译并在Android设备上运行.这是我的发布构建脚本的proguard优化步骤失败.如果我从函数中删除30个奇数行,它构建正常,但显然不能正确运行.
我的大型函数是一个模拟状态机的开关函数.随着状态机的发展,大约有五个独立但相关的变量以不同的方式进行调整.我可以打破我的功能,但子功能之间的耦合是不可取的.
Null Pointer Exception的堆栈跟踪是:
[proguard] Shrinking...
[proguard] Removing unused program classes and class elements...
[proguard] Original number of program classes: 176
[proguard] Final number of program classes: 173
[proguard] Optimizing...
[proguard] Unexpected error while evaluating instruction:
[proguard] Class = [com/.../Screen]
[proguard] Method = [switchToView$26d62a66(Lcom/...;Ljava/lang/String;)V]
[proguard] Instruction = [20] iload v4
[proguard] Exception = [java.lang.NullPointerException] (null)
[proguard] Unexpected error while performing partial evaluation:
[proguard] Class = [com/.../Screen]
[proguard] Method = [switchToView$26d62a66(Lcom/.../View;Ljava/lang/String;)V]
[proguard] Exception = [java.lang.NullPointerException] (null)
BUILD FAILED
/Users/colin/Android/.../build.xml:527: …
Run Code Online (Sandbox Code Playgroud)