View部分

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

  1. ###### Android自定义组件已毕思路

帧布局(框架布局)FrameLayout,在那几个布局中,所有的子成分统统放于那块区域的左上角,并且前边的子成分直接覆盖在头里的子元素之上,将前方的子成分部分和总体遮挡。
线性布局LinearLayout,最常用的一种布局方式,全数子控件的对齐格局,取决于怎么样定义
orientation的性质:vertical 垂直方向
,如果依据那种倾向有着的子控件将根据垂直的章程分布在布局上,每行只允许有3个子成分,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用来内定组件相对于其父组件的地方

  • ###### 怎样自定义3个Adapter

后续自BaseAdapter完毕里面的主意,listView在始发绘制的时候,系统率先调用getCount()函数,按照他的回到值得到listView的长短,然后依照这几个长度,调用getView()逐一绘制每一行。即使您的getCount()再次来到值是0的话,列表将不出示同一return
1,就只浮现一行。系统来得列表时,首先实例化2个适配器(那里将实例化自定义的适配器)。当手动达成适配时,必
须手动映射数据,那须求重写getView()方法。系统在绘制列表的每一行的时候将调用此措施。getView()有五个参数,position表示将显得的是第几行,covertView是从布局文件中inflate来的
布局。大家用LayoutInflater的艺术将定义好的main.xml文件提取成View实例用来显示。然后
将xml文件中的各类零部件实例化(简单的findViewById()方法)。那样便可以将数据对应到种种零部件上了。不过按钮为了响应点击事件,要求为它添加点击监听器,那样就能捕获点击事件。至此贰个自定
义的listView就做到了,未来让大家回过头从新审视这些历程。系统要绘制ListView了,他第三得到要绘制的那个列表的尺寸,然后起首绘制第3行,怎么绘制呢?调用getView()函数。在这么些函数里面
首先得到几个View(实际上是二个ViewGroup),然后再实例并设置各类零部件,突显之。好了,绘制完这一行了。那再绘制下一行,直到绘完甘休。在实际上的运作进程中会发现listView的每一行没有典型了,那是因为Button抢夺了listView的点子,只要布局文件中将Button设置为没有典型就OK了

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

1.ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。
翻看ViewAnimator类的源码可以见到此类的效力重大是为内部的View切换提供动画效果。该类有如下多少个和卡通片相关的法子。
2.ViewPager用于贯彻多页面的切换效果,该类存在于谷歌(Google)的包容包里面,所以在引用时记得在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
创立2个定长线程池,可决定线程最大并发数,超出的线程会在队列中等候。
3)newScheduledThreadPool
成立二个定长线程池,协助定时及周期性职责执行。
4)newSingleThreadExecutor
创制两个单线程化的线程池,它只会用唯一的做事线程来实施职分,保障拥有任务根据钦定顺序(FIFO,
LIFO, 优先级)执行。

1.throw则是指抛出的二个现实的越发类型。
2.平凡在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中互换数据也很常见

  • ###### 怎么样把三个字符串转换到U中华VI?

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提供的一种推送服务,不太灵活

  • ###### 如何决定耗能量

【在以下情状下功耗比较多:】
一 、 大数据量的传导。
二 、 不停的在网络间切换。
③ 、 解析多量的公文数据。
【控制功耗量:】
一 、在急需互联网连接的次序中,首先检查互连网连接是不是符合规律,如若没有互联网连接,那么就不必要实践相应的程序。
贰 、 使用功效高的数额格式和剖析方法。(fastJson,LoganSquare-master)
三 、使用GZIP压缩方式下载数据,能收缩互连网流量
四 、 其他一些优化措施: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语言进行开发的一部分应用程序
应用框架层:紧如若谷歌(谷歌(Google))颁发的有的操作协助的类库(API框架),开发人员可以接纳那个类库方便的拓展程序开发,可是在支付时必须遵循框架的支出条件
系统运转库层:当使用安卓框架层开展支付时,安卓操作系统会自动使用部分c/c++的库文件来支撑所拔取的相继零部件,使其可以更好的为顺序服务;
Linux内核层:安卓操作系统重假诺基于Linux内核,程序的安全性,驱动程序,进度管理等都由Linux内核提供。

  • ###### 安卓上设置了多个浏览器,能不能钦赐页面访问;

透过直接发送U中华VI把参数带过去,可能通过Manifest里的intentfilter的data属性

  • ###### Android dvm的历程和Linux的历程, 应用程序的长河是或不是为同1个定义?

DVM指dalivk的虚拟机。每1个Android应用程序都在它和谐的长河中运作,都抱有二个独门的Dalvik虚拟机实例。而逐个DVM都以在Linux
中的二个历程,所以说能够认为是同1个定义。

  • ###### 依照自身的知晓描述下Android数字签名。

(1)全数的应用程序都必须有数字证书,Android系统不会设置贰个从未数字证书的应用程序
(2)Android程序包使用的数字证书可以是自签定的,不需求多少个胜过的数字证书机构签署认证
(3)要是要标准揭橥二个Android程序,必须运用二个适当的私钥生成的数字证书来给程序签名,而不可以动用adt插件也许ant工具生成的调剂证书来发表。
(4)数字证书都以有有效期的,Android只是在应用程序安装的时候才会检讨阐明的有效期。假设程序已经设置在系统中,固然证书过期也不会影响程序的符合规律化机能。

答:
客户端缓存机制是android应用开发中非常紧要的一项工作,使用缓存机制不仅可以为用户节省3G流量,同时在用户体验方面也是尤其好的挑选,比如有些情报客户端资助离线形式,也是透过缓存机制已毕的.缓存机制分为两部分,一部分是文字缓存,另一有个别是多媒体文件缓存.
文字缓存有三种完毕:
1)可以将与服务器交互得到的json数据依旧xml数据存入sd卡中,并在数据库添加该多少的记录.添加数据库记录时,提供五个至关紧要字段,一个是呼吁的UENVISIONL,另一个则是地方保存后的文书地方,每便加载数据以前都会依照UENCOREL在数据库中寻找
2)将JSON数据解析后装入List<Map>对象中,然后遍历List,将数据统统写入相应的多少库表结构中,以后每一趟向服务器发起呼吁之前可以先在数据库中寻找,若是有间接再次来到.
多媒体文件缓存:首要指图片缓存
图形的缓存可以依照当今日子,时间为名字缓存到SD读取卡中的内定图片缓存目录,同时数据库中做相应记录,记录形式能够运用多少个第贰字段控制,三个字段是该图片的U福睿斯L地址,另三个字段是该图形的本机地址.取图片时根据UTucsonL在数量中搜寻,倘使没有则连接服务器下载,下载之后再服务器中作出相应记录
缓存文件删除策略:
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目录,该目录下一般唯有1个文件,即奥迪Q5文件。该公文夹上边有个R.java文件,凯雷德.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框架的1个系统组件,当android程序运维时系统会创建3个application对象,用来囤积系统的片段消息。平日大家是不要求内定三个Application的,那时系统会活动帮大家创造,尽管须要创立本人的Application,也很粗略创制多个类继承
Application并在manifest的application标签中开展注册(只需求给Application标签增添个name属性把温馨的
Application的名字定入即可)。
android系统会为各种程序运维时创立2个Application类的靶子且仅创设1个,所以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中的文件会被映射到宝马X5.java文件中,访问的时候一向运用资源ID即
GL450.raw.filename;assets文件夹下的文本不会被映射到奥迪Q5.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大优势:
一、 开放性
贰 、 挣脱运转商的牢笼
三 、 丰硕的硬件接纳
四 、 不受任何限制的开发商
五 、 无缝结合的谷歌应用
Android的5大不足
一 、 安全和隐秘
贰 、 首先开卖Android手机的不是最小运行商
③ 、 运行商照旧可以影响到Android手机
4、 同类机型用户裁减
5、 过分爱惜开发商缺乏标准配置

  • ###### 手机上应用的传感器有怎么着

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_VECTO奥迪Q5 11//旋转矢量

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

相关文章

网站地图xml地图