踏实做好一天,就能做好一个星期,一个月,一年,一辈子.........11.Android学习笔记Eclipse中一个安卓项目的组成部分一、总框架应用名:也就是应用装好后的名称(与应用管理的名称可能不同)源代码目录包名,这个包名与一开始建项目时的唯一标识包名要区分.Activity(活动类,类似main方法),一个应用只有一个起作用.切换Activity类在AndroidMainfext.xml中android:name属性自动生成,用于自动编译检查代码是否正确资源文件与代码之间的桥梁,生成资源文件的映射,让外部调用版本类库jar包,在项目下建一个libs目录后,里的jar包会自动加载到此.资源路径,不会在R文件注册二进制文件,包括class、资源文件、dex、apk等资源目录-一旦定义好就会在R.java类中自动生成映射DPI是“dotperinch”的缩写,每英寸像素数。放高分辨率的图片,如WVGA(480x800),FWVGA(480x854)放低分辨率的图片,如QVGA(240x320)放中等分辨率的图片,如HVGA(320x480)放超高分遍率的图片,如dpi一般是320,里面是main.xml里面定义view元素及布局.里面是main.xml引用的String.xml,便于国际化清单文件,在软件安装的时候被读取,定义软件的关键配置用来混淆代码的配置文件,防止别人反编译供Eclipse使用,读取该项目使用Android版本号。二、Activity类踏实做好一天,就能做好一个星期,一个月,一年,一辈子.........2三、R类四、res资源包所有资源文件都在这个包下就会自动在R.java文件里注册所以,只在有资源文件都放在这个包下,并建立对应的文件夹,好区分自带以下三个文件夹(一)drawable:图片资源包里面有四种屏幕类型.每种类型对应不同的分辨率图片不能大写(二)layout资源包(三)values资源包@String五、AndroidManifest.xml?xmlversion=1.0encoding=utf-8?manifestxmlns:android==sent.msnandroid:versionCode=1android:versionName=1.0uses-sdkandroid:minSdkVersion=10/uses-permissionandroid:name=android.permission.CALL_PHONE/uses-permissionandroid:name=android.permission.SEND_SMS/applicationandroid:icon=@drawable/ic_launcherandroid:label=@string/app_nameactivityandroid:name=.SentMSNActivity2android:label=@string/app_nameintent-filteractionandroid:name=android.intent.action.MAIN踏实做好一天,就能做好一个星期,一个月,一年,一辈子.........3/categoryandroid:name=android.intent.category.LAUNCHER//intent-filter/activity/application/manifest六、proguard-project.txt七、profect.properties八、运行流程Android常用数据收集一、Android常用权限sd卡写入权限:WRITE_EXTERNAL_STORAGEuses-permissionandroid:name=android.permission.WRITE_EXTERNAL_STORAGE/二、安卓中文件的几种保存模式安卓内核是Linux,所以只要有文件,就有权限区分.看情况:如果在Activity中,Context可以省略.Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPENDContext.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否踏实做好一天,就能做好一个星期,一个月,一年,一辈子.........4有权限读写该文件。MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。三、Android的计量单位px,in,mm,pt,dp,dip,sppx:是屏幕的像素点in:英寸mm:毫米pt:磅,1/72英寸dp:一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1pxdip:等同于dpsp:同dp相似,但还会根据用户的字体大小偏好来缩放。建议使用sp作为文本的单位,其它用dipdip和px的关系:QVGA:density=0.75;densityDpi=120;QVGA(240*320)HVGA:density=1.0;densityDpi=160;HVGA(320*480)VGA:density=1.0;densityDpi=160;VGA(480*640)WVGA:density=1.5;densityDpi=240;WVGA(480*800)WQVGA:density=2.0;densityDpi=120;WQVGA(240*400)densityDip值表示每英寸有多少个显示点,与分辨率是两个概念不同densityDpi下屏幕分辨率信息,以480dip*800dip的WVGA(density=240)为例densityDpi=120时屏幕实际分辨率为240px*400px(两个点对应一个分辨率)状态栏和标题栏高各19px或者25dip横屏是屏幕宽度400px或者800dip,工作区域高度211px或者480dip竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dipdensityDpi=160时屏幕实际分辨率为320px*533px(3个点对应两个分辨率)状态栏和标题栏高个25px或者25dip横屏是屏幕宽度533px或者800dip,工作区域高度295px或者480dip竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dipdensityDpi=240时屏幕实际分辨率为480px*800px(一个点对于一个分辨率)状态栏和标题栏高个38px或者25dip横屏是屏幕宽度800px或者800dip,工作区域高度442px或者480dip竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dipapk的资源包中当屏幕densityDpi=240时,使用hdpi标签的资源当屏幕densityDpi=160时,使用mdpi标签的资源当屏幕densityDpi=120时,使用ldpi标签的资源不加任何标签的资源是各种分辨率情况下共用的布局时尽量使用单位dip,少使用pxdp与px换算公式:pixs=dips*(densityDpi/160).dips=(pixs*160)/densityDpidp与px转换的方法:publicstaticintdip2px(Contextcontext,floatdipValue){finalfloatscale踏实做好一天,就能做好一个星期,一个月,一年,一辈子.........5=context.getResources().getDisplayMetrics().density;return(int)(dipValue*scale+0.5f);}publicstaticintpx2dip(Contextcontext,floatpxValue){finalfloatscale=context.getResource().getDisplayMetrics().density;return(int)(pxValue/scale+0.5f);}VGA:640*480QVGA:320*240HVGA:320*480WVGA:800*480WQVGA:480X272或400X240View一、View的定义及作用View是Android下的一个超类,在Android中,这个类几乎包含了所有的屏幕类型。但它们之间有一些不同。每一个view都有一个用于绘画的画布。这个画布可以用来进行任意扩展。Android应用就是:UI+事件开发Android应用就是布局UI,给UI中的各种各样的控件根据需求添加事件.View是UI最基本的组成部分,负责绘制UI元素和界面动作的监听。.整个手机屏幕,也是一个View,就像一块大画布,上面可以放各种各样的界面元素,如Button,EditText(文本域)或其它view.也就是说,View可以认为是其他View,或Button,文本域等界面元素的容器。所属包:java.lang.Object|-----android.view.View继承结构:ViewextendsObjectimplementsDrawable.CallbackKeyEvent.CallbackAccessibilityEventSource二、View怎么用?ViewGroup类是View类的子类,但是它可以充当其他控件的容器。ViewGroup的子控件既可以是普通的View,也可以是ViewGroup。一些高级控件如Gallery、GridView等都是继承自ViewGroup。Android中为每种不同的布局提供一个ViewGroup的子类,如LinearLayout、TableLayout、RelativeLayout、FrameLayout、AbsoluteLayout等。(一)View类在布局中常用的属性及对应的方法踏实做好一天,就能做好一个星期,一个月,一年,一辈子.........6属性名称对应方法描述android:backgroundsetBackgroundResource(int)设置背景android:clickablesetClickable(boolean)设置View是否响应单击事件android:visibilitysetVisibility(int)控制View的可见性android:focusablesetFocusable(boolean)控制View是否可以获取焦点android:idsetId(int)为View设置标识符,可通过findViewById方法获取android:longClickablesetLongClickable(boolean)设置View是否响应长单击事件android:soundEffectsEnabledsetSoundEffectsEnabled(boolean)设置当View触发单击等事件时是否播放音效android:saveEnabledsetSaveEnabled(boolean)如果未作设置,当View被冻结时将不会保存其状态android:nextFocusDownsetNextFocusDownId(int)定义当向下搜索时应该获取焦点的View,如果该View不存在或不可见,则会抛出RuntimeException异常android:nextFocusLeftsetNextFocusLeftId(int)定义当向左搜索时应该获取焦