大家依旧多学一门技术来丰盛一下祥和好了,全体子控件的对齐格局

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用来内定组件相对于其父组件的地点

  • ###### 怎么着自定义贰个Adapter

接轨自BaseAdapter完成里面包车型大巴章程,listView在初阶绘制的时候,系统第2调用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用于完结多页面包车型客车切换效果,该类存在于谷歌(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,它富有独立的绘图表面,即它不与其宿主窗口共享同3个绘制表面。由于拥有独立的绘图表面,因而SurfaceView的UI就足以在三个单身的线程中开展行绘制。又由于不占用主线程财富,SurfaceView一方面能够兑现复杂而急迅的UI,另一方面又不会导致用户输入得不到马上响应

  • ###### PathImage是什么

.9.PNG是安卓开发里面包车型大巴一种特有的图纸,那种格式的图形通过ADT自带的编辑工具生成,使用九宫格切分的不二法门,使图片协理在android
环境下的自适应展示。

纵使异步下载图片的时候把图片添加到scrollview中,
您须要几列就在scrollview中放置几个linearlayout,在scrollview滑动的的时候动态的测量linearlayout随机生成linearlayout的惊人

序言:笔者学了一年多的C#(从学编制程序算起,也未曾两年,笔者以后大二下),中间也直接在学WP开发,即便技术不咋地,很渣渣,但微软在Build大会上发布的政策让自家以为有必不可少学习一下安卓开发了。关于微软的国策,没什么好说的,唯有平台强大了,开发者才能存活,对于微软乎乎.NET开发者来说,那是一荣俱荣,一毁都毁的事。近期来看WP开发者或然内心有一些负伤,可是在民用看来那都没事儿,大家依旧多学一门技术来增进一下祥和好了。笔者在学习安卓的同时照旧会持续学习.NET方面的技艺,对于Java,大二上学期上过那门课,学的剧情很浅显,而且当时也没怎么学,以后总的来说依旧得补补了,趁着大二下刚好有安卓这么课好好学习一下了。

音视频

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

  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
成立1个定长线程池,可控制线程最大并发数,超出的线程会在队列中伺机。
3)newScheduledThreadPool
成立三个定长线程池,帮助定时及周期性任务履行。
4)newSingleThreadExecutor
创立3个单线程化的线程池,它只会用唯一的行事线程来推行任务,有限协理全数职务遵照内定顺序(FIFO,
LIFO, 优先级)执行。

1.throw则是指抛出的四个有血有肉的老大类型。
2.惯常在2个主意(类)的表明处通过throws申明方法(类)大概抛出的不得了音信,而在格局(类)内部通过throw声澳优个有血有肉的十分新闻。
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中调换数据也很普遍

  • ###### 怎么样把一个字符串转换来USportageI?

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

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

【在以下情形下功耗相比较多:】
一 、 大数据量的传输。
贰 、 不停的在互联网间切换。
叁 、 解析大量的文本数据。
【控制耗电量:】
壹 、在急需互联网连接的顺序中,首先检查互联网连接是或不是健康,即使没有互连网连接,那么就不须求进行相应的次序。
2、 使用效用高的数量格式和剖析方法。(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语言实行付出的局地应用程序
动用框架层:首借使谷歌发布的一些操作支持的类库(API框架),开发职员能够应用那么些类库方便的进行程序开发,然而在开发时必须遵循框架的付出规范
系统运转库层:当使用安卓框架层进行开发时,安卓操作系统会自行使用一些c/c++的库文件来支撑所运用的顺序零部件,使其能够更好的为顺序服务;
Linux内核层:安卓操作系统首若是基于Linux内核,程序的安全性,驱动程序,进度管理等都由Linux内核提供。

  • ###### 安卓上设置了多少个浏览器,能或无法钦定页面访问;

透过一贯发送ULX570I把参数带过去,大概经过Manifest里的intentfilter的data属性

  • ###### Android dvm的进程和Linux的进度, 应用程序的经过是还是不是为同二个定义?

DVM指dalivk的虚拟机。每三个Android应用程序都在它本身的经过中运转,都存有三个单身的Dalvik虚拟机实例。而每种DVM都以在Linux
中的贰个历程,所以说可以认为是同3个定义。

  • ###### 依照自个儿的理解描述下Android数字签名。

(1)全部的应用程序都不能不有数字证书,Android系统不会安装叁个不曾数字证书的应用程序
(2)Android程序包使用的数字证书能够是自签署的,不必要二个高尚的数字证书机构签订契约认证
(3)借使要正式颁发八个Android程序,必须运用2个相宜的私钥生成的数字证书来给程序签名,而不能够采纳adt插件或然ant工具生成的调节和测试证书来发布。
(4)数字证书都以有有效期的,Android只是在应用程序安装的时候才会检讨注明的有效期。假如程序已经设置在系统中,即便证书过期也不会影响程序的例行机能。

答:
客户端缓存机制是android应用开发中这些主要的一项工作,使用缓存机制不仅能够为用户节省3G流量,同时在用户体验方面也是相当好的精选,比如有些情报客户端协助离线方式,也是经过缓存机制落实的.缓存机制分为两有些,一部分是文字缓存,另一有的是多媒体文件缓存.
文字缓存有两种落成:
1)能够将与服务器交互获得的json数据大概xml数据存入sd卡中,并在数据库添加该数据的记录.添加数据库记录时,提供多个首要字段,3个是呼吁的UWranglerL,另3个则是本土保存后的文本地点,每回加载数据在此以前都会依据U牧马人L在数据库中摸索
2)将JSON数据解析后装入List<Map>对象中,然后遍历List,将数据统统写入相应的数码库表结构中,未来每一趟向服务器发起呼吁此前能够先在数据库中摸索,即便有一向再次回到.
多媒体文件缓存:首要指图片缓存
图表的缓存能够依照当下日子,时间为名字缓存到T-Flash卡中的钦定图片缓存目录,同时数据库中做相应记录,记录格局能够利用七个关键字段控制,七个字段是该图片的URAV4L地址,另三个字段是该图形的本机地址.取图片时依照UTucsonL在数据中检索,倘若没有则连年服务器下载,下载之后再服务器中作出相应记录
缓存文件删除策略:
1.每2个模块在每一次客户端自动或许用户手动更新的时候删除相应模块的缓存文件,并再一次下载新的缓存文件.
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目录,该目录下一般唯有叁个文件,即奇骏文件。该公文夹上面有个PRADO.java文件,揽胜.java是在确立项目时自动生成的,定义该类型拥有财富的目录。
3)Android4.1索引:该文件夹下包涵android.jar文件,那是1个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框架的2个种类组件,当android程序运行时系统会创建一个application对象,用来储存系统的一部分音讯。平常大家是不供给钦定三个Application的,这时系统会自行帮大家创立,如若须求创造本身的Application,也很简短创设2个类继承
Application并在manifest的application标签中展开登记(只要求给Application标签扩展个name属性把自个儿的
Application的名字定入即可)。
android系统会为各类程序运转时创设七个Application类的指标且仅创制1个,所以Application能够说是单例
(singleton)方式的1个类.且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中的文件会被映射到大切诺基.java文件中,访问的时候平素利用能源ID即
猎豹CS6.raw.filename;assets文件夹下的文书不会被映射到Tiguan.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大优势:
一、 开放性
贰 、 挣脱运行商的羁绊
三 、 丰富的硬件选择
四 、 不受任何限制的开发商
5、 无缝结合的谷歌应用
Android的5大不足
① 、 安全和隐衷
贰 、 首先开卖Android手提式无线电电话机的不是最小运营商
叁 、 运转商仍旧能够影响到Android手提式有线电话机
肆 、 同类机型用户减弱
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_VECTOGL450 11//旋转矢量

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

安卓的开支条件在此之前早已搭建好,未来直接来打听一下安卓应用程序结构以及运营的法则。

1.Android工程的文件系统结构

澳门皇冠官网app 1

src:   
java源代码存放的目录。在src文件夹里面能够创立若干个包,用以分类存放Java源程序(.java文件)

gen:  自动生成目录 
gen目录中存放全体由Andriod开发工具自动生成的文书。目录中最要紧的正是CRUISER.java文件(gen\包名\哈弗.java)。开发工具会活动依照你放入res目录的能源,同步创新修改奥德赛.java文件。由于卡宴.java文件是由开发工具自动生成,应防止手工业修改Lacrosse.java。奥迪Q5.java在采取中起到了字典的职能,它涵盖了各类财富的id,通过宝马7系.java,应用能够很有益地找到呼应能源。

assets:
财富目录,Andriod除了提供/res目录存放财富文件外,在/assets目录也得以存放财富文件,而且/assets目录下的能源文件不会再大切诺基.java自动生成id,所以读取/assets目录下的文件必须钦定文件的路径,而assets中的财富文件不会被编写翻译,直接打包到利用中,assets文件夹扶助任意深度的子目录。

bin:用于存放编写翻译后的应用程序

libs:存放应用程序用到的第3方JA路虎极光。

res:
 财富(Resource)目录   
在这些目录中能够找到应用使用到的各样财富。如xml界面文件,图片或数额等。res文件夹内的能源文件最后会被打包到编译后的.java文件中,res文件夹不帮忙深度的子目录。

       
res/layout:存放拓展名为.xml的布局文件,每二个布局文件对应1个Activity。

       
res/values:strings.xml是其一文件夹最根本的文书,存放着布局文件中央控制件对象的属性值,与应用程序的国际化相关。

       
res/drawable:图片文件夹

       
res/raw:存放音频能源文件等

AndriodManifest.xml:项目清单文件   
那些文件列出了应用程序所提供的效率,开发好的各样零件(Activity、ContentProvider、布罗兹cast、Service)须要在该公文中开始展览安排,若是利用使用到了系统内置的运用(如电话服务、网络服务、短信服务、GPS服务等等),还需在该公文中扬言使用权限。(安装的时候被操作系统读取)

 

2.编写翻译结果

  .java–》.class–》.dx–》.dex–打包(签名)–》.apk

  编写翻译结果放在项目根目录下的bin文件夹下 

   
bin/classes:存放编写翻译后的Java类文件

   
bin/classes.dex:存放基于编写翻译后的Java类成立的可执行文件

   
bin/resources.ap_澳门皇冠官网app,:存放应用程序的财富

   
bin/XXX.apk:实际的Android应用程序。.apk文件其实是3个ZIP压缩文件,包罗.dex、财富的编写翻译版(resources.arsc)、其余未编写翻译的财富以及AndriodManifest.xml文件。

 

3.AndriodManifest.xml文本详解

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dialogdemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

根节点<manifest>中的package属性指西夏单文件所对应的应用程序包,android:versionName是应用程序的本子名或编号,能够是任意合适的值,android:versionCode则必须是三个平头,评释应用程序的版本号。系统能够依照那几个特点来规定应用程序是否另三个本子的翻新。
<uses-sdk>:表示最近应用程序基于哪个版本的SDK创设。

<application>:定义与日前描述文件对应的应用程序的细节新闻。

<activity>:相当于Windows编制程序里面包车型大巴2个窗体(Form)。android:name表示完结Activity的类,android:label表示用于体现的Activity的名字。
<intent-filter>子成分用于描述展现当前Activity在哪些动静下被调用。
它里面包车型客车
              
<action android:name=”android.intent.action.MAIN” />
              
<category android:name=”android.intent.category.LAUNCHER”
/>

那两项参数将大家的应用程序显示在小叔子大应用程序的开发银行列表上,表示应用程序的入口,使用的时候理应注意它们仅可以产出在多少个Activity里面,那个Activity便是应用程序的主Activity。

在这一个清单文件之中还有一部分并未出现,但然后会不时使用的要素:

<uses-permission>:建议应用程序符合规律运营所需的权能。
<permission>:为活动和劳务注解权限,表示其他应用程序要使用当前应用程序的数量或逻辑必须具有的权柄。
<instrumentation>:表示供给在首要系统事件中须要调用的代码。
<uses-library>:引入可选的Android组件,例如地图服务。

 

4.Android应用程序生命周期

  
与大多数字传送统应用程序平台分化,Android应用程序不能够操纵它们自个儿的生命周期。应用程序组件必须监听应用程序状态的变通并做出适度的反响,还要为随时被终止做好准备。默许意况下,每一个Android应用程序都以透过它们自个儿的历程运营的,每四个历程都运作在单身的Dalvik实例中。每二个应用程序的内存和进程管理都以由运行时特地开始展览处理的。

  
Android会主动管理它的财富,它会选拔别的方法来保险平稳流畅的用户体验。那就意味着在供给的时候,进度(以及它们的应用程序)有时候会在尚未警示的情况下被终止,为高优先级的应用程序释放能源。

   澳门皇冠官网app 2

    活动经过:正在和用户进行相互的应用程序进度。

     可知进度:驻留“可知”Activity的经过。

    
运维服务进度:已经运维的Service进度。

    
后台进度:不可知、并且没有此外正在运维的Service的Activity的长河。

    
空进度:应用程序的生命周期已经结束,但仍保存在内部存储器中的进度。Android通过维护这些缓存来压缩应用程序再度运维时的开发银行时间。

 

5.一个简单易行的Android应用程序

     先New1个Android
Application
Project,在工程对应的src文件夹的最内层找到变化的.java文件,添加如下代码: 

public class MainActivity extends ActionBarActivity implements View.OnClickListener{
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        btn=new Button(this);
        btn.setOnClickListener(this);
        updateTime();
        setContentView(btn);
    }
    private void updateTime() {
        // TODO Auto-generated method stub
        btn.setText(new Date().toString());
    }
    @Override
    public void onClick(View arg0) {
        updateTime();
    }
}

以此类里面包车型地铁OnCreate方法会在应用程序运行的时候自动被系统调用,它传播参数是savedInstanceState,类型是Bundle,Bundle是二个数据参数,一般用来Activity之间的数量传送。在那个艺术里面,首先做的是与超类联系起来,以实现全数Activity的初阶化。随后更创办了叁个按钮实例,并为按钮设置事件监听器,接着调用updateTime()方法,最终把按钮设置为剧情视图。
这几个程序最后的功能就是页面内唯有1个按钮,用于展示最后1回按下它的年月(假若没有按就显得应用程序运营的岁月)。

大家知道Android将用户界面和财富从作业逻辑中分离出来,并利用XML文件来拓展界面布局,而复杂的工作逻辑交给java代码来实现,所以大家一般很少使用地点的艺术来创设大家的应用程序。接下来我们把下面的应用程序来改变一下。

 res/layout/activity_main.xml:

   <Button   xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="" />

xmlns:android=”http://schemas.android.com/apk/res/android"这个只能出现在布局文件的顶层元素里面,而顶层元素一般是一个布局容器。我们这里只有一个Button元素就直接放Button里了。

android:id属性为Button钦点1个唯一标识符,我们在.java文件里拿走布局文件里的因素时就须求以此本性。

android:text提醒按钮上展现的文书。

android:layout_width和android:layout_height提醒按钮的宽窄和中度与父成分的涉及,我们那一个实例中按钮会占据整个荧屏。

 

.java文件:

public class MainActivity extends ActionBarActivity implements View.OnClickListener{
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn=(Button)findViewById(R.id.btn);
        btn.setOnClickListener(this);
        updateTime();
    }
    private void updateTime() {
        // TODO Auto-generated method stub
        btn.setText(new Date().toString());
    }
    @Override
    public void onClick(View arg0) {
        updateTime();
    }
}

setContentView(R.layout.activity_main);那个和我们此前盛传四个View的子类(即Button)的实例是一样的。布局中的全部财富都得以通过陆风X8.layout加上布局文件的名字来拜访;例如:LX570.layout.activity_main访问的正是res/layout/activity_main.xml

btn=(Button)findViewById(福特Explorer.id.btn);//通过findViewById方法来博取布局文件中标识为@+id/btn的Button成分

运营效果与原本的一律。

从那之后已经领会了安卓开发的片段基础知识,包蕴Android工程的文件系统结构、编写翻译的结果、还有Manifest清单文件以及应用程序的生命周期和简单Android应用程序的详解。感觉写得依旧相比较乱,由于是新手,错误不足请咱们多多指教。

前面一头扎进C#,用着VS的确很爽快,以往用Eclipse很不习惯,感觉安卓写起来也真正比WP复杂很多,加油啊!

 

相关文章