我有一些 Web 开发经验,并且正在学习如何构建 android 应用程序。
我了解 XML 布局允许分离程序逻辑和(UI-)布局。这似乎类似于 JavaScript 与 HTML/CSS 的分离。
但是服务器端脚本语言的作用是什么?即,如果有一个用户可以点击播放的音频文件列表,我如何自动生成 XML 布局(在网络世界中,我会通过交错 HTML 和 PHP 来完成)?还是我被迫以编程方式执行此操作?
我有一些 Web 开发经验,并且正在学习如何构建 android 应用程序。
我了解 XML 布局允许分离程序逻辑和(UI-)布局。这似乎类似于 JavaScript 与 HTML/CSS 的分离。
但是服务器端脚本语言的作用是什么?即,如果有一个用户可以点击播放的音频文件列表,我如何自动生成 XML 布局(在网络世界中,我会通过交错 HTML 和 PHP 来完成)?还是我被迫以编程方式执行此操作?
在 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. 附加这些元素的事件处理程序以在用户执行操作时做出响应。
对于音频文件列表,您可能需要使用 ListView。您可以在 XML 布局中声明 ListView,然后在您的活动中获得 ListView 的句柄并在其上设置一个适配器,用您的文件列表填充它。所以它是一点点 XML 和程序化布局。如有必要,您始终可以同时执行这两项操作(以编程方式添加到您的布局中)。