【Android】
文章平均质量分 75
Sean_css
每天进步一点点,成为你羡慕的人
展开
-
常见设计模式一:单例模式
在 23 种设计模式中,我们平时接触使用的最多的可能就是单例模式了,虽然这个设计模式大家都会,也很简单,但是里面还是有些东西值得探讨一下的,最终目的是能够结合实际需要写出最适合的单例代码。单例模式的特点单例模式是为了保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。那么最起码要有以下的特点:不能被其他对象初始化(构造方法需要私有)全局只有一个实例(自己本身只能创建一个实例)对...原创 2019-08-08 13:44:04 · 223 阅读 · 0 评论 -
从一个异常认识Android中的 commit() 和 commitAllowingStateLoss()
从一个异常认识Android中的 commit() 和 commitAllowingStateLoss()从一个异常认识Android中的 commit() 和 commitAllowingStateLoss()一、重现以及解决二、原因分析2.1 commitAllowingStateLoss 与 commit 的区别2.2 Android 6.0 权限申请三、总结...原创 2018-04-09 16:48:32 · 2808 阅读 · 0 评论 -
Android 多线程之 Handler 源码分析
Handler系列—源码分析前言一、Handler 的运行机制1.1 Message1.2 MessageQueue1.3 Looper1.4 Handler1.5 Message、MessageQueue、Looper、Handler的对象关系二、Handler 源码分析2.1 在子线程中创建 Handler创建 Looper创建 Handler 对象Handle...原创 2018-03-31 11:18:33 · 2413 阅读 · 0 评论 -
Android 多线程之 Handler 基本使用
Handler系列—基本使用前言Handler 使用1、使用 Handler 的 post() 方法更新 UI2、使用 Handler 的 sendMessage() 方法更新 UI3、使用 runOnUiThread() 方法更新 UI4、使用 View 的 post() 方法更新 UI5、子线程中创建 Handler(handler1)发送消息,在子线程中的Handler(h...原创 2018-03-31 11:17:25 · 3714 阅读 · 3 评论 -
我的安卓之路
1、Android 进阶一步一步使用 DialogFragment 封装链式调用 DialogEventBus3.0实用教程Java多线程自定义 View 实战(一)做一个简单的进度条Dagger2 、 MVP的简单封装我的第一个开源项目我项目中会用到的开源项目(都是精品) 持续更新2、Android 基础Android UI模板设计—TopBar(标题栏)异步...原创 2018-03-20 20:48:27 · 435 阅读 · 0 评论 -
Dagger2 、 MVP的简单封装
Dagger2 + MVP的简单封装现在很多 Android 开发都在用 MVP 模式,并且现在 Dagger2 注入依赖也挺方便的,所以就简单的对两者做了个封装,这样使用起来会更加方便。我们这里不对 MVP 做具体的讲解,只是简单的封装一下,便于使用,具体的 MVP 使用请参考其他文章。代码已上传到 Github,有兴趣的可以去下载运行。准备工作Dagger引入com...原创 2018-03-20 13:06:48 · 1589 阅读 · 0 评论 -
自定义 View 实战(一)做一个简单的进度条
前言一、分析需求二、定义属性并获取三、测量四、布局五、绘制最后前言自定义 View 是每个 Android 程序员走向高级必经之路,本篇通过实现一个非常简单的自定义 View ,来简单了解下自定义 View 的流程。(最后会给出源码)先看下效果:录制的 gif 可能看不清,欢迎去 Github下载项目运行查看。一、分析需求这个 View ...原创 2018-02-06 10:29:54 · 946 阅读 · 0 评论 -
一步一步使用 DialogFragment 封装链式调用 Dialog
前言日常开发中,Dialog 是一个每个 app 所必备的。2018-01-31更新最后封装好的 BaseDialogFragment 已经添加到我的快速开发 lib 包中。可以通过:implementation cn.smartsean:lib:0.0.7 快速引入,也可以去 AndroidCode 查看示例源码。通常来说,每个 app 的Dialog 的样式原创 2018-02-02 15:42:22 · 1586 阅读 · 0 评论 -
Java IO流操作
首先我们得知道:我们存储在硬盘上的文件是byte byte byte…存储的,是数据的集合。java 中的 io 流主要分为:字节流字符流一、字节流字节流又分为输入流 InputStream输出流 OutputStream输入流负责从 源(可以是文件) 读取数据到 Java程序 中。输出流负责把 Java程序 中数据写入到 源(可以是文件) 中。原创 2018-02-02 15:41:39 · 806 阅读 · 0 评论 -
Android 上传 Library 到 JCenter
现在不喜欢废话了,直接干货吧1、注册注册地址:认清地址:https://bintray.com/signup/oss认清地址:https://bintray.com/signup/oss认清地址:https://bintray.com/signup/oss2、新建仓库注册成功登陆之后,点击主页面的 Add New Repository选择 Public原创 2018-02-02 15:40:52 · 229 阅读 · 0 评论 -
Android打开指定文件实践 --- 工具类
项目中有下载文件的功能,但是有点 low,就是单纯的下载,下载成功提示用户文件下载在哪,需要用户手动去文件管理器找这些文件,不是很人性化,于是决定新增下载文件以后让用户直接能打开文件,友好型会好很多前言首先在实现打开指定文件之前,我尝试过打开指定的文件夹,但是并没有成功,研究了大半天的时间,发现是不可行的,这是个坑,希望不要有人再踩这个坑了,(当然,也有可能是我没找到打开文件夹的方法原创 2018-02-02 15:39:54 · 487 阅读 · 0 评论 -
记一次页面有EditText时,键盘弹出的问题
先来看一下在 Manifest 文件里面的 Activity 里面的这个属性android:windowSoftInputMode="adjustPan|stateHidden"以下介绍部分属于来自官方文档这个属性是 Android 1.5之后推出的,主要是为了 Activity 与软键盘的交互,主要的作用有两个:当 Activity 成为用户注意的焦点时软键盘的状态 — 隐原创 2018-02-02 15:38:41 · 413 阅读 · 0 评论 -
Android基础 你必须了解的应用文件目录
在开发中一般会对手机的内存进行操作,比如在使用应用过程中产生的一些日志、图片等信息,我们有时候要对其进行必要的操作,所以要对文件这一块要有一个基础的理解。概念1、内部存储:首先说明一个概念,内部存储不是内存,而是像磁盘一样可以存储数据的地方,他在手机内部,属于手机自带内存的一部分。内部存储私有目录里面有一个 data/data 文件夹,下面存放是所有应用程序的包名文原创 2018-02-02 15:35:06 · 2097 阅读 · 0 评论 -
我项目中会用到的开源项目(都是精品) 持续更新
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I原创 2018-02-02 14:27:33 · 932 阅读 · 1 评论 -
我的第一个开源项目
前言最近利用自己的工作之余写了这个简单的 Gank.io 客户端。虽然网上已经有很多类似的 Gank.io 客户端,但是我还是挺喜欢自己的写的这个,因为里面有自己的想要学习和复习的知识点,以后工作中遇到一些问题,亦或是想复习一些知识点,也许参考下这个项目就解决了。嗯,这个项目会一直被我写下去的。先贴上项目地址Gank.io客户端,希望能和大家互相学习。App下载 密码:ckgd原创 2017-04-19 18:41:43 · 553 阅读 · 0 评论 -
Android res/raw 和 assets 使用
今天在研究通知栏的时候,不想用系统默认的提示音,就想着自定义提示音,了解到可以可以在项目中添加raw文件夹或者assets文件夹来存放音频,使用raw的话是放在res下面的,也就是说可以直接用过R.raw.xxx.mp3,获取到该音频,但是该文件夹下的音频会被编译成二进制文件,不能直接打开,具体的新建方法: 下面是代码,说明下,我是为了图方便直接在BroadcastReceiver的onRecei原创 2016-04-10 22:42:16 · 6574 阅读 · 0 评论 -
Genymotion下载慢或者下载失败的解决办法
以前使用genymotion的时候都是等了很久才能下载完成,并且有时候会下载失败。今天在网上无意间看到了一个方法解决这个问题。现在记录下,备用。办法如下: 1. 首先点击界面上的+号(Add)按钮,选择你要下载的模拟器虚拟机版本。(一定要走这一步,不然没有下面的信息需要的) 2. 然后到C:\Users\Administrator\AppData\Local\Genymobile\下面打开ge原创 2016-09-26 21:18:07 · 9798 阅读 · 2 评论 -
Android基础---PopupWindow实现漂亮的搜索
当初做毕业设计的时候,就在毕业设计 App 上面实现了该功能,当初只是简单的堆积代码,代码都是从别处拷贝了,对具体代码的意思也不是很清楚,现在做了一个简单的开源项目,也实现了该搜索功能,现在对 PopupWindow 有了更新的认识。本文会一步一步的教你实现效果图中的效果,包会。。。如果还是不会的话,欢饮点击下面的链接去看看我的项目中怎么用的。我的开源项目:Gank.io客户端 App 下载地址原创 2017-04-21 14:27:26 · 2041 阅读 · 0 评论 -
Java反射笔记
Java反射笔记Class的获取Class 的名字Class 的修饰符获取 Class 的成员获取 Filed获取指定名字的属性获取所有属性获取 Method获取 ConstructorField 的操控Field 类型的获取Field 修饰符的获取Field 内容的读取与赋值Method 的操控Method 获取方法名Method 获取方法参数M...原创 2018-03-27 20:52:41 · 660 阅读 · 0 评论 -
Glide4 使用教程
Glide4 使用教程一、前言二、Glide 基本使用1、简单用法2、占位图2.1 加载占位图2.2 错误占位图2.3 null 占位图(后备回调符)3、加载指定大小的图片4、加载不同格式 Gif、Bitmap、Drawable、File5、缩略图的使用6、Glide 预加载、缓存到硬盘、以及加载监听6.1 换一种方式加载图片6.2 预加载图片到缓存6.3 下载...原创 2018-04-16 17:47:25 · 1568 阅读 · 0 评论 -
Java常用集合框架(一)
Java常用集合框架(一)前言一、实现了 Collection 接口1.1、List 接口1.1.1 ArrayList1.1.2 LinkedList1.1.3 ArrayList LinkedList 使用场景1.2、 Set 接口1.2.1 HashSet1.2.2 LinkedHashSet1.2.3 TreeSet1.3、 Queue二、实现了 M...原创 2018-03-29 13:34:54 · 788 阅读 · 0 评论 -
计算机网络学习之 Https 相关
计算机网络学习之 Https 相关文章目录计算机网络学习之 Https 相关一、前言二、HTTPS 简介为什么要使用 HTTPS?HTTP 和 HTTPS 的区别SSL/TLS三、HTTPS 握手过程1.Client Hello2.Server Hello3.Certificate, Certificate Status, Server Key Exchange, Server Hello Do...原创 2019-06-30 12:05:49 · 525 阅读 · 0 评论 -
计算机网络学习之 http 相关
文章目录一、简介Http 协议的特点二、URI 和 URLURIURLprotocol 协议hostname 主机名port 端口号(可选)path 路径query 查询(可选)fragment 片段(可选)三、网络分层体系3.1 应用层3.2 传输层可靠性连接性报文连接对象个数拥塞控制3.3 网络层3.4 链路层四、HTTP 报文4.1 请求报文1. 请求行2.请求头部3.请求体4.2 响应报文...原创 2019-06-28 19:06:25 · 688 阅读 · 2 评论 -
OkHttp 源码解析(二)拦截器原理分析
文章目录一、前言二、用户自定义拦截器之-应用拦截器三、RetryAndFollowUpInterceptor 拦截器四、BridgeInterceptor拦截器五、CacheInterceptor拦截器六、ConnectInterceptor拦截器七、用户自定义网络拦截器拦截器八、CallServerInterceptor拦截器九、最后一、前言在上一篇 OkHttp 请求流程分析中,分别介绍了...原创 2019-07-07 19:50:00 · 555 阅读 · 0 评论 -
OkHttp 源码解析(一)请求流程分析
文章目录一、前言二、从同步请求流程开始2.1 一次同步请求2.2 构建 OkHttpClient 对象2.3 创建 Request2.4 构建 Call 对象2.5 调用 execute() 完成同步请求关键点 1关键点 21、在 RealCall 中会先生成第一个 RealInterceptorChain 对象,执行其 proceed 方法2、在 RealInterceptorChain 内部...原创 2019-07-07 19:48:35 · 653 阅读 · 0 评论 -
Android 事件分发机制
Android 事件分发机制文章目录Android 事件分发机制前言Android 事件分发中的事件是什么?Android 事件分发是什么?为什么会有事件分发机制?事件分发里面重要的三个方法事件分发讲解Activity 的事件分发ViewGroup 的事件分发。View 的事件分发关于事件分发的总结前言Android 分发机制是每个 Android 开发者所要必须了解的知识点,了解了分发机制...原创 2019-06-04 16:49:20 · 399 阅读 · 0 评论 -
如何正确的终止一个线程?
文章目录前言1、使用 volatile 关键字修饰 变量的方式终止2、使用 interrupt() 方式终止2.1正常执行,没有被休眠、等待2.2 线程处于阻塞状态3、Stop 方法终止4、使用建议前言我们知道当调用 Thread 的 start()方法,执行完 run()方法后,或在 run()方法中 return,线程便会自然消亡。但是如果一些线程长时间的在后台运行,那么怎么去停止呢?下面...原创 2019-06-10 23:05:42 · 684 阅读 · 0 评论 -
Android提供的 LruCache 的分析
文章目录前言什么是三级缓存缓存的核心 LRU 算法LruCache官方描述看下成员变量和构造方法常用方法分析put() 添加缓存trimToSize() 控制缓存的容量remove() 删除缓存get() 获取缓存evictAll清除全部缓存数据最后前言在日常的开发当中,我们主要的工作就是把用户想要看的信息通过界面展示出来,难免就要和数据打交道,对于一些用户关心的数据,我们肯定是要每次都要从网...原创 2019-06-15 16:35:57 · 544 阅读 · 0 评论 -
HashMap 源码分析
文章目录前言HashMap 简介HashMap 源码分析一些变量和常量构造方法常用方法put、 putVal扩容关键方法 resize没有发生 hash 碰撞发生了 hash 碰撞先判断当前头节点的 key 是否相等,这个会根据 hash 值、key 是否为 null,不为 null 的时候,调用 key 的equals 方法进行比较 key 是否相等。如果为 null ,或者 key 相等,待...原创 2019-06-09 18:12:40 · 216 阅读 · 0 评论 -
LinkedHashMap 源码分析
文章目录前言LinkedHashMap 的介绍LinkedHashMap 分析构造方法存入数据afterNodeInsertion 方法删除数据afterNodeRemoval 方法获取操作afterNodeAccess 方法遍历最后前言前面对 HashMap 的源码做了分析,我们知道 HashMap 内部的数据结构是数组+单链表/红黑树实现的,这种数据结构是不能保证数据插入的有序性的,因为会...原创 2019-06-13 23:13:12 · 465 阅读 · 0 评论 -
LinkedList 源码分析
LinkedList 源码分析文章目录LinkedList 源码分析前言LinkedList 简介LinkedList 源码分析一些属性构造方法作为列表使用的一些方法:添加(add)的一些方法删除(remove)的一些方法修改(set)的一些方法查找(get)的一些方法清除(clear) 的一些方法作为队列使用的一些方法队列是什么?LinkedList 里面的实现add 、offerremove...原创 2019-06-07 16:04:52 · 486 阅读 · 0 评论 -
ArrayList 源码分析
文章目录前言ArrayList 简介ArrayList 源码分析一些属性构造方法add 方法addAll 方法remove 方法set 方法get 方法clear 方法indexOf 方法isEmpty 方法总结前言ArrayList 算是我们开发中最经常用到的一个集合了,使用起来很方便,对于内部元素的随机访问很快。今天来分析下ArrayList 的源码,本次分析基于 Java1.8 。Ar...原创 2019-06-06 16:42:20 · 424 阅读 · 0 评论 -
Android 多线程之 IntentService 源码分析
Android 多线程之 IntentService 源码分析文章目录Android 多线程之 IntentService 源码分析一、前言二、初识` IntentService`2.1 API 文档定义2.1 使用时需要关注的方法 `onHandleIntent(Intent intent)`三、基本使用三、源码分析3.1 成员变量3.2流程解析3.3 为什么多次启动` IntentServi...原创 2019-05-05 17:57:11 · 887 阅读 · 0 评论 -
Android 多线程之 AsyncTask使用源码分析
Android多线程—AsyncTask使用源码分析Android多线程—AsyncTask使用源码分析一、前言二、初识 AsyncTask2.1 API 文档定义2.2 泛型参数2.3 必须实现的抽象方法2.4 其他的重要的可重写的方法2.5 一些不需要重写的重要方法2.6 一些使用注意事项三、AsyncTask 的使用3.1 实例展示四、源码分析4.1 ...原创 2018-08-08 19:58:12 · 1040 阅读 · 0 评论 -
Android多线程之 HandlerThread 源码分析
一、前言安卓多线程在开发中也是重中之重了,前面已经对 Android 多线程中的 Handler 的使用和源码分析了,今天就来看下 HandlerThread 的源码分析。二、...原创 2018-08-06 19:26:03 · 875 阅读 · 0 评论 -
Date日期工具类---Java
Date日期工具类 做开发的人一般都会慢慢地积累自己的工具类库,自己目前还没有建立,所以从现在开始就慢慢地着手积累代码,对一些公共的代码进行收集整理,做成自己喜欢的工具类供以后开发使用。此工具类会一直慢慢的完善。。。由日期格式(yyyy-MM-dd)获得该日期是星期几;/** * 判断当前日期是星期几 * * @param pTime 修要判断的时间 * @return dayForW原创 2016-09-26 17:52:59 · 481 阅读 · 0 评论 -
安卓开发工具类【转载自洪洋大神博客】
此博客是转载自洪洋大神的,原博客地址:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【张鸿洋的博客】 以后自己会重新写出属于自己风格的工具类,再次膜拜下洪洋大神 打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~在此感谢群里给我发...转载 2016-09-26 21:50:45 · 2796 阅读 · 0 评论 -
使用编译时注解实现简易的 ButterKnife 效果
一、前言二、准备三、编码实现3.1 编写注解3.2 编写注解处理器3.3 编写 api 模块四、使用一、前言现在有太多了关于注解的三方框架供我们使用,比如 ButterKnife、Dagger2 等,我们不仅要会使用,还要知道其中的大致原理。接下来就通过一个小的实例来熟悉下编译时注解。关于注解的基础知识就不介绍的,有兴趣的可以去看看这篇文章,写的挺...原创 2018-04-18 15:26:45 · 307 阅读 · 0 评论 -
Ionic Angular 实现验证码倒计时功能
前段时间分享了 Android 原生实现验证码倒计时,地址是这里,现在公司使用 Ionic 开发的 App 也要实现类似的功能,现在也记录下来,供大家参考:效果图:正文首先介绍下与本文相关的概念 $interval $interval 是 window.setInterval 的 Angular 包装形式,函数如果在没有被取消的时候会无限执行。(取消使用 cancel(promise) )用法:$i原创 2017-04-19 18:42:32 · 2753 阅读 · 0 评论 -
Ionic Cordova实现软键盘的监听 以及操作大全
今天在做项目的时候,在键盘显示的时候隐藏某些操作,键盘隐藏的时候,打开某些操作。网上找了很久,才找到具体的监听事件,特此记录下来,供大家参考:首先需要添加插件:cordova plugin add ionic-plugin-keyboard --save1.软键盘显示监听window.addEventListener('native.keyboardshow', function (e) {原创 2017-04-19 18:40:26 · 11771 阅读 · 9 评论