1

我必须评估一些移动技术并且有一个问题。

我们有网络应用程序。它是客户端上的 javascript,它使用我们专有的视图格式从我们的服务器获取 xml。应用程序对其进行转换,并查看 html。

我们想在 Android 上原生 - 我们的应用程序会通过 http 从 web 服务获取这些 xml(可以更改它的格式)并创建视图。

可行吗?它以某种足够的方式可行吗?

我知道我可以用 Java 和一些 xml 格式创建布局。我可以从 Web 动态加载这些 xml 并使用它们来扩展布局(在教程中,这些 xml 仅在资源中)?还是让我解析我们的 xml 并调用适当的 Java 方法 - 该解决方案是否有效?

4

1 回答 1

2

资源布局文件夹中的 XML 是在编译时转换的,因此事后加载将无济于事。

您仍然可以动态解析 XML 并以编程方式从 XML 构建布局,您可能只需拥有一个 Android 版本的 javascript,您已经必须转换您的专有格式 - 但这取决于您的格式。

它在速度方面不会那么高效(很大程度上取决于您的网络和缓存代码,但仍然有一点取决于您的视图构建代码)但它会节省安装空间并允许您远程更新视图而无需发布新版本的应用程序。

编辑、扩展并添加了一些代码:

您可以将任何布局资源 xml 文件膨胀到一个视图中,如果您选择,您可以将其插入另一个视图,查看LayoutInflater以膨胀视图,然后只需使用 ViewGroup 扩展视图(如 LinearLayout 或 RelativeLayout)并添加到它.

一些代码的快速示例:

 protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    LinearLayout ll = new LinearLayout(this);
    setContentView(ll);
    TextView tv = new TextView(this);
    tv.setText("A message");
    ll.addView(tv);
}

它很笨重,缺少很多格式,但提供了一种将一个视图添加到另一个视图的基本机制。

作为使用布局充气器的示例:

View convertView = LayoutInflater.from(Main.this).inflate(R.layout.account_entry, null, false);

我建议使用 null 和 false 作为最后两个参数,因为稍后您将自己将其添加到特定视图中。

于 2012-05-23T09:29:48.097 回答