2019-03-10 15:21:08 qq_31433709 阅读数 252

鸿洋android屏幕适配四部曲-传送门

两分钟理解Android中PX、DP、SP的区别

https://blog.csdn.net/donkor_/article/details/77680042

屏幕分辨率查询

这样,我尝试用一句话来说明白px和dp的关系,以及为什么要使用两种单位。
android手机市场因为还没有完全垄断的企业出现,所以屏幕的种类相当多,所以需要一种自适应单位,让同一个单位长度在所有手机上显示的物理尺寸完全一样(注意,是物理尺寸,举个例子,希望实现同一个长度在所有手机上显示的长度都为1厘米,这样的效果),这样的效果单纯使用px是不可能达到的,所以才需要引入dp。看一下公式:

– PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
– dp*ppi/160 = px。比如1dp x 320ppi/160 = 2px

再明白不过了,ppi是两者之间的桥梁,那么ppi是什么呢,是屏幕上对角线上每一英寸所对应的像素数目。通过ppi就能将屏幕像素和实际物理长度进行挂钩了。那么为什么还需要一个160参数呢?我尝试揣摩设计者的初衷,我们在设计界面,设定长度的时候往往希望设定整数值对吧,设定个0.0023这种长度其实很尴尬的不是吗,所以取了一个折衷值,让dp值既不会太大也不会太小。

Android 屏幕适配方案

https://blog.csdn.net/lmj623565791/article/details/45460089

Android 百分比布局库(percent-support-lib) 解析与扩展

https://blog.csdn.net/lmj623565791/article/details/46695347

Android 增强版百分比布局库 为了适配而扩展

https://blog.csdn.net/lmj623565791/article/details/46767825

Android AutoLayout全新的适配方式 堪称适配终结者

https://blog.csdn.net/lmj623565791/article/details/49990941

2017-03-11 22:21:44 da_caoyuan 阅读数 3079

最近,项目用到蓝牙通讯的技术。经过一番查阅资料和学习。在此做一下记录并分享一下,也方便以后查看!其实网上的资料都比较全面了,也有不少的博客写的也很好。我也不在这里,多啰嗦了。只把一些容易犯错的地方,说一下。

简述一下蓝牙的发展史: 蓝牙发展至今经历了8个版本的更新。1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2。那么在1.x~3.0之间的我们称之为传统蓝牙,4.x开始的蓝牙我们称之为低功耗蓝牙也就是蓝牙ble,当然4.x版本的蓝牙也是向下兼容的。android手机必须系统版本4.3及以上才支持BLE API。不过在大于等于4.3 和 小于5.0 之间的android手机系统版本,只支持作为中心设备角色。在 5.0 以及 5.0 之后的,是既可以作为中心设备,也可以作为外围设备啦!

传统蓝牙 就是手机上用的那种,它有两个角色一个是客户端一个是服务器(前提是android手机系统版本小于4.3之前的),那有人说,手机到底是客户端,还是服务器端呢?答案就是,它既可以做客户端也可以做服务器端。所以手机既可以作为客户端去搜索服务器端(其他手机),也可以作为服务器端被其他其他客户端(手机端)搜索到。

  • 当客户端搜索到蓝牙服务器后并与之配对后,才能通过UUID(这个是唯一的,服务器端必须与客户端一致)建立socket,然后使用流像文件读写和网络通信那样传输数据就行了。

低功能耗蓝牙也就是BLE, 它的角色变成了一个是中心设备(central)一个是外围设备(peripheral),中心设备就是你的手机,外围设备就是智能手环一类的东西。大于等于4.3 和 小于5.0 之间的android手机系统版本,只能作为中心设备去搜索一些其他外围设备,不能做为外围设备被其他中心设备搜索到;在 5.0以及5.0 之后,既可以作为中心设备,也可以作为外围设备。

  • 由于其具有最大化的待机时间、快速连接和低峰值的发送和接收特性,被广泛用于智能手表、智能手环等可穿戴设备上。在安卓4.3之前,安卓平台上的BLE开发相当难搞,好在谷歌在4.3之后发布了官方的API。在安卓5.0之后又引入了新的API,而新的api没有向下兼容,所以采用5.0新API开发的APP只能在LOLLIPOP即安卓5.0及其以后的版本使用。不过,在新的系统里采用旧API开发的APP仍可使用。

本篇博客就先讲传统蓝牙,也就是 4.0 之前的版本。 BLE 版本,将在下一篇博客中讲解。

先看一下效果图:
这里写图片描述

总结:具体用法,和方法说明,都在源码的做了注释。感兴趣的话,下载一下源码看一看。


关于自动配对的知识:

以后做补充。

源码地址

说明:效果图为源码中的app工程。app2工程,相比于app工程比较好理解一些。选择设备时,我这里是以小米手机的为例的。要根据具体情况修改一下代码。


相关博客:

google官网文档,比较具有参考价值

google 蓝牙聊天Daemon android-BluetoothChat

Android 蓝牙开发之搜索、配对、连接、通信大全

鸿洋微信推荐地址(Android蓝牙自动配对攻略)

Android 蓝牙技术 带你实现终端间数据传输

2016-07-18 20:31:36 wyyl1 阅读数 1782

信息来源:
http://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650820648&idx=1&sn=cb9ee924f2ded3358dd6c256803cc687&scene=0#wechat_redirect

以下问题是引用鸿神的文章:

1、Java技术

1.1 Java基础

对抽象、继承、多态的理解
JAVA的抽象、封装、继承、多态 http://blog.csdn.net/xieqian923/article/details/8183363

泛型的作用及使用场景
http://www.cnblogs.com/lwbqqyumidi/p/3837629.html
枚举的特点及使用场景
http://www.jb51.net/article/78351.htm
线程sleep和wait的区别
JAVA反射机制
weak/soft/strong引用的区别
Object的hashCode()与equals()的区别和作用
http://www.360doc.com/content/14/0527/09/15113968_381327452.shtml

1.2 集合类

JAVA常用集合类功能、区别和性能
并发相关的集合类
部分常用集合类的内部实现方式

1.3 多线程相关

Thread、Runnable、Callable、Futrue类关系与区别
JDK中默认提供了哪些线程池,有何区别
线程同步有几种方式,分别阐述在项目中的用法
在理解默认线程池的前提下,自己实现线程池

1.4 字符

String的不可变性
StringBuilder和StringBuffer的区别
字符集的理解:Unicode、UTF-8、GB2312等
正则表达式相关问题

1.5 注解

注解的使用
注解的级别及意义
如何自定义注解

2、Android技术

2.1 Android基础

四大组件的意义及使用,生命周期回调及意义
Android四大基本组件介绍与生命周期 http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html
AsyncTask、Handler的使用
Android系统层次框架结构
AsyncTask的实现方式
AsyncTask使用的时候应该注意什么
Android常见的存储方式
Looper、Handler和MessageQueue的关系
Activity的启动流程(考察对Framwork的熟悉程度)
多进程开发的注意事项(Application类区分进程,进程间内存不可见、进程间通讯方式)

2.2 Resource相关

.9图片的意义
style和theme的作用及用法
答:
正确使用 Android 的 Theme 和 Style http://www.tuicool.com/articles/ZjEZFj
dpi、sp、px的区别以及转换关系
raw和assets文件夹的作用,二者有何区别
Android系统如何在多个资源文件夹下查找匹配最合适的资源

2.3 虚拟机

Java内存模型
Android虚拟机的特点
Dalvik和Art的区别
熟悉垃圾回收的实现机制,了解虚拟机的GC类型

2.4 View相关

常用组件的使用:ListView、RecyclerView及Adapter的使用
View之间的继承关系
Invalidate与postInvalidate的区别
自定义View的实现方式(根据项目经验询问相关组件)。
onMeasure/onLayout/onDraw的作用
Paint、Matrix、Shader等绘制相关类的方法作用
详细描述事件分发机制

2.5 动画

Android有哪些动画的实现方式
Interpolator类的意义和常用的Interpolator
ViewAnimation与属性动画有什么区别
如何自定义ViewAnimation
属性动画的实现原理

2.6 图片处理

一般项目中如何加载大图
图片压缩的方式
如何不压缩图片加载高清图
图片加载过程中,一般会使用缓存,这个缓存的主要作用是什么
谈谈自己熟悉的图片加载框架

3、项目经验

3.1 开发工具

代码管理工具:SVN、Git
常用的调试工具:Hierarchy Viewer、DDMS等
CI工具:Lint检查,FindBugs、Jenkins
内存分析工具:dumpsys、memoinfo、MAT

3.2 项目工程

APP更新策略:推送或者拉取?
如何统一处理错误崩溃
如何进行用户行为收集
日志管理有哪些要点?(Debug包开放,release包关闭,错误日志反馈)
打包方式Ant、Maven、Gradle
机型适配情况

3.3 开放平台

是否使用过第三方平台
常用开放平台的熟悉度(微信、QQ、微博、支付宝等常用的支付和分享)
是否进行过对第三方平台的统一封装?
是否自己开发过SDK?

3.4 设计相关

有哪些常用的设计模式、设计原则
设计模式在Android源码中的应用
设计模式在项目中的应用
项目中的分包方式
MVC在android中的应用,利弊
android项目中的常见层次结构,包划分
有没有设计过项目中的层级结构、包划分

4、wyyl1的补充

线程和进程的区别
dp、sp、APPUI设计中的48dp定律原则

Android TouchEvent事件传递机制
http://blog.csdn.net/morgan_xww/article/details/9372285/

TCP/IP、Http、Socket的区别
http://blog.csdn.net/skyboy11yk/article/details/24304461

Android学习资源

阅读数 68

鸿洋博客精选

阅读数 3159

没有更多推荐了,返回首页