Android如何加载插件目录下的“xml布局文件”动态生成UI界面?

javasql 发布于 2013/05/07 18:12
阅读 5K+
收藏 0

android通过纯代码new控件动态生成界面开发效率不高,如何能加载插件目录下的“xml布局文件”动态生成界面?

注:插件目录下的“xml布局文件”是apk安装后不定时从web下载的,目标是实现android下类似eclipse的动态插件机制,使android应用能完全在线更新,免去每次升级重新安装的麻烦。敬请高人指点一二,多谢!

加载中
1
曾赛
曾赛
仔细研究一下Android Inflate机制,这个应该是可以实现的。
javasql
javasql
http://stackoverflow.com/questions/9660794/can-i-use-external-xml-files-in-for-layouts-in-android 自己实现理论可行,但工作量巨大呀!
0
javasql
javasql

public View inflate (XmlPullParser parser, ViewGroup root)

Added in  API level 1

Inflate a new view hierarchy from the specified xml node. Throws InflateException if there is an error. *

Important   For performance reasons, view inflation relies heavily on pre-processing of XML files that is done at build time. Therefore, it is not currently possible to use LayoutInflater with an XmlPullParser over a plain XML file at runtime.

官方文档居然说因为性能原因,inflation 严重依赖编译构建时对xml的预处理,因此目前还不支持运行时解析原始xml文本。靠!

0
曾赛
曾赛

没有关系,现在有多数API可以用,能不能按照它的思路,做一个简单的Parser,解析原始xml。

这之前走马观花的看了一下,还是用的反射技术。

javasql
javasql
http://stackoverflow.com/questions/5325002/activities-loading-xml-layout-dynamically-in-android 由于官方目前都不支持,难度大,工作量大,这里有个折中的办法,但不理想。
0
贺路的路
贺路的路
当用户选择更新时,你就执行重新加载xml那段代码啊
javasql
javasql
不明白你的意思,你没仔细看问题描述吧?
0
kenping
kenping
RemoteView ?
javasql
javasql
RemoteView是用来描述一个垮进程显示的view,不是我要的。
0
m
myqhit
非常理解你想要什么,我也做过插件这个,就是调用系统api解析不了插件目录的xml布局,解析的过程中就失败了,其中有一些依赖的数据项搞不懂哪里加载的
javasql
javasql
呵呵,解析确实复杂,暂时还是堆代码生成界面算了。
0
只求一醉

这个可以研究一下 桌面程序怎么 生成RemoteView的

利用相同的机制,使用appt工具处理一下xml文件,或是把要更新的xml文件生成在apk文件中,然后解开,copy出来在inflate

javasql
javasql
可以试试,估计也不行。应该需要apk安装后的Context上下文环境才行,仅仅copy出来估计有点悬呀。。。
返回顶部
顶部