View部分

================================================

  1. ###### Android自定义组件完成思路

帧布局(框架布局)FrameLayout,在这一个布局中,所有的子元素统统放于那块区域的左上角,并且后边的子元素直接覆盖在后面的子元素之上,将眼前的子元素部分和整个挡住。
线性布局LinearLayout,最常用的一种布局格局,所有子控件的对齐情势,取决于如何定义
orientation的性质:vertical 垂直方向
,如果根据那种趋势有着的子控件将听从垂直的点子分布在布局上,每行只允许有一个子元素,horizontal水平方向
,那时子控件将会以水平的自由化分布在布局中。
纯属布局AbsoluteLayout,又可以称为坐标布局,可以平素指定子元素的相对地点,这种布局不难直接,直观性强,然则出于手机显示器尺寸差距相比大,使用相对化定位的适应性会相比较差。
相对布局RelativeLayout,允许子元素指定它们相对于其父元素或兄弟元素的职位,那是实在布局中最常用的布局格局之一。它灵活性大过多,当然属性也多,操作难度也大,属性之间时有爆发争持的的可能也大,使用相对布局时要多做些测试。
报表布局TableLayout,表格布局TableLayout以行列的格局管理子元素,每一行是一个TableRow布局对象,当然也足以是司空见惯的View对象,TableRow里每放一个因素就是一列,总列数由列数最多的那一行决定。
网格布局 GridLayout,在Android
4.0中,新引入的GridLayout网格布局,GridLayout布局使用虚细线将布局划分为行,列和单元格,也支撑一个控件在行,列上都有纵横排列。而GridLayout使用的实际是跟LinearLayout类似的API,只然而是修改了瞬间连锁的价签而已,所以对于开发者来说,领悟GridLayout依然很不难的工作。

  • ###### UI中padding和margin的区别

Padding 用来指定组件内的内容距离组件边界的相距;
Margin用来指定控件与控件之间的离开

  • ###### 哪个组件可以兑现手风琴效果,用来落到实处设置界面的类,已毕抽屉效果, 悬浮窗口?

答:达成手风琴效果(ExpandableListView)
设置界面的类(preferenceActivity)保存到sharedpreference中
抽屉效果(slidingDrawer)组件
浮动窗口: PopWindow,能够完毕类似Dialog和菜单的意义

  • ###### gravity与layout_gravity的区别

Gravity用来指定组件内的始末相对于组件本身的职位
Layout_gravity用来指定组件相对于其父组件的岗位

  • ###### 如何自定义一个Adapter

此起彼伏自Base艾达pter已毕里面的格局,listView在早先绘制的时候,系统第一调用getCount()函数,按照她的回来值获得listView的长短,然后依照这一个尺寸,调用getView()逐一绘制每一行。如若你的getCount()重回值是0的话,列表将不显得同一return
1,就只彰显一行。系统突显列表时,首先实例化一个适配器(那里将实例化自定义的适配器)。当手动已毕适配时,必
须手动映射数据,那亟需重写getView()方法。系统在绘制列表的每一行的时候将调用此措施。getView()有多少个参数,position表示将显得的是第几行,covertView是从布局文件中inflate来的
布局。大家用LayoutInflater的法子将概念好的main.xml文件提取成View实例用来突显。然后
将xml文件中的种种零部件实例化(简单的findViewById()方法)。那样便可以将数据对应到各种零部件上了。不过按钮为了响应点击事件,需求为它添加点击监听器,那样就能捕获点击事件。至此一个自定
义的listView就做到了,现在让我们回过头从新审视那一个历程。系统要绘制ListView了,他率先取得
要绘制的这一个列表的长度,然后开始绘制第一行,怎么绘制呢?调用getView()函数。在这些函数里面
首先取得一个View(实际上是一个ViewGroup),然后再实例并安装各样零部件,突显之。好了,绘制完这一行了。那再绘制下一行,直到绘完甘休。在其实的运行进度中会发现listView的每一行不是难点了,那是因为Button抢夺了listView的要害,只要布局文件中校Button设置为不成难点就OK了

  • ###### ViewFlipper和ViewPager的区别

1.ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。
翻开ViewAnimator类的源码可以看出此类的机能至关重倘若为内部的View切换提供动画效果。该类有如下几个和动画片相关的方法。
2.ViewPager用于达成多页面的切换效果,该类存在于谷歌的包容包里面,所以在引用时记得在BuilldPath中进入“android-support-v4.jar”

  • ###### View更新页面的四种办法

Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable,long);
View.postInvalidate();
View.Invalidate();
在需求刷新的地点调用handle的sendMessage来发送新闻,然后在handle的getMessage里执行
invaliate 或 postinvaliate

  • ###### 如何根据权重完结布局

//权重和父容器orientation有关
horizontal 指水平方向权重 android:layout_width
vertical 指垂直方向权重 android:layout_height
Layout_weight是线性布局,也就是LinearLayout里面用到的
在layout_width设置为fill_parent的时候,layout_weight代表的是你的控件要事先尽可能的大,但尽可能大是有限度的,即fill_parent.
在layout_width设置为wrap_content的时候,layout_weight代表的是您的控件要事先尽可能的小,但那个小是有限度的,即wrap_content.

  • ###### 怎么着促成ViewPager

先在布局文件中调用v4包下的ViewPager,在java代码中伊始化ViewPager,并设置adapter(继承PagerAdapter),再安装监听onPageChangeListener

  • ###### SurfaceView已毕的原理

SurfaceView,它有着独立的绘图表面,即它不与其宿主窗口共享同一个制图表面。由于具有独立的绘图表面,由此SurfaceView的UI就可以在一个独门的线程中开展行绘制。又由于不占用主线程资源,SurfaceView一方面可以落成复杂而高速的UI,另一方面又不会导致用户输入得不到当下响应

  • ###### PathImage是什么

.9.PNG是安卓开发里面的一种十分的图形,那种格式的图样通过ADT自带的编纂工具生成,使用九宫格切分的点子,使图片匡助在android
环境下的自适应呈现。

即便异步下载图片的时候把图纸添加到scrollview中,
你要求几列就在scrollview中放置多少个linearlayout,在scrollview滑动的的时候动态的测量linearlayout随机生成linearlayout的中度

音视频

================================================

  1. ###### 简述音乐广播的不二法门与不相同?

1):MediaPlayer:主要用以广播音频,可以播放视频,然而一般不用其举办视频播放。
2):SoundPool:
主要用于广播一些短暂的声息有些,主要优势是cpu资源占有量低,反应延迟小。

  • ###### 播放视频的落成方式

1)使用系统自带的播放器来播音,指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。
//调用系统自带的播放器
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, “video/mp4”);
startActivity(intent);
2)使用VideoView组件来播放, 可以组合MediaController来已毕播控,
只是无法随便变动视频的尺寸及任务。
3)使用MediaPlayer和SurfaceView来兑现,那种办法很灵巧,可以自定义视频播放的大小和地点。

其他

================================================

  1. ###### 工作中怎么样利用线程池的?

Java通过Executors提供多样线程池,分别为:
1)newCachedThreadPool创造一个可缓存线程池,若是线程池长度超越处理必要,可灵活回收空闲线程,若无可回收,则新建线程。
2)newFixedThreadPool
创设一个定长线程池,可决定线程最大并发数,超出的线程会在队列中等候。
3)newScheduledThreadPool
创立一个定长线程池,匡助定时及周期性职务履行。
4)newSingleThreadExecutor
创制一个单线程化的线程池,它只会用唯一的办事线程来推行职分,保障拥有职分依照指定顺序(FIFO,
LIFO, 优先级)执行。

1.throw则是指抛出的一个具体的这些类型。
2.常备在一个办法(类)的表明处通过throws声明方法(类)可能抛出的非常消息,而在艺术(类)内部通过throw声爱他美(Aptamil)个有血有肉的尤其信息。
3.throws不以为奇并非显示的抓获万分,可由系统活动将兼具捕获的充足音信抛给上级方法;
throw则必要用户自己捕获相关的可怜,而后在对其进行连锁包装,最后在将包裹后的不得了音信抛出。
如若在形式中会有分外被抛出而你又不希望在这一个办法体内对此更加举办处理,可以接纳throws在宣称方法的时候还要评释他也许会跑出的充足。
4.两者地点差别.

  • ###### 怎么样将SQLite数据库(dictionary.db文件)与apk文件一起发表?

解答:可以将dictionary.db文件复制到Eclipse Android工程中的res
aw目录中。所有在res
aw目录中的文件不会被裁减,那样可以一贯领取该目录中的文件。可以将dictionary.db文件复制到res
aw目录中

  • ###### 通过Intent传递一些二进制数据的艺术有如何?

A.使用Serializable接口落成体系化,那是java常用的法子
B.完结Parcelable接口,那里Andriod的一对分类比如Bitmap类就曾经落实了,同时Parcelable在Android
AIDL中调换数据也很广阔

  • ###### 怎么样把一个字符串转换成URI?

uri uri=uri.parse("content://com.changcheng.provider.contactprovider/contact")

  • ###### SIM卡的EF文件有啥意义?

    SIM卡的文件系统有友好的专业,重如果为着和手机通信,SIM本身可以有和好的操作系

  • ###### Android中项目升级注意的标题

在清单文件之中的android:versionCode和android:versionName有版本文件,
客户端同时储存该拔取当前版本号 (SharedPreferences/Sqlite),
每便打开应用,去检测服务器版本号与本土版本号是还是不是同样,要是分歧,则自定义对话框提示是不是下载更新

  • ###### 怎样兑现音信推送,有如何方法,各自优缺点,最常使用哪类?

答:已毕新闻推送的法门有各类,分别是轮询,SMS,C2DM,MQTT,XMPP最常使用的是XMPP,
大家做项目时行使的是XMPP协议
1.XMPP协议,它是一种基于XML的传递协议,具有很强的左右逢原和可增加性。它的特色是将复杂从客户端转换来了劳动器端。GTalk、QQ、IM等都用这些协议。
2.轮询:客户端定时去服务端取或者保持一个长Socket,从实质讲那么些不叫推送,
而是去服务端拽数据。可是贯彻简单,首要弱点:耗能,浪成本户流量等
3.谷歌(Google)的C2DM,具体不细说,缺点,服务器在海外,不是很平静。
4.因而短信情势, 可是很难找到免费短信平台
5.MQTT协议, IBM提供的一种推送服务,不太灵敏

  • ###### 怎样支配耗能量

【在以下景况下功耗比较多:】
1、 大数据量的传导。
2、 不停的在互联网间切换。
3、 解析大量的公文数据。
【控制功耗量:】
1、
在必要网络连接的次序中,首先检查互联网连接是还是不是健康,假如没有互连网连接,那么就不须求实施相应的程序。
2、 使用效用高的数额格式和剖析方法。(fastJson,LoganSquare-master)
3、使用GZIP压缩情势下载数据,能裁减网络流量
4、 其余一些优化措施:A. 回收java对象,越发是较大的java对像;
B.对固定要求不是太高的话尽量不要使用GPS定位,可能应用wifi和运动互连网cell定位即可,GPS定位消耗的电量远远胜出运动互联网稳定;
C.尽量不要使用浮点运算;
D.获取显示器尺寸等音讯可以利用缓存技术,不须要展开反复伸手。

  • ###### Gps定位和网络稳定的区分

GPS定位需安装权限android.permission.ACCESS_LOCATION_FINE
互连网稳定需安装权限android.permission.ACCESS_LOCATION_COARSE
即GPS定位比互联网稳定在精确度方面更精准,但在速度方面稍差一点,而且GPS定位相符在露天条件下利用,网络稳定在室内,室外都足以。

  • ###### 安卓的种类架构

详细链接
应用层:使用Java语言进行开发的部分应用程序
选用框架层:首如果谷歌公布的片段操作协理的类库(API框架),开发人士可以行使这个类库方便的进展程序支付,可是在开发时务必听从框架的开发规范
系统运行库层:当使用安卓框架层举办开发时,安卓操作系统会自动使用一些c/c++的库文件来支撑所采用的种种零部件,使其可以更好的为顺序服务;
Linux内核层:安卓操作系统重假若基于Linux内核,程序的安全性,驱动程序,进程管理等都由Linux内核提供。

  • ###### 安卓上安装了八个浏览器,能不能指定页面访问;

经过一贯发送URI把参数带过去,或者通过Manifest里的intentfilter的data属性

  • ###### Android dvm的长河和Linux的长河, 应用程序的进度是还是不是为同一个定义?

DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进度中运作,都有着一个单独的Dalvik虚拟机实例。而每一个DVM都是在Linux
中的一个进程,所以说可以认为是同一个定义。

  • ###### 按照自己的通晓描述下Android数字签名。

(1)所有的应用程序都必须有数字证书,Android系统不会设置一个尚未数字证书的应用程序
(2)Android程序包使用的数字证书可以是自签署的,不需要一个上流的数字证书机构签署认证
(3)若是要规范宣布一个Android程序,必须使用一个适中的私钥生成的数字证书来给程序签名,而无法应用adt插件或者ant工具生成的调试证书来公布。
(4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查注明的有效期。若是程序已经安装在系统中,即使证书过期也不会潜移默化程序的正规机能。

答:
客户端缓存机制是android应用开发中国和澳大利亚联邦(Commonwealth of Australia)常首要的一项工作,使用缓存机制不仅可以为用户节省3G流量,同时在用户体验方面也是可怜好的选拔,比如有些情报客户端帮助离线格局,也是经过缓存机制落到实处的.缓存机制分为两有的,一部分是文字缓存,另一局地是多媒体文件缓存.
文字缓存有二种已毕:
json,1)可以将与服务器交互拿到的json数据或者xml数据存入sd卡中,并在数据库添加该数额的记录.添加数据库记录时,提供八个重点字段,一个是呼吁的URL,另一个则是本土保存后的文件地方,每一趟加载数据此前都会根据URL在数据库中找找
2)将JSON数据解析后装入List<Map>对象中,然后遍历List,将数据统统写入相应的数量库表结构中,未来每回向服务器发起呼吁此前可以先在数据库中找找,即便有直接重返.
多媒体文件缓存:主要指图片缓存
图表的缓存可以依据近期些天期,时间为名字缓存到SD闪存卡中的指定图片缓存目录,同时数据库中做相应记录,记录方式可以应用多个主要字段控制,一个字段是该图形的URL地址,另一个字段是该图形的本机地址.取图片时依据URL在多少中搜索,假若没有则一连服务器下载,下载之后再服务器中作出相应记录
缓存文件删除策略:
1.每一个模块在每一遍客户端自动或者用户手动更新的时候删除相应模块的缓存文件,仁同一视新下载新的缓存文件.
2.在装置界面中提供删除缓存的作用,点击后删除本机所有缓存.

  • ###### Ddms和Traceview的区别

DDMS是一个程序执行查看器,在其间可以望见线程和货栈等音信,TraceView是程序品质分析器

  • ###### 程序之间的亲和性的精晓

1.默许情状下一个应用的所有Activity都是具备相同的affinity,都是从application中再三再四,application的affinity默许就是manifest的包名。
2.affinity对Activity来说,就如身份证同等,可以告诉所在的Task,自己属于中间的一员。
3.利用场面:
a:依据affinity重新为Activity选拔恰当的宿主Task;
b:与allowTaskReparenting属性合作;
c:启动Activity使用Intent设置了FLAG_ACTIVITY_NEW_TASK标记。

API(Application Programming
Interface,应用程序编程接口)是局地优先定义的函数,目标是提供应用程序与开发人士基于某软件或硬件的以访问一组例程的力量,而又无需访问源码,或精晓其中工作体制的细节.
简简单单的话,就是一套可供调用的体系接口.

  • ###### Android项目标目录结构

1)src目录:src(即SourceCode),src目录用来存放在应用程序中保有的源代码,代码的源文件一般存放在该目录下的相应的包下。
2)gen目录:gen目录,该目录下一般唯有一个文书,即R文件。该公文夹下边有个R.java文件,R.java是在确立项目时自动生成的,定义该类型拥有资源的目录。
3)Android4.1索引:该公文夹下包涵android.jar文件,那是一个Java归档文件,其中富含打造应用程序所需的具有的AndroidSDK库(如Views、Controls)和APIs。
因此android.jar将团结的应用程序绑定到AndroidSDK和AndroidEmulator,那允许你选拔具有Android的库和包,且使您的应用程序在合适的环境中调剂。
4)assets目录:该目录存放应用程序中利用的外部资源文件,如声音视频等,在Android程序中得以由此输入/输出流对该目录中的文件进行读写。
5)res目录:该目录用来存放程序那用到的图纸、界面布局文件及XML格式的叙述文件。该目录下有四个目录。新建一Android项目,在res目录下一般会有drawable,layout,valuse多少个目录。drawable用来存放在图片资源,目录下一般会有七个目录分别存放高中低两种差距分辨率的图样,layout目录用来存放在应用程序的界面布局文件,values目录下存放字符串资源,颜色资源,数组资源等XML文件。
6)AndroidManifest.xml

  • ###### Manifest中放什么东西

AndroidManifest.xml是各样android程序中务必的文书。它身处整个项目的根目录,描述了package中爆出的零部件(activities,services,等等),他们分其余完结类,各类能被处理的数额和开行地点。除了能宣称程序中的Activities,ContentProviders,Services,和IntentReceivers,还是能指定permissions和instrumentation(安全控制和测试),四大组件,意图,权限,第三方key,版本号等

  • ###### Application类的效劳

Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创立一个
application对象,用来储存系统的部分音信。平常大家是不须要指定一个Application的,那时系统会活动帮大家成立,要是需要创立自己
的Application,也很不难成立一个类继承
Application并在manifest的application标签中开展挂号(只要求给Application标签增添个name属性把团结的
Application的名字定入即可)。
android系统会为每个程序运行时成立一个Application类的靶子且仅创设一个,所以Application可以说是单例
(singleton)格局的一个类.且application对象的生命周期是成套程序中最长的,它的生命周期就等于这一个顺序的生命周期。因为它是大局
的单例的,所以在分化的Activity,Service中得到的目标都是同一个目的。所以通过Application来进展一些,数据传递,数据共享
等,数据缓存等操作。

  • ###### Activity中 this、getApplicationContext和getActivity的区别

this:代表当前,在Activity当中就是象征当前的Activity,换句话说就是Activity.this在Activity当中可以缩写为this.
getActivity()指的是在fragment当中调用得到她无处的Activity
getApplicationContext():生命周期是百分之百应用,应用摧毁,它才摧毁。

  • ###### asset和res的区别

答:res/raw和assets的相同点:
两岸目录下的文本在包装后会纹丝不动的保存在apk包中,不会被编译成二进制。
res/raw和assets的不相同点:
1)res/raw中的文件会被映射到R.java文件中,访问的时候一向运用资源ID即
R.raw.filename;assets文件夹下的文本不会被映射到R.java中,访问的时候须要AssetManager类。
2)res/raw不可以有目录结构,而assets则足以有目录结构,也就是assets目录下可以再建立文件夹
3)读取文件资源举例:
读取res/raw下的文书资源,通过以下措施获取输入流来举行写操作
InputStream is = getResources().openRawResource(R.raw.filename);
读取assets下的文书资源,通过以下办法得到输入流来进行写操作

AssetManager am = null; 
am = getAssets(); 
InputStream is = am.open("filename");
  • ###### webservice的UDDI是什么

UDDI 是一种目录服务,公司能够利用它对 Web services
进行注册和查找。UDDI,英文为 “Universal Description, Discovery and
Integration”,可译为“通用描述、发现与集成服务”。

  • ###### 程序运行的权力和文件系统权限的区分

运作时权限 Dalvik( android 授权) 文件系统 linux 内核授权

  • ###### 对android系统的通晓

5大优势:
一、 开放性
二、 挣脱运营商的束缚
三、 丰硕的硬件拔取
四、 不受任何限制的开发商
五、 无缝结合的谷歌(Google)应用
Android的5大不足
一、 安全和隐衷
二、 首先开卖Android手机的不是最小运营商
三、 运营商仍是可以影响到Android手机
四、 同类机型用户收缩
五、 过分依赖开发商贫乏标准配置

  • ###### 手机上选择的传感器有何样

define SENSOR_TYPE_ACCELEROMETER 1 //加速度
define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
define SENSOR_TYPE_ORIENTATION 3 //方向
define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪
define SENSOR_TYPE_LIGHT 5 //光线感应
define SENSOR_TYPE_PRESSURE 6 //压力
define SENSOR_TYPE_TEMPERATURE 7 //温度
define SENSOR_TYPE_PROXIMITY 8 //接近
define SENSOR_TYPE_GRAVITY 9 //重力
define SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加快度
define SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量

================================================
【ListView相关解析和面试题】
【关于Android四大组件的相关面试题】
【自定义View全解】
【View事件分发】
【自动登录的兑现】
更加多内容请关心
本人的专题
转发请申明
原稿链接:
http://www.jianshu.com/users/c1b4a5542220/latest\_articles

相关文章

网站地图xml地图