一、选择/判断
1.四种布局管理器:线性布局、表格布局、框架布局、相对布局
线性布局(linearlayout),每一行每一列只能放置一个组件,不会换行,当超出边界后不会显示
表格布局(tablelayout),可以添加多个tablerow标记,每个row标记占用一行,每添加一个组件表格增加一列
框架布局(framelayout),每加入一个组件创建一个空白区域,一帧,grivity属性对齐
相对布局(relativelayout),按照组件之前的相对位置来布局
2.高级组件:
① 自动完成文本框(AutoCompleteTextView):提示更多选择
② 进度条(ProgressBar):显示程序执行进度
③ 拖动条和星级评分条(seekbar/ratingbar):实现对某种数值的调节
④ 列表选择框(Spinner):下拉列表框
⑤ 列表视图(ListView):可以展示列表,需要额外创建一个模板,然后entries=那个模板
⑥ 网络视图(GridView):行列分布显示多个组件
⑦ 画廊视图(Gallery):按水平方向显示内容
3.Activity的生命周期和回调方法:
onCreat(),onStart(),onResume(),onRestart(),onPause(),onStop(),onDestroy()
前台生命周期:onResume---onPause
可视生命周期:onStart---onStop
完整生命周期:全部
4.Aciivity四种状态
Running,Paused(被另一个透明或dialog样式activity覆盖时),Stopped(不可见),Killed(关闭状态)
5.Intent 对象的组成(给你中文然后翻译)
① 组件名称(Component name)
② 动作(Action)
③ 数据(Data)
④ 种类(Category)
⑤ 附加信息(Extras)
⑥ 标志(Flags)
6.菜单资源文件通常应该放置在 res/menu 目录下
7.Toast 对话框 警告 状态栏
Toast 实现消息提示框
Toast toast=ToastmakeText(this,"111",Toast.LENGTH_SHORT);
toast.show();
AlterDialog 对话框
Notification 在状态栏上显示通知
8.Shared preference存储哪些数据
存储数据,该类主要用于基本类型,例如
booleans、floats、ints、longs 和 strings
9.Content provider
需同时使用content resolver来访问 Content provider 提供的对话数据
10.Service 类的重要方法
onStartCommand()、onBind()、onCreate()、onDestroy()
11.安装 apt 之前需要把 java 装上
12.Edittext输入框
13.Broadcast receiver:用于接收广播时间的组件 可以在xml静态注册和代码中动态注册
例如:电池状态
14.样式(style)和主题(theme)资源它们不是一种资源,主题资源不能作用
于单个的 View 组件,而是对所有(或单个)Activity 起作用
15.Toast 中文名是消息提示框,不需要用户手动关闭,是自动消失的,由long和short控制
16.Sqllite 存储的是大量复杂数据
17.Shared preference少量配置信息
18.Content provider 能共享其他程序的数据,不限于数据库的数据
19.Intent service(17.2.1第七行)所有启动请求处理完毕后自动停止,不必手动调用stopSelf()方法
二、简答题
1. UI 用户界面包含哪些要素?
要素:布局、组件、事件处理、样式与主题。其中组件包括基本组件和高级组件。
基本组件有文本框(TextView)、编辑框(EditText)和普通按钮(Button)等;
高级组件有进度条(ProgressBar)、列表视图(ListView)和网络视图(GridView)
等。样式与主题可以用来编辑单个 View 组件或者整个 Activity 的外观和风格,
外观和风格包括颜色、字体、边距等。
2. 创建界面有哪些流程?
① 根据应用的需求和目标用户来设计界面的草图
② 选择布局管理器
③ 设置组件,确定组件的属性(宽度、高度、颜色)④ 定义交互逻辑
⑤ 定义样式和主题
⑥ 集成开发环境预览
⑦ 优化、测试和发布
3. Intent 对象的组成以及它们指的是什么?
① 组件名称(Component name):用来指定处理 Intent 对象的组件
② 动作(Action):很大程度上决定了 Intent 如何创建,特别是数据(Data)和附加(Extras)信息
③ 数据(Data):是作用于 Intent 上的数据的 URI 和 MIME 类型
④ 种类(Category):Intent 中可以包含组件类型信息,用来作为被执行动作的附加信息
⑤ 附加信息(Extras):额外的键值对信息应该传递到组件处理 Intent
⑥ 标志(Flags):主要用来指示 Android 程序如何启动一个活动和启动之后如何对待它,所有的标志都定义在 Intent 类中
4. Intent-filter 的过滤机制?
动作检测:在 Android Manifest.xml 主配置文件中,使用
数据检测:在 Android Manifest.xml 主配置文件中,使用
种类检测:在 Android Manifest.xml 主配置文件中,使用
5. 介绍 Looper、Handler、Message、MessageQueue 类
循环者 Looper:Looper 对象用来为一个线程开启一个消息循环,用来操作MessageQueue。在 Android 中,一个线程对应一个 Looper 对象,而一个 Looper对象又对应一个 MessageQueue消息队列 MessageQueue:用于存放 Message(信息),在 MessageQueue 中,存放的信息按照 FIFO(先进先出)原则执行
消息处理类 Handler:允许发送和处理 Message 或 Runnable 对象到其所在线程的 MessageQueue 中
消息类 Message:被存放在 MessageQueue 中,一个 MessageQueue 中可以包含多个 Message 对象。每个 Message 对象可以通过 Message.obtain()方法或者Handler.obtainMessage()方法获得
6. 主线程和子线程消息传递处理的流程?
在子线程中,通过 Handler 类里面的 sendMessage()方法,将 Message 对象发送到主线程的 MessageQueue 中。主线程接收信息,主线程的 Looper 不断循环MessageQueue。当发现有新消息时,会将消息收发给创建该消息的 Handler,handleMessage()可以调用。
三、设计题
五彩霓虹灯
mian.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="color1">#ffff0000</color>
<color name="color2">#ffff6600</color>
<color name="color3">#ffffff00</color>
<color name="color4">#ff00ff00</color>
<color name="color5">#ff00ffff</color>
<color name="color6">#ff0000ff</color>
<color name="color7">#ff6600ff</color>
</resources>
MainActivity.java
private Handler handler;
private static LinearLayout linearlayout;
public static TextView[] tv=new TextView[14];
//使用颜色资源
int[] bgColor=new int[]{...};
private int index=0;
//在onCreate中
linearLayout=(LinearLayout)findViewById(R.id.ll);
int height=this.getResources().getDisplayMetrics().heightPixels;
for(int i=0;i<tv.length;i++){
tv[i]=new TextView(this);
tv[i].setWidth(this.getResources().getDisplayMetrics().heightPixels);
tv[i].setHeight(height/tv.length);
linearLayout.addView(tv[i]);
}
//创建并开启一个新线程
Thread t=new Thread(new Runnable(){
@Override
public void run(){
while(!Thread.currentThread().isInterrupted()){
Message m=handler.obtainMessage();
m.what=0x101;
handler.sendMessage(m);
try{
Thread.sleep(new Random().nextInt(1000));
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
});
t.start();
//创建一个Handler对象,在重写的handeleMessage()方法中,为每个文本框设置背景颜色
handler=new Handler(){
@Override
public void handeMessage(Message msg){
int temp=0;
if(msg.what==0x101){
for(int i=0;i<tv.length;i++){
temp=new Random().nextInt(bgColor.length);
if(index==temp){
temp++;
if(index==temp){
temp++;
if(temp==bgColor.length){
temp=0;
}
}
index=temp;
//为文本框设置背景
tv[i].setBackgroundColor(getResources().getColor(bgColor[index]));
}
}
super.hamdleMessage(msg);
}
};
}
AndroidMainfest.xml
<activity>android:theme="android:style/Theme.Black.NoTitltBar"</activity>
实现全屏显示
OnClick代码
Button button=findViewById(R.1.2);
button.setOnClickListenser(new OnClickListenser(){
@Override
public void onClick(View v){
.........
}
});
评论4
123
111
123
12
NCY
1
wqizgfwjjt
哈哈哈,写的太好了https://www.lawjida.com/