美文网首页
Android 基础知识分享

Android 基础知识分享

作者: AFAP | 来源:发表于2017-12-04 10:51 被阅读51次

    1.Android项目目录结构

    android项目目录示意图.png
    • module的含义
      module相当于一个个独立的项目,可以起到解耦作用,app中可以引入多个module,单个module通常是为了实现一个独立的功能,如:扫码、图片处理等。

    • assets、java、jniLibs、res个文件夹的含义
      assets:内置静态资源,应用安装后无需任何特殊处理,代码可通过getResources().getAssets().open(String path)打开文件;
      java:应用代码;
      jniLibs:涉及底层方法的一些.so库文件,比如视频的压缩与处理等方法;
      res:应用资源文件,该目录下包含了图片资源文件夹、布局文件、菜单文件、图形资源、样式尺寸等文件。

    • app/build.gradle文件
      该文件是对应用一些基本的设置,如匹配系统版本、应用ID,应用版本、编译时使用的系统版本、build参数等信息;应用需要引入的库也需要在此设置,常见形式如下:

    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.jscmcc.zhyq"
        minSdkVersion 16
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    
    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        compile project(':CordovaLib')
        compile 'org.apache.cordova:framework:6.2.3:release@aar'
        compile 'com.android.support:design:26.1.0'
        compile 'com.afap:utils:0.1.1@aar'
        compile 'org.greenrobot:eventbus:3.0.0'
        compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    }
    

    2.Android中页面布局的适配

    • 常用布局介绍:RelativeLayout、LinearLayout、GridLayout等
      RelativeLayout:绝对布局,常用作view有堆叠的情形;
      LinearLayout:线性布局,最常使用,该布局有权重属性;
      GridLayout等:异性布局,另外还有table形式的布局,不过都不常用。
      *补充一点:google提供了Flex布局,类似css的使用方式。

    • 各尺寸单位简介:dp、sp、px、 pt、mm、in
      dp:相对尺寸,最常使用,通常不管实际物理像素大小,认为手机宽度为360dp;
      sp:相对尺寸,用作设置文字的大小;
      px:绝对像素,呈现在不同手机上的效果大不一样,不建议使用。

    • 自适应屏幕,相对布局的使用
      1.尽量避免使用绝对值;
      2.充分利用权重;
      3.使用绝对布局时可以利用margin和padding,以及位于parent的位置。

    • Fragment的作用与一般用法

    3.Android常用组件:Activity、Service、Broadcast、Provider

    • Application
      应用程序上下文对象,应用未被Kill期间,该实例一直存在,应用的初始化多在此进行,全局对象也在此实例化。

    • Activity
      应用可见窗口,最常用到的组件,View、操作等都在此进行,不过随着业务场景的增多,Activity会比较臃肿,android为此引入了fragment;

    • Service
      常用来执行后台任务,可自行设置启动、结束条件,可定时唤起(有限制),用于执行如后台文件上传、后台位置获取等;

    • Broadcast
      广播,通常用来监听手机设备的通用状态(如开机、网络变化、电量、是否充电灯),或者应用内约定的广播,起到传递消息的作用。最常用的就是监听系统广播,用来做自动启动、断网后暂停下载等;

    • Provider
      系统级别的数据共享,如访问联系人、短信等,不常用;

    • Fragment
      Android2.3中开始引入的一个概念,用来解耦应用,提高复用程度,同时提高各类设备的适配度,主要用来分割各个独立功能,可在Activity中进行多Fragment协同调度处理,如在pad上可一屏展示邮件列表和详情(左侧列表右侧详情),而手机由于屏幕大小限制通常都是列表和详情分开,利用Fragment实现列表和详情单独功能,由Activity调度处理,可实现快速复用开发。

    • View的自定义
      几乎所有可见的空间都是继承自View,如果有需求系统空间无法满足,可以自行继承View,实现其onDraw()(其他的方法一般不需要涉及)方法,如一些特效。

    • ListView与RecycleView
      ListView和RecycleView类似,主要用于大数据量的同类展示,通过设置Holder老优化性能,配合适配器,实现巨量数据的展示。

    4.Android中图片相关要点

    • drawable-xhdpi(同mipmap-xhdpi)等含义与dpi计算方式
      dpi计算.png
      通常情况下,也是为了减轻UI工作量和apk包的体积,只需要提供一套图片,xxhdpi即可,另外在布局时需要注意采用相对布局,可以节省很多工作量。
      应用会自动需要与自身设备匹配的图片文件,如果没有找到,会去其他dpi下面找。
    • drawable的自定义:shape、selector、layer-list
      shape:绘制简单的图形,如圆形、椭圆、圆角矩形、渐变色、直线等规则图形,特点就是矢量,不会失真,体积很小,加载性能高;

    selector:配置不同状态对应的不同图片,如配置一个按钮的背景时,可以设置常规背景、点击后背景、禁用时背景;(其他属性还有选中状态、触摸状态等)

    layer-list:图片堆叠,多张图片进行堆叠实现效果,通过顺序的调整可实现想要的效果。

    • tint的使用
      在API>=21时,可利用tint来实现多主题图片色的变换,如图片本身是黑色的,通过设置tint可实现着色处理。

    *补充:vector可利用path构造复杂的矢量图形,官方提供了一套常用的图标

    5.Android中网络请求

    • Network操作不能处于UI线程
      历史演进:安卓4.0及以后禁止在UI主线程进行网络耗时操作,网络请求必须放到io线程;安卓7.0后貌似对smb和ftp等协议也禁止;

    • 常用异步操作AsyncTask、Handler、Thread、RxJava库
      AsyncTask:官方提供的轻量级异步类
      Thread+Handler:自行维护网路请求,以及请求完毕后通过handle处理后续逻辑;
      RxJava:一个流式异步库,可以自由变换操作所处的线程。

    • 常见会话保持形式与处理
      Android中并不会像浏览器一样自动保存和携带Cookie信息,所以通常的会话保持形式就是使用token,认证后的请求携带该值发送请求;如果服务端不支持,也可以人工改造使之能够适应cookie形式的项目,通常是采用拦截器自定拦截、保存、携带cookie信息。

    • Http、Https的不同处理方式

    • 其他如SMB、FTP等协议

    6.Android中常见的持久化本地存储

    • SharedPreferences
      小数据量的存储,通常用来存放一些系统个性化设置,其实质是一个xml文件,存在于应用沙盒中;

    • Database
      大数据量存储,支持常见的sql,手机中的数据库其实是一个.db文件,root的情况下可直接拷贝出使用sqlite工具打开;

    • File
      常见存储方式,特点是数据格式自由,保存路径自由,可用来存储诸如缓存图片、临时文件等。

    7.混合式开发的应用

    • 自定义xml格式,并原生解析为自绘View
      由于View可自行绘制,如果需要应用具备原生体验效果,可采用此模式,不过前期约定解析和绘制工作量会很大且不移维护。

    • 使用WebView进行混合调用,JS Bridge
      最常用的方式,也是最标准的方式,通过JS Bridge可实现html与Native的相互调用。

    8.其他注意点

    • 国际化与string.xml作用
    • xxx-V21形式的作用
    • 权限申请与使用

    相关文章

      网友评论

          本文标题:Android 基础知识分享

          本文链接:https://www.haomeiwen.com/subject/dgutixtx.html