web / android类比:声明性与程序性布局

时间:2012-05-01 14:04:01

标签: android android-layout web

我有一些网络开发经验,我正在学习如何构建Android应用程序。

我理解XML布局允许分离程序逻辑和(UI-)布局。这似乎类似于JavaScript与HTML / CSS的分离。

但是什么扮演服务器端脚本语言的角色?即如果有一个用户可以点击播放的音频文件列表,我该如何自动生成XML布局(在网络世界中,我会通过交错HTML和PHP来完成)?或者我是否被迫以编程方式执行此操作?

2 个答案:

答案 0 :(得分:2)

在Web编程世界中,由于客户端在物理上与服务器分离,因此需要用于动态客户端交互的javascript和用于处理数据的服务器端语言。在Android世界中,由于视图和代码都在同一设备(如桌面应用程序)中执行,因此视图中不需要编写脚本。因此,Android中的xml布局是完全静态的布局定义,就像一个简单的HTML文件。当用户与该布局交互时,必须在使用此布局的Activity中的代码中定义,该布局处理用户事件(javascript),并处理它们(服务器端语言)。

使用您的示例,如果有音频文件列表,并假设您使用了微调器允许用户选择一个,则必须使用onClickListener或变量附加事件处理程序,以告诉应用程序当用户选择它时。如果使用ListView,通常会扩展ListActivity,然后覆盖onListItemClick(),以便在用户单击它时执行该操作。

在Web编程世界中,这类似于将javascript事件处理程序附加到页面上的元素,然后在用户执行操作时响应,通常将数据发送到服务器以进行进一步处理。

简而言之,是的,您将被迫编写代码来响应用户的操作,并且您无法将代码交错(脚本)到布局文件中。

正常流程将是: 1.在xml中定义布局 2.在Activity中的onCreate中使用setContentView来指示您正在使用的布局 3.使用R对象通过id使用findViewById获取布局中定义的元素 4.将事件处理程序附加到这些元素,以便在用户执行操作时进行响应。

答案 1 :(得分:0)

对于音频文件列表,您可能希望使用ListView。您可以在XML布局中声明ListView,然后在您的活动中获得ListView的句柄并在其上设置适配器,该适配器将其填充到您的文件列表中。所以这是一些XML和程序化布局。如有必要,您可以随时执行这两项操作(以编程方式添加到布局中)。