一、选择题(每题 5 分,共 10 题)
-
Android SDK 中,用于调试的命令行工具是?
A. git
B. adb
C. maven
D. gradle
答案:B
解析:adb 是连接电脑和 Android 设备的调试桥梁,用于安装 APK、查看日志、进入 shell 等。
-
EditText的android:hint属性作用是?A. 设置输入框的背景颜色
B. 设置输入框的默认文字,获取内容时会包含该文字
C. 设置输入框的占位提示文字,输入时消失
D. 设置输入框为密码模式
答案:C
解析:hint 是灰色占位提示文字,用户输入后自动消失。获取内容时不会拿到 hint 文字。
-
在
AlertDialog中,点击"确定"按钮的回调应设置在哪个方法中?A.
setPositiveButton()B.
setNegativeButton()C.
setNeutralButton()D.
setOnClickListener()答案:A
解析:PositiveButton(确定)、NegativeButton(取消)、NeutralButton(中性),三个按钮在对应方法中设置回调。
-
Android 中不允许在主线程执行网络操作,否则会抛出什么异常?
A. NullPointerException
B. NetworkOnMainThreadException
C. ClassNotFoundException
D. IllegalStateException
答案:B
解析:Android 3.0 起强制要求网络操作在子线程执行,主线程做网络请求直接抛此异常。
-
要使
LinearLayout中的子控件按比例分配剩余空间,应使用哪个属性?A.
android:layout_gravityB.
android:gravityC.
android:layout_weightD.
android:layout_span答案:C
解析:layout_weight 按权重分配剩余空间。使用 weight 时建议将对应方向宽高设为 0dp。
-
下列哪个不是
Intent可以完成的功能?A. 启动 Activity
B. 发送广播
C. 直接操作数据库
D. 启动 Service
答案:C
解析:Intent 是组件间通信信使,能启动 Activity/Service、发送广播,但不能操作数据库。
-
在
TableLayout中,android:layout_span="2"的含义是?A. 该控件占据第 2 列
B. 该控件跨 2 列
C. 该控件宽度为 2dp
D. 该控件在第二行
答案:B
解析:layout_span 是跨列属性,类似 HTML td 的 colspan。layout_column 是指定列索引(从 0 开始)。
-
关于
Toast.makeText(),以下说法正确的是?A. 第一个参数是 String 类型
B. 第三个参数可以传入自定义毫秒数
C. 调用
makeText()后不需要调用show()也会显示D. 第三个参数可选值为
Toast.LENGTH_SHORT和Toast.LENGTH_LONG答案:D
解析:参数1 是 Context;参数3 只能是 LENGTH_SHORT 或 LENGTH_LONG;必须调 .show() 才会显示。
-
创建显式 Intent 跳转页面时,需要传入什么参数?
A. 目标 Activity 的类名
B. 目标 Activity 的包名
C. 目标 Activity 的字符串名称
D. 目标 Activity 的布局文件
答案:A
解析:
new Intent(this, TargetActivity.class)第二个参数是目标 Activity 的 Class 对象。 -
layout_width="match_parent"的含义是?A. 宽度由内容决定
B. 宽度与父容器一致
C. 宽度为 0
D. 宽度占屏幕一半
答案:B
解析:match_parent(旧名 fill_parent)表示控件尺寸与父容器相同,填满可用空间。
二、填空题(每题 4 分,共 10 题)
-
Android 应用开发的标准 IDE 是 ____________。
答案:Android Studio
解析:基于 IntelliJ IDEA,Google 官方推荐 IDE,集成了 Gradle 构建、ADB 调试、模拟器管理。
-
Intent分为两种:____________ Intent 直接指定目标组件,____________ Intent 通过 action/data 匹配目标组件。答案:显式(Explicit);隐式(Implicit)
解析:显式用于应用内跳转;隐式用于跨应用调用。
-
Spinner(下拉列表)需要绑定 ____________ 来设置选项数据。答案:Adapter(适配器)
解析:Spinner 和 ListView 都通过 Adapter 作为数据和视图间的桥梁。
-
在
build.gradle中,minSdkVersion的作用是设置 ____________。答案:应用最低兼容的 Android API 版本
解析:minSdk 决定应用能安装的最老系统版本。低于该版本的设备在应用商店看不到此应用。
-
Android 发送 HTTP 请求前,必须在 manifest 中声明 ____________ 权限。
答案:<uses-permission android:name="android.permission.INTERNET" />
解析:INTERNET 是普通权限,只需在 manifest 声明即生效。
-
LinearLayout的排列方向由 ____________ 属性控制。答案:android:orientation
解析:取值 vertical(垂直)或 horizontal(水平),默认为 horizontal。
-
RelativeLayout中让控件水平居中的属性是 ____________。答案:android:layout_centerHorizontal
解析:centerHorizontal 仅水平居中;centerInParent 同时水平和垂直居中。
-
Button在布局中通过android:onClick属性绑定的方法,参数类型固定为 ____________。答案:View
解析:如
public void myClick(View view),参数必须是 View,名称可自定义。 -
文字大小的推荐单位是 ____________,布局宽高的推荐单位是 ____________。
答案:sp;dp
解析:sp 受系统字体大小设置影响适合文字;dp 不受字体设置影响适合布局。
-
Message.obtain()相比new Message()的优势是 ____________。答案:从消息池复用对象,更高效,避免频繁创建
解析:Android 维护 Message 对象池(最大 50 个),obtain() 优先取回收对象。
三、简答题(每题 7 分,共 4 题)
-
简述 Android 中
gravity和layout_gravity的区别。答案:
gravity是控件自身内容相对于控件边界的对齐方式(内部对齐);layout_gravity是控件本身在父容器中的对齐方式(外部对齐)。解析:记忆方法:有 layout 前缀的是控件对外部父容器的表现。
-
写出三种实现 Button 点击事件的方法。
答案:① XML 中声明
android:onClick,Activity 中定义同名 public void 方法;②button.setOnClickListener()传匿名内部类;③ Activity 实现View.OnClickListener接口,button.setOnClickListener(this)。解析:方式①最简单;方式②最常用;方式③多个按钮共享逻辑时方便。
-
简述 AlertDialog 的创建步骤。
答案:
new AlertDialog.Builder(context)→.setTitle()→.setMessage()→.setPositiveButton()→.setNegativeButton()→.show()。AlertDialog 不能直接 new,必须通过 Builder。解析:Builder 模式核心是不直接 new AlertDialog(),而是链式调用构建。
-
简述 Socket 与 HTTP 连接的主要区别。
答案:Socket 是基于 TCP/IP 的长连接,需手动管理协议格式,适合实时双向通信;HTTP 是请求-响应模式的无状态短连接,有标准 Headers 和状态码,适合 Web API。
解析:HTTP 底层也是 TCP Socket,但封装了标准格式。Socket 更灵活但更复杂。
四、编程题(填空方式)(每题 10 分,共 2 题)
- 以下代码创建一个 AlertDialog 并显示。
java
new __________(1)__________
.__________(2)__________("提示")
.__________(3)__________("确定要退出吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton("取消", __________(4)__________)
.__________(5)__________;
答案:(1) AlertDialog.Builder(this) (2) setTitle (3) setMessage (4) null (5) show()
解析:Builder 模式链式调用:new Builder → setTitle → setMessage → setPositiveButton → setNegativeButton → show。
- 以下代码使用 HttpURLConnection 发送 GET 请求获取数据。
java
private String doGet(String urlString) throws Exception {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.__________(1)__________;
conn.setRequestMethod(__________(2)__________);
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
int code = conn.__________(3)__________;
if (code == __________(4)__________) {
InputStream is = conn.__________(5)__________;
// 读取流并返回结果...
}
conn.disconnect();
return null;
}
答案:(1) openConnection() (2) "GET" (3) getResponseCode() (4) 200 (5) getInputStream()
解析:openConnection → setRequestMethod → getResponseCode → 判断 200 → getInputStream → disconnect。