【网学网提醒】:网学会员,鉴于大家对android 面试题十分关注,会员在此为大家搜集整理了“android 面试题”一文,供大家参考学习!
1.什么是android(能干什么)
2.安装
3.(第一个示例)理解应该
程序架构关系
4.DDMS(DalvikDebugMonitorService)的使用
5.事件和Intent初步
7.Activity
1).回顾:Activity生命周期:一方面,启动Activity,界面可见,转向home界面不可见,再让Activity可见。
另一方面:启动Activity,让界面可见,再让界面为半可见状态,再让界面为完全可见
调用destroy方法
2).android组织Activity的方式:当显示第一界面时,android会把界面对象放入栈顶,当转向第二个界面时,第二个界面显示,同时它位于栈顶,而第一个界面,被放入第二位。当从第二个界面back到第一个界面时,第二个界面会出栈,第一个界面变为栈顶(结合生命周期方法的调用)
8.service生命周期
service是一种没界面的Activity,它主要运行后台,从启动开始,它会一直存在,除非系统资源紧缺,系统才会把它销毁掉。
1)service生命周期控制:
需求,如何做到一个在Activity界面中,控制service生命周期呢(也就是说让其开始,让其销毁,他就销毁)?
2)在Activity中,如何获取service对象(难道要直接实例化吗?)
为此android提供了绑定机制,当Activity和service绑定成功时,android自动会service对象返回给Activity.
3)音乐播放
9.在上面的音乐播放中,如何做到播放完之后,更改界面,提示播放结束?为此
咱们可以在界面类中创建一个广播接收器,在service中,如果音乐播放结束,可以发布一个音乐播放结束的信息,就可以了。
另外,我们也可以把广播接收器在menifest中
注册(但是更改界面非常困难)
BroadcastReceiver生命周期
10.在上面我们实现了三个组件之间交互,那么在交互的同时,如何实现传值呢?
为此,android提供了Intent,这个类咱们用过了,它除了可以实现转向之外,还可以传值
在Intent对象中,可以存储三大种类的数据
10.1可以存储基本类型和ArrayList
(intent.putStringArrayListExtra()存getStringArrayListExtra()取,用putExtra()用对应类型取)
10.2可以存储Bundle类型的数据(intent.putExtras(),intent.getExtras()取)
10.3可以存储对象类型的数据,但要求实现Serializable接口(intent.putExtra(),使用getSerializable()取值)
更改实例:
10.4Activity之间传值
11.布局
11.1android组织组件的方式:它是以布局为根节点,以控件(View)为子节点来组织的,其中子节点也可以是布局(ViewGroup)。
ViewGroup和组件(文本框)都是View的子类
11.2线性布局
需求:如何做到组件之间是水平或竖直显示呢?为此android提供了线性布局。
画一个图画在上,文字在下
11.3相对布局
在布局文件中,如何做到让一个组件的显示
相对于其它组件呢(如,按钮2显示在按钮1的左边或者下边,上边等等)?这时,我们可以通过相对布局,来布局我们的界面
在相对布局文件中,是通过以下几个属性来实现相对的:
android:layout_centerHorizontal="true"是否显示到父视图的水平中间
android:layout_below显示某组件的下面
android:layout_toRightOf显示到哪个组件的右边
android:layout_alignLeft当前组件与指定的组件左对齐
android:layout_margin:指定组件边外距离
11.4表格布局
需求:如何做到像表格一样组织我们的组件呢?
android:shrinkColumns="0,1"表示当一行中,组件显示不下时,0和1列会变成竖显示。
android:collapseColumns="1,2"折叠1和2列
android:stretchColumns="3"延伸3列,当空间有剩余时,第3列会延伸
11.5绝对布局
再显示布局时,如何做到把组件定位到某个地方呢?为此android提供了绝对布局
它的属性:android:layout_x定位的横坐标
android:layout_y定位的纵坐标
11.6滚动布局
当组件过多时,默认下,多余的组件不显示,为此我们要能通过ScrollView来实现滚动,注意ScrollView只能有一个直接节点(为了实现在滚动布局中,显示组件,我们可以在里再用线性布局)
11.7tab布局
在组织组件时,如何把组件组织成像应用程序管理那样呢(显示tab)?
为此android提供了tab布局
0)LayoutInflater是用来向父视图添加子视图的,或者单独用。
LayoutInflater.from(this).inflate(R.layout.tab1,tabHost.getTabContentView(),true);
1)在做tab布局时,需要让Activity继承于TabActitvity
2)TabHost:它是用来组织每一个tab的,程序员可以向其上添加tab,可以通过父类获取TabHost对象(getTabHost())
3)tabHost.addTab();是用来向tabhost上添加tab子页的,其参数是(TabSepc),可以通过tabHost.newTabSpec("tab1")创建,tab1为该tab的id。
TabSepc常用方法:TabSepc.setIndicator()添加指示器用于显示子标签上,同时可以添加图片
TabSepc.setContent()设置内容,它是一个子视图,可以是一个文本框及复合的
4)tab事件OnTabChangedListener(可以得到tabId)
5)复合视图
11.8grid布局:
如何把我们的数据显示像模拟器的应用程序呢?为此android提供了网格布局,它能够把每一项数据显示成一个小方格,那么如何把每一项数据显示到方格里呢?
首先:我们要用ArrayList