官网地址:http://hencoder.com/ 我来做一次辛勤的搬运工 HenCoder:给高级 Android 工程师的进阶手册 HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础 HenCoder Android 开发进阶: 自定义 View 1-2 Paint 详解 HenCoder Android 开发进阶:自定义 View 1-3 文字的绘制 HenCoder Android 开发进阶:自定义 View 1-4 Canvas 对绘制的辅助 HenCod…
半个月前,和我的终极技术目标扔物线朱凯一拍即合,到了他所开展的 HenCoder Plus 课程给大家分享了 1 个多小时的「模拟面试」心得,也顺便听了几次凯哥的课程,感觉真的挺用心的.自己也希望能一直不忘初心,在技术领域像凯哥一样,认真并且锲而不舍.准备了许久,主要是为了做这一次分享. 自己下来其实看了好几遍自己的录屏,觉得还是有必要做一篇文字版的分享给大家,还要有一位童鞋能够从中得到收获,那也是不枉费我手打了接近 3 万字的分享.很多思想都受着去年 Android 巴士成都交流会另外一位讲师…
No1: 客户端与服务器的交互流程: 1)客户端执行网络请求,从URL中解析出服务器的主机名 2)将服务器的主机名转换成服务器的IP地址 3)将端口号从URL中解析出来 4)建立一条从客户端与Web服务器的TCP连接 5)客户端通过输出流向服务器发送一条HTTP请求 6)服务器向客户端回送一条HTTP响应报文 7)客户端从输入流获取报文 8)客户端解析报文,关闭连接 9)客户端将结果显示在UI上 No2: HTTP请求方式: 1)GET 获取服务器中某个资源,www.devtf.cn/artic…
前言 此篇博客只讲解okhttp的拦截器功能的详细使用,如果你还不太了解okhttp可以参考我另外一篇博客 Android 开发 框架系列 OkHttp使用详解 添加Interceptor的简单例子 在 Android 开发 框架系列 OkHttp使用详解 可以了解到okhttp的基本使用,初始化OkHttpClient的时候我们可以添加拦截器,如下: // 配置一些信息进入OkHttpClient mOkHttpClient = new OkHttpClient().newBuilder()…
我们使用各种语言进行开发时,总是会用到各种各样的开发工具.有些开发工具是开发人员的必备品,有些则是为了提高开发效率而用.Android开发同样也会用到多种开发工具,供开发人员设计.创建.测试和发布程序时使用. Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. 1.Eclipse w/ADT 虽然Eclipse并非唯一可用于开发Android应用的Java开发环境,但它是目前最欢迎的工具,有很大程度上是…
Android开发者博客推荐 Android入门级 - 罗宪明 http://blog.csdn.net/wdaming1986 Android入门级 - 魏祝林 http://blog.csdn.net/Android_Tutor Android入门+进阶 张国威 没错吧? http://blog.csdn.net/hellogv Android学习指南,文章没填满空,帖子编辑的很好推荐 http://android.yaohuiji.com/about JNI Android 多媒体 Jav…
在Android开发中,我们经常会用到ListView 这个组件,为了将ListView 的内容展示出来,我们会去实现一个Adapter来适配,将Layout中的布局以列表的形式展现到组件中.    比如,像 GGTalk 安卓版的查找用户功能,会把符合条件的用户都列在下面: 为了达到这个效果,我们需要实现一个自定义的Adapter,而其它地方的ListView也要实现一个Adapter,这些Adapter会有很多重复的代码,非常繁琐,现在我就将重复代码封装到了一个通用的适配器CommonAda…
Android主要有四大主要组件组成:Activity.ContentProvider.Service.Intent组成.Android文件的运行主要需要读写四大组件的文件.本文将介绍如何读写Android文件,希望对正在进行Android开发的朋友有所帮助. 文件存放位置 在Android中文件的I/O是存放在/data/data/<package name>/file/filename目录下. 提示:Android是基于linux系统的,在linux的文件系统中不存在类似于Windows的…
在Android开发中,总会有一些很小的问题.由于我们的不仔细,很容易忽略掉,从而导致在该问题上花费了很多的时间,造成工作进度的延迟. 为此,在这里做一下记录,避免再次浪费许多时间在这些问题上. 1.获取CheckedTextView的值时,一直返回false 解决办法:在xml中设置checked属性,否则,获取CheckedtextView的checked属性会一直返回false. 2.EditText中文字重叠 解决办法:将EditText的layerType设置为software就可以了…
总结一下: 事件序列的定义:从手触摸屏幕(含)到离开屏幕(含)期间所发生的一系列交互事件.主要由ACTION_DOWN.ACTION_MOVE.ACTOIN_UP.ACTION_CANCEL等组成,其中一次事件序列中,DOWN和UP都只有最多一个,MOVE有若干个,可以为0个.定律:某个View只有将ACTION_DOWN处理(消费)掉,才会有机会处理后面的ACTION_MOVE和ACTION_UP. 定律:正常情况下,一个事件序列只能被一个View 拦截且消耗. 因为一旦一个元素拦截了某事件,…
封面 文件夹1 文件夹2 - 当当购买链接 - 京东购买链接 为什么写这本书 写这本书的念头由来已久了. 或许是从我打算写<Android源代码设计模式解析与实战>那时起就萌生了这个念头,由于设计模式属于仅次于架构之下的局部战术.阅读这类书籍可以让具备一定工作经验的开发者提升自己的设计能力,构建更灵活的软件.可是.对于初.中级project师而言,最重要的还是在于基础知识以及知识广度的掌握上.因此,在<Android源代码设计模式解析与实战>交稿之后,我就马上開始了本书的写作之旅.…
在Android开发中,系统提供给我们的UI控件是有限的,当我们需要使用一些特殊的控件的时候,只靠系统提供的控件,可能无法达到我们想要的效果,这时,就需要我们自定义一些控件,来完成我们想要的效果了.下面,我就来讲讲自定义控件的那些事. 首先,我来讲讲Android的控件架构.Android的控件可以被分为两类,分别是ViewGroup和View.在ViewGroup中可以包含多个View,并且管理他们.控件树就是有这两个部分组成的,控件树的上层负责的是下层控件的绘制和测量以及交互.我们在Acti…
ImageView设置图片必备常识技术: Android设备会给每个应用分配16M的内存空间,如果你设置的图片的比较大且同一个页面有多个时,经常会报OOM错误导致程序奔溃.所以在这种情况下我们必须要对设置的图片进行处理: 方法一:简单粗暴点,图片大小调低点.方法可使但是很弱智,当然不推荐使用: 方法二:看代码 public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHe…
开发自定义控件的步骤: 1. 继承View: 2.重写构造函数并构造方法中获得我们自定义的属性. 3. 重写onDraw, 4.重写onMeasure 等函数 一.自定义View的属性,首先在res/values/  下建立一个attrs.xml , 在里面定义我们的属性和声明我们的整个样式. <?xml version="1.0" encoding="utf-8"?> <resources>     <declare-styleabl…
先上图: 开发中经常需要自定义view控件或者组合控件,某些控件可能需要一些额外的配置.比如自定义一个标题栏,你可能需要根据不同尺寸的手机定制不同长度的标题栏,或者更常见的你需要配置标题栏的背景,这时候,你就会考虑到你写的view的扩展性问题,通常情况下,我们可以为这个自定义的标题栏加上一些setXXX方法,供外界调用,设置其颜色.长度等属性.但是我们都知道,在使用系统控件时,我们大多数情况下并不需要在代码中配置控件,而仅仅只需在布局文件中对控件宽.高.颜色等进行配置,这样做的好处就将UI与业务…
首先介绍一下FileDownloader GH :https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md FileDownloader2 现在, FileDownloader2-OkDownload 已经正式发布, okdownload继承了所有FileDownloader的优点,甚至做了更多的优化以及更多的特性. 特点 简单易用 单任务多线程/多连接/分块下载(并支持通过ConnectionCountAdapt…
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:com.novoda.imageloader:异步加载.缓存.显示图片 picasso:com.squareup.picasso:功能强大的图片下载缓存库 PhotoView:uk\co\senab\photoview:支持缩放和各种手势的ImageView ListView JazzyListView…
由于无法fq,也没有vpn,建议各位新手不用sdk manager去安装,直接下载bundle包,就不用去折腾各种开发环境了.推荐bundle下载地址:http://adt.android-studio.org/,下载对应的版本即可,然后sdk环境变量配置可以参考:https://jingyan.baidu.com/article/e52e36151a4e2740c70c5150.html.…
流行的思路如下[2015-11-20更新]: 1.让Service杀不死.Service的onStartCommand返回START_STICKY,同时onDestroy里面调用startService启动自身. 2.让Service从后台变成前置.在Android 2.0以前有效,借助setForeground(true). 3.让某个进程不被系统的low memory killer杀死(如数据缓存进程,或状态监控进程,或远程服务进程).add android:persistent="true…
PopupWindow在4.0之前的版本有个系统级别的BUG,必须借助一段自定义的fix代码来修复.其中mPopPm就是PopupWindow实例.java.lang.NullPointerExceptionat android.widget.PopupWindow$1.onScrollChanged if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { try { final Field fAnchor =…
消除SDK更新时的“https://dl-ssl.google.com refused”错误 消除SDK更新时,有可能会出现这样的错误:Download interrupted: hostname in certificate didn't match: <dl-ssl.google.com> != <www.google.com>Download interrupted: Connection to https://dl-ssl.google.com refusedDone. N…
官方文档:http://ai.baidu.com/docs#/TTS-Android-SDK/6d5d6899 官方百度语音合成控制台:https://cloud.baidu.com/product/speech/tts 步骤一  申请授权 在百度语音控制台中申请使用语音合成的授权,填入相关数据后(注意:一定要选择Android填入正确的包名,不然可能会影响使用离线语音合成).得到相应的APP_ID,APP_KEY,SECRET_KEY:然后在下载语音包SDK. 步骤二  导入依赖 这里有三组文…
目录 简介 导入工程 使用流程概况 一个简单的小Demo 深入学习 @Entity使用 自定义表名 tableName  自定义字段名@ColumnInfo 主键 @PrimaryKey 索引 @Index 外键 @ForeignKey 嵌入对象 @Embedded ​ 深入学习@Dao 创建Dao Class 插入 @Insert 简介  Android 2017 IO大会推出了官方数据库框架:Room.Room其实就只是对原生的SQLite API进行了一层封装.不得不说google其实早应…
简介 okhttp是一个第三方类库,用于android中请求网络.这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) .用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient). 官网网址:OKHttp官网 OkHttp github地址:https://github.com/square/okhttp OkHttp jar包下载: h…
介绍 GitHub:https://github.com/greenrobot/EventBus 先聊聊EventBus 线程总线是干什么的,使用环境,优点.缺点. 干什么的? 一句话,简单统一数据传递 和 提供主次多个线程 数据传递:Android系统有很多类别的数据传递方式,例如Intent 活动之间传递数据.Message与Handler 主次线程之间传递数据.广播的方式.使用基类危险的去传递数据.传递数据的方式太多,且都需要各自的注册方式,使用使用起来比较繁琐.所以EventBus第一个…
首先简单的介绍一下Gilde作用范围.Gilde功能十分强大,它可以实现图片处理.图片本地加载.图片网络加载.位图加载.图片内存缓存.图片磁盘缓存.Gif图片加载.使用简单轻松,轻松的后是它强大的心,它帮你解决了http.输入输出流.图片缓存管理.批量加载线程管理.图片处理. 另外,因为Gilde更新了很多年了,所以部分之前的使用方式已经被作者修改,所以本人重新整理了一些基本使用: github :https://github.com/wasabeef/glide-transformations…
前言 此篇博客只是上传功能的记录demo,如果你还不太了解okhttp可以参考我的另一篇博客https://www.cnblogs.com/guanxinjing/p/9708575.html 代码部分 package okhttpdemo.com.libs.net.httpBase; import android.util.Log; import org.json.JSONObject; import java.io.File; import java.io.FileInputStream;…
前言 此篇博客只是下载功能的记录demo,如果你还不太了解okhttp可以参考我的另一篇博客https://www.cnblogs.com/guanxinjing/p/9708575.html 代码部分 package okhttpdemo.com.libs.net.httpBase; import android.util.Log; import org.json.JSONObject; import java.io.File; import java.io.FileOutputStream;…
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. 给大家介绍个东西,MarkDown真的超级超级好用.哈哈.好了, 正题内容如下: 先说明,此文章是教程详解,而不是直接拿来用的Demo,想要Demo的 朋友可以在下面留言或者私信,看到有要的朋友会做一个Demo.下面 文章是教大家理解这个内容. 先看一下效果: 1,检测更新 /* * 从服务器端读取相关信息 */ private String getInfoFromServer(S…
这种情况下大多数是因为存在kadb.exe在执行,或者adb.exe端口被占用. 1,检查是否存在kadb.exe程序正在执行 打开任务管理器,打开详细信息,按照字母顺序找到kadb.exe,结束进程,重新启动adb.exe即可以看到adb.exe出现在任务管理器中. 补充一下,本人电脑上面的kadb.exe是酷狗音乐里面的一个执行程序,貌似每次打开酷狗音乐这个程序就会启动,导致无法启动adb.exe. 2,若是上述方法无效,可能是adb.exe端口被占用,可以关闭占用端口进程,或者更改adb.…