1自定义控件
1>组合原生控件
将自己需要的控件组合起来变成一个新控件
View_top.xml àTopView extends RelativeLayout à在主布局中引 用TopView类的包路径 à在主activity中操作topView控件
2>自己绘制
Layout用来确定View在父容器中放置的位置
onDraw()用来将View绘制在屏幕上
onMeasure()用来测量View的宽和高
CustomView extends View à复写onDraw() à在主布局中引用 CustomView类的包路径
3>继承原生控件
myEditText extends EditText() à在主布局中引用myEditText类的包路径
2.ArrayList&&LinkedList
ArrayList内部为数组结构,查询快,插入慢.从数组中删除或插入,需要移动后段的数组元素,进而会重新调整索引顺序,因为比较耗时
LinkedList内部为链表结构,查询慢,插入快.从链表中删除或插入,只需改变引用即可,因此比较省时
3.android里activity的几种启动模式&&区别
Standard(默认)&&SingleTop&&SingleTask&&SingleInstance
Standard:默认的启动模式
SingleTop:需要创建的activity已经处于任务栈时,复用此activity
SingleTask:需要创建的activity已经处于任务栈时,弹出此activity上的其他activity,让其处于栈顶
SingleInstance:全局单例模式,只要整个系统中创建过此activity的实例,不再创建
4.ActivityA(start)<->ActivityB(back)经历的生命周期,最后什么状态?
A(start) – onResume()
B(back) – onCreated() – onStart() – onResume() – onPause() – onStop() -- onDestory()
5.activity之间数据传输的方式
Intent(内部)&&实现接口(外部)
内部:
AàIntent() 跳转àintent.putExtras(key,value)携带数据à开启跳转àBà获取intent对象Intent intent = getIntent()à通过intent对象的getExtras()获取得到数据赋值给bundle对象à通过bundle.getString()获取到A传递过来的数据
外部:
实现Parcelable(android)接口&&Serializable接口(java.io)
6.线性布局与相对布局在性能上有什么区别
EclipseàLinearLayout(默认) android studioàRelativeLayout(默认)
RelativeLayout在性能上优于LinearLayout原因:
Google的选择,因为在ListView等控件中,使用LinearLayout容易产生多层嵌套的布局结构,在性能上是不好的,而RelativeLayout在使用上比较灵活,通常情况下其层级结构比较扁平,减少多层嵌套的布局结构
7.单线程模型Message、Handler、Message Queue、Looper间关系
Handler获取当前线程中的Looper对象,Looper用来将Message Queue中的Message取出,再由Handler对Message进行分发和处理
8.改变UI主线程的几种方式(线程间通信的方式)
Handler&&AsyncTask&&Activity.runOnUiThread()
9.android数据存储的方式
SharePreferences&&SQLite存储&& File存储
SharePreferences:
是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息
实现SharePreferences存储步骤如下:
sp =con.getSharePreferences.edit().put(key,value).commit()
SQLite存储:
实现SQLite存储步骤如下:
1.继承SQLiteOpenHelper,实现构造函数&&onCreate()&&onUpgrage()三个方法
10.android几种动画间区别
补帧&&补间&&属性
补帧动画:
通过顺序的播放已排列好的图片(一张张图片不断的切换,形成的动画效果)
补间动画:
原形态变成新形态时为了过渡变形过程,生成的动画就叫做补间动画
主要scale(缩放)、alpha(透明)、Translate(位移)、 Rotate(旋转)四种效果
只是在视图层发生变化,View未发生变化
属性动画:
不停的调用View的setTranslationY方法实现延Y轴平移
api11以上,Android4.0引入的新动画
View发生变化