第四章 从布局XML到视图对象
前言
在上一篇用户界面设计中,有读书反映为什么不用Android Studio进行学习开发。而Android Studio又为主流开发工具,在安卓入门学习(一)Android Studio使用将介绍如何用AS创建及导入应用项目。利器虽不同,但殊途同归。从下章开始,都将用AS做为开发工具。
本系统学习都是以【Android 编程权威指南
】作为指导书物。有条件的读者可入手一本。
本系列将先发表至简书,请关注简书上的我
第一节 XML如何转换为视图
在创建安卓项目时,会在src文件夹中创建一个名为QuizActivity的Activity子类。目录src是Java源代码的存放处。
代码清单 4-1 QuizActivity.java 源代码
package com.example.geoquiz;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class QuizActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.quiz, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
此Java文件包括三个方法:onCreate(Bundle)
,onCreateOptionsMenu(Menu)
以及onOptionsItemSelected(MenuItem)
。其中onCreateOptionsMenu(Menu)
以及onOptionsItemSelected(MenuItem)
暂时不用去理会,后续章节将详细说明作用及使用范围。
在activity子类创建后,onCreate(Bundle)
方法就会被调用。同时要获取并管理自己的用户界面,可用onCreate(Bundle)
中的setContentView(int layoutResID)
方法。通过方法,传入布局的资源ID,此方法将生成指定布局的视图并将其放置在屏幕上。布局视图生成后,布局文件包含的组件也随之以各自的属性定义完成实例化。
我们可以通俗的理解,创建一个新的Activity子类时,可以通过setContentView(int layoutResID)
方法中将根据所传的资源ID生成布局。那疑问来了,资源ID是啥玩意?
第二节 资源与资源ID
可以确定一点,通过资源ID确定资源。而布局也是资源的一种。所谓资源是指在项目中以非代码存在的内容,如图像、音频及XML文件等。项目中所有的资源文件都是存放在res的子目录中。
布局的XML文件activity_quiz.xml则是存放在res/layout/
下。字符串资源则是放在res/values/
下。
各个文件夹与资源作用如下:
- drawabl