屏幕适配+AIDL篇

  • 前言
  • 屏幕适配
  • 1.基础概念
  • 2.适配方式
  • AIDL
  • 1.什么是 AIDL 以及如何使用
  • 2.如何工作?能处理哪些类型的数据?
  • 关于整理问题


前言

秋招在即,计蒙准备在国庆假期结束前整理一套Android初级面试题籍,希望对大家有所帮助


提示:以下是本篇文章正文内容

屏幕适配

1.基础概念

屏幕尺寸:手机对角线的物理尺寸 单位:英寸(inch)

屏幕分辨率:手机在横向、纵向上的像素点数总和

屏幕像素密度:每英寸的像素点数 单位:dpi(dots per ich)

2.适配方式

1.支持各种屏幕尺寸: 使用wrap_content, match_parent, weight.要确保布局的灵活性并适应各种尺寸的屏幕,应使用 “wrap_content”、“match_parent” 控制某些视图组件的宽度和高度。
2.使用相对布局,禁用绝对布局。
3.使用LinearLayout的weight属性
4.使用.9图片
5.ConstraintLayout
6.dimens.xml
7.今日头条适配


AIDL

1.什么是 AIDL 以及如何使用

  1. aidl 是 Android interface definition Language 的英文缩写,意思 Android 接口定义语言。
  2. 使用 aidl 可以帮助我们发布以及调用远程服务,实现跨进程通信。
  3. 将服务的 aidl 放到对应的 src 目录,工程的 gen 目录会生成相应的接口类我们通过bindService(Intent,ServiceConnect,int)方法绑定远程服务,在 bindService中 有 一 个 ServiceConnec 接 口 , 我 们 需 要 覆 写 该 类的onServiceConnected(ComponentName,IBinder)方法,这个方法的第二个参数 IBinder对象其实就是已经在 aidl 中定义的接口,因此我们可以将 IBinder 对象强制转换为 aidl 中的接口类。

我们通过 IBinder 获取到的对象(也就是 aidl 文件生成的接口)其实是系统产生的代理对象,该代理对象既可以跟我们的进程通信,又可以跟远程进程通信,作为一个中间的角色实现了进程间通信。


2.如何工作?能处理哪些类型的数据?

编译器可以通过 aidl 文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程跨界对象访问的目的。
需要完成 2 件事情: 1. 引入 AIDL 的相关类.; 2. 调用 aidl 产生的 class.理论上, 参数可以传递基本数据类型和 String, 还有就是 Bundle 的派生类, 不过在 Eclipse 中,目前的 ADT 不支持 Bundle 做为参数。