
android 开发
文章平均质量分 87
android 开发
Jaynm
Android漫漫路,码农与你同在。
展开
-
征服面试官:Binder 原理篇 掌握这篇面试题汇总,吊打面试官!
Binder 是 Android 中的一种跨进程通信方式。从 Android Framework 角度来说 Binder 是 ServiceManager 连接各种 Manager(ActivityManager、WindowManager 等等)和相应 ManagerService 的桥梁;从 Android 应用层来说 Binder 是客服端与服务端进行通信的媒介。1、什么是 Binder?直观来说,Binder 是 Android 中的一个类,它继承了 IBinder 接口从 IPC 角度来说原创 2021-05-14 12:55:50 · 2991 阅读 · 3 评论 -
征服面试官:Handler 原理篇 掌握这篇面试题汇总,吊打面试官!
1、Handler 实现机制Handler 机制有几个核心类:Handler、Looper、Message、MessageQueue。Handler 机制是一个典型的生产者消费者模式——多个生产者,一个消费者,该模式是处理线程安全的一个经典模式MessageMessage 是 Handler 接收和处理的消息对象,内部使用链表数据结构实现一个消息池,用于重复利用,避免大量创建消息对象,造成内存浪费。用于在不同线程之间交换数据。Handler主要用来发送和处理消息。发送消息一般是使用 Ha原创 2021-04-01 16:07:37 · 1292 阅读 · 0 评论 -
征服面试官:OkHttp 原理篇 掌握这篇面试题汇总,吊打面试官!
前言如今面试中高级开发工程师岗位,OKhttp 原理是必问环节,只会使用已经无法满足 Android 开发市场的需求,优秀的第三方框架源码剖析不仅能深度理解框架,也能对自己学习带来很大的帮助。本篇文章根据朋友反馈和亲身经历简单整理的一些关于 Okhttp 常见面试题目。1.Okhttp 基本实现原理OkHttp 主要是通过 5 个拦截器和 3 个双端队列(2 个异步队列,1 个同步队列)工作。内部实现通过一个责任链模式完成,将网络请求的各个阶段封装到各个链条中,实现了各层的解耦。OkHttp 的底原创 2020-12-31 09:48:40 · 4620 阅读 · 0 评论 -
Android Material Design 系列之 CoordinatorLayout + CollapsingToolbarLayout 开发详解
前言CoordinatorLayout 遵循 Material 风格,结合 AppbarLayout, CollapsingToolbarLayout 等可产生各种炫酷的效果,本篇博客就将介绍 CoordinatorLayout 的各种酷炫效果。一、View 介绍1、CoordinatorLayout又名协调者布局,它是 support.design 包中的控件。简单来说,CoordinatorLayout 是用来协调其子 view 并以触摸影响布局的形式产生动画效果的一个 super-power原创 2020-07-28 17:15:44 · 1440 阅读 · 1 评论 -
Android Material Design 系列之 BottomNavigationView + ViewPager + Fragment + BadgeView 开发详解
前言BottomNavigationView 是 Material Design 提供的一个标准底部导航栏的实现,可以轻松的实现导航栏菜单之间的切换与浏览。底部导航使用户更方便的查看和切换最高层级的导航界面,适用于有三到五个 Tab 的情况。APP 底部导航栏目中,有新消息提示用户,并在导航栏底部显示具体消息数,这种效果主流 APP 都有应用。本文就介绍 BottomNavigationView + ViewPager + Fragment + BadgeView 可以达到微信消息角标效果和 QQ 消息原创 2020-07-13 17:27:40 · 2723 阅读 · 6 评论 -
老生常谈之 Retrofit 面试看这一篇就够了
一、前言Retrofit 就是一个网络请求框架的封装,底层的网络请求默认使用的 Okhttp,本身只是简化了用户网络请求的参数配置等,还能与 Rxjava 相结合,使用起来更加简洁方便。从使用方法出发,首先是怎么使用,其次是我们使用的功能在内部是如何实现的,实现方案上有什么技巧,有什么范式。全文基本上是对 Retrofit 源码的一个分析与导读,非常建议大家下载 Retrofit 源码之后,跟着本文,过一遍源码。二、基本用例2.1 创建 Retrofit 对象Retrofit retrofit =转载 2020-07-07 16:09:29 · 2640 阅读 · 1 评论 -
Android Material Design 系列之 SearchView + Toolbar 开发详解
前言SearchView 是 Android 原生的搜索框控件,它提供了一个用户界面,可以让用户在文本框内输入文字,并允许通过看监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索。一、常见属性相关方法解释说明setIconifiedByDefault(boolean)设置该搜索框默认是否自动缩小为图标setImeOptions(int)设置输入法搜索选项字段,默认是搜索,可以是:下一页、发送、完成等setInputType(int)设置原创 2020-07-07 06:41:38 · 4635 阅读 · 3 评论 -
Android Material Design 系列之 Palette 开发详解
前言Palette 是 Android L SDK 中的新特性,可以使用 Palette 从图像中提取出突出的颜色(主色调),获取到颜色之后我们再将这个颜色值赋给 ActionBar、状态栏等。从而达到界面色调的统一,使界面美观协调。Palette 原理:通过得到一个 bitmap,通过方法进行分析,取出 LightVibrantSwatch,DarkVibrantSwatch,LightMutedSwatch,DarkMutedSwatch 这些样本,然后得到 rgb 值。一、Palette原创 2020-07-02 09:07:17 · 2406 阅读 · 1 评论 -
Android Material Design 系列之 CardView 开发详解
前言Android 5.0 版本中新增了 CardView,CardView 继承自 FrameLayout 类,具有圆角背景和阴影的 FrameLayout,并且可以设置圆角和阴影,使得控件具有立体性,也可以包含其他的布局容器和控件。本文章向大家介绍 Android CardView 详解及使用方法和实例,主要包括 Android CardView 详解及使用方法和实例使用实例、应用技巧、基本知识点总结和需要注意事项。一、CardView 常用属性XML 属性方法介绍app原创 2020-06-29 23:23:30 · 6590 阅读 · 6 评论 -
Android Material Design 系列之 DrawerLayout + NavigationView 使用详解
前言DrawerLayout 是 Support Library 包中实现了侧滑菜单效果的控件,可以说 DrawerLayout 是因为第三方控件如 MenuDrawer 等的出现之后,google 借鉴而出现的产物。DrawerLayout 分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(DrawerLayout 自身特性),主内容区的内容可以随着菜单的点击而变化。一、DrawerLayout 基础使用DrawerLayout 其实是一个布局控件,继承 ViewGroup,与 Lin原创 2020-06-25 06:14:37 · 1922 阅读 · 3 评论 -
Android Material Design 系列之 TextInputLayout 使用详解
前言本文是 Material Design 系列第四篇:TextInputLayout 主要是作为 EditText 的容器,从而为 EditText 生成一个浮动的 Label,当用户点击 EditText 的时候,EditText 中的 hint 字符串会自动移到 EditText 的左上角。TextInputLayout 的简单使用,是 Google 推出的整个 Material Design 库的一个缩影:Google 将 UI 视觉效果设计得华丽且流畅,同时代码封装更为优雅,开发者只需要在 l原创 2020-06-23 11:07:04 · 20227 阅读 · 3 评论 -
Android Material Design 系列之 TabLayout + ViewPager + Fragment 使用详解
前言本文是 Material Design 系列第三篇:TabLayout + ViewPager + Fragment 基本使用,Material Design 所有控件属于高级 UI,所以 Material Design 控件是中高级工程师必备技能。现在市面上很多主流界面效果都是采用 Material Design 风格控件完成。希望博主 Material Design 系列文章对各位初学者有所帮助,也为自己学习做详细笔记。一、TabLayout 方法介绍1、addTab(TabLayout.T原创 2020-06-20 07:29:21 · 4913 阅读 · 6 评论 -
Android Material Design 系列之 Snackbar 使用详解
前言本文是 Material Design 系列第三篇:SnackBar 的提出实际上介于 Toast 和 Dialog 的中间产物,SnackBar 提供有关操作的轻量级反馈,它们在移动设备的屏幕底部显示一条简短消息。SnackBar 出现在屏幕上所有其他元素的上方,一次只能显示一个。它们在超时后或在屏幕上其他位置的用户交互之后自动消失,特别是在召唤新的表面或活动的交互之后。Snackbar 与 Toast 的主要区别是:Snackbar 可以滑动退出,也可以处理用户交互(点击)事件。一、Sna原创 2020-06-18 10:56:37 · 6027 阅读 · 1 评论 -
Android Material Design 系列之 Toolbar 使用详解
前言在 2014 年 Google IO 大会上,Google 推出了一套全新的设计规范 Material Design,这也为广大的 Android 开发者带来了福音,不用像以前一样照着 IOS 视觉稿来开发 Android APP,Material Design 的视觉风格本身就比较炫酷。而 Google 也为我们提供符合 Material Design 风格的一系列组件,这大大的提高了我们的开发效率。由于 APP 改版在做 Material Design 化,所以后面会结合项目中的使用情况写几篇关原创 2020-06-15 06:18:29 · 6177 阅读 · 3 评论 -
Android Material Design Icon Genenerator 插件为个人开发者提供 Icon 图标大全
前言如果你作为个人开发者,没有美工小姐姐的情况下,项目中的图标 icon 很是苦恼。之前用过阿里巴巴图标库 Iconfont,后来发现 Android studio 中有一个很牛逼的 icon 插件[Android Material design icon Genenerator],轻松生成自己需要的 icon,而且还是 Vector 矢量图。一、插件介绍1、先看下官方定义:Android Studio & IntelliJ Plugin for Material Design Icon.原创 2020-06-11 10:19:25 · 3207 阅读 · 6 评论 -
Android 自定义View(五)实现跑马灯垂直滚动效果
一、前言最近一直巩固 Android 自定义 View 相关知识,以前都是阅读一些理论性的文章,很少抽时间自己去实现一个自定义 View,项目中遇到问题就上 github 上去找效果。其实自定义 View 涉及到很多内容,只有亲自动手完成几个案例,才能对相关知识点有深入了解。本文是对上篇文章的一个补充,股票 APP 列表底部有一个实时更新交易的跑马灯效果,纵观市面上很多产品都应用到这个效果,决定自己动手实现一下。二、开发准备工作1、先看效果图2、案例源码下载点击下载3、案例应用知识点原创 2020-06-08 17:19:14 · 1308 阅读 · 0 评论 -
Android 自定义View(四)实现股票自选列表滑动效果
自定义View一、前言二、开发准备工作1、先上效果图2、案例源码下载3、案例应用知识点4、案例思路分析三、代码实现1、自定义 TextView2、自定义 CustomizeScrollView3、主页面布局4、主列表 Adapter四、总结一、前言Android 开发过程中自定义 View 真的是无处不在,随随便便一个 UI 效果,都会用到自定义 View。前面三篇文章已经讲过自定义 View 的一些案例效果,相关类和 API,还有事件分发理论知识请自行充电。作者不喜欢讲一些原理性的东西,直接上效果和源原创 2020-06-06 10:47:46 · 2369 阅读 · 12 评论 -
Android 自定义View(三)实现体育赛事积分表效果
一、前言自定义 View 是 Android 中高级工程师进阶的必经之路,要想熟练掌握自定义 View 技能,View 绘制流程和 View 事件分发机制必须掌握的,开发过程中大多数情况下都能在网上找到类似的效果,可能修修改改也能满足项目需求,但是一旦遇到比较棘手的问题,可能就会让开发者很苦恼。本篇文章是自定义 View 结合 View 事件分发实现一个赛事得分表效果。如果对自定义 View 不熟悉的朋友可以参考以下文章:Android 自定义View(一)实现时钟表盘效果Android 自定原创 2020-06-03 09:10:09 · 1660 阅读 · 2 评论 -
Android Studio 4.0发布:全新的 Motion 编辑器及众多更新
在当前这个充满不确定性的时期,来自世界各地的无数开发人员依旧在想方设法继续做自己最擅长的工作——为 Android创建出色的应用,这让我们感动不已。无论你是已经复工回到办公室,还是依旧在家远程办公,都需要得心应手的工具。为此我们发布了 AndroidStudio 4.0,为大家带来全新的工具和现有工具的诸多改进,帮助开发人员更智能地编程,更快地构建,并设计出用户信赖的应用。Android Studio 4.0 的亮点包括:新的 Motion Editor(动作编辑器),让你的应用栩栩如生;Buil.原创 2020-06-03 09:16:10 · 885 阅读 · 1 评论 -
Android 自定义View(二)实现环形进度条
自定义View实现环形进度条一、前言二、实现效果1、源码下载:[点击下载](https://github.com/jaynm888/CustomizeView)2、效果图展示3、步骤分析三、代码实现1、自定义属性2、绘制圆环3、绘制圆弧4、更新进度条5、绘制文本总结一、前言Android 自定义 View 是高级进阶不可或缺的内容,日常工作中,经常会遇到产品、UI 设计出花里胡哨的界面。当系统自带的控件不能满足开发需求时,就只能自己动手撸一个效果。本文就带自定义 View 初学者手动撸一个效果,通过自原创 2020-06-01 10:18:24 · 1162 阅读 · 0 评论 -
Android 自定义View(一)实现时钟表盘效果
一、前言Android 自定义View是高级进阶不可或缺的内容,日常工作中,经常会遇到产品、UI设计出花里胡哨的界面。当系统自带的控件不能满足开发需求时,就只能自己动手撸一个效果。本文就带自定义View初学者手动撸一个效果,通过自定义View实现钟表功能,每行代码都有注释,保证易懂,看不懂你留言打我!!!二、实现效果先看效果图步骤分析实现以上效果,主要分为四个步骤:绘制外层表盘绘制刻度线绘制刻度数字绘制指针三、代码实现1、绘制外层表盘外层表盘就是一个空心圆,只要获取圆的x、y原创 2020-05-27 16:45:44 · 3194 阅读 · 0 评论 -
Android 设计模式学习(三)责任链模式应用实例
一、责任链模式介绍责任链模式(Iterator Pattern),是行为型设计模式之一。生活中常见的锁链,就是由一个个圆角长方形的铁环串起来的结构。对于链式结构,每个节点都可以被拆开再连接,因此,链式结构也具有很好的灵活性。将这样一种结构应用于编程领域,将每一个节点看作是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端发出,沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止,我们将这样的一种模式称为责任链模式。二、责任链模式定义使多个对象都有机会处理请求,从而避免了请求原创 2020-05-26 21:49:25 · 471 阅读 · 1 评论 -
Android 设计模式学习(一)单例模式线程安全与序列化
前言单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式都只会提到饿汉式和懒汉式这两种实现方式。看完本章后,你可能会发现项目中的并没有正确的使用创建单例,本文会将单例模式的创建方式和优缺点详细描述。一、单例模式介绍单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访原创 2020-05-22 15:07:18 · 570 阅读 · 0 评论 -
Android 开发者,你真的懂 Context 吗?
前言Context 相信所有的 Android 开发人员基本上每天都在接触,因为它太常见了。但是这并不代表每位 Android 开发者真正搞懂 Context!下列面试题,你真的都懂吗?(后文有回答)面试官:Android 中有哪些类型的 Context,它们有什么区别?面试官:一个APP应用里有几个 Context 呢?面试官:Android 开发过程中,Context 有什么用?面试官:ContextImpl 实例是什么时候生成的,另外在 Activity 的 onCreate 里原创 2020-05-19 13:27:38 · 376 阅读 · 1 评论 -
RxJava 入门详解
RxJava——入门篇一、ReactiveX简介二、RxJava的使用1、RxJava的优势2、RxJava的配置三、RxJava的不完整回调1、不完整回调的代码示例2、不完整回调的原理分析四、RxJava的线程切换1、Scheduler线程调度器2、线程控制五、总结一、ReactiveX简介在学习RxJava前首先需要了解ReactiveX,因为RxJava是ReactiveX的一种Java的实现形式。ReactiveX的官网地址为:ReactiveX的官网ReactiveX官网对于自身的介绍是:原创 2020-05-13 17:18:37 · 513 阅读 · 0 评论 -
写给新手Android程序员的一封信
“当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题。”欢迎来到程序员的世界。在这个世界上,不是有很多人想创造软件并解决问题。对于下面的文字你不必完全接受,所有这些来自一个其貌不扬的程序员。我喜欢把事情做到最好,而不是对原来的东西修修补补。仅仅是因为爱好开始做一些创新,这是一个很好的开始!如果你说“我要先学习一下再开始做”那么你永远不会真正开始。每个人都需要从某个地方开始,所以现在打...原创 2020-05-07 22:20:01 · 654 阅读 · 2 评论 -
Android 架构设计:MVC、MVP、MVVM详解
Android 架构设计1.架构设计的目的2.MVC设计架构MVC简介Android中的MVC3.MVP设计架构MVC的缺点什么是MVP?MVC → MVPMVP架构存在的问题与解决办法MVP代码实例4.MVVM设计架构MVVM代码实例MVVM架构优势5.MVC、MVP与MVVM的关系MVC->MVP->MVVM演进过程同异6.关于MVC,MVP,MVVM如何选择的探讨1.架构设计的...原创 2020-04-29 18:17:50 · 934 阅读 · 0 评论 -
Android 内存泄漏LeakCanary使用详解
LeakCanary使用详解添加LeakCanary依赖包开启LeakCanary配置信息模式内存泄漏效果演示添加LeakCanary依赖包https://github.com/square/leakcanary在主模块app下的build.gradle下添加如下依赖: debugCompile 'com.squareup.leakcanary:leakcanary...原创 2020-03-03 12:03:20 · 2691 阅读 · 0 评论 -
Android 内存泄漏MAT使用详解
Android内存泄漏MAT使用详解MAT使用MAT下载地址Overview视图histogram视图Dominator tree视图Leaks suspects视图下载:http://eclipse.org/mat/downloads.phpMAT工具全称为Memory Analyzer Tool,一款详细分析Java堆内存的工具,该工具非常强大,为了使用该工具,我...原创 2020-03-03 11:47:38 · 724 阅读 · 0 评论 -
Android Activity横竖屏切换生命周期详解
关于Activity生命周期和横竖屏切换时,生命周期的执行过程,网上有很多文章。但是都写的很模糊,并且不完善。一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码设置。文章通过以上方面解析Activity在横竖屏切换时,生命周期方法执行过程。1.Activity生命周期2.configChanges属性解析3.orientati...原创 2020-02-28 17:46:24 · 2198 阅读 · 1 评论 -
一行代码完美实现Android沉浸式效果
一行代码完美实现Android沉浸式效果什么是沉浸式沉浸式效果展示一行代码完美实现Android沉浸式效果什么是沉浸式? 沉浸式是APP界面图片延伸到状态栏, 应用本身沉浸于状态栏,所以如果第三方的软件没有为状态栏分配图片,那么自然就是黑色。顶端的状态栏和下面的虚拟按键都隐藏,需要的时候从边缘划出。 沉浸模式。当启用该模式,应用程序的界面将占据整个屏幕,系统自动将隐藏系统的状态栏和原创 2017-12-05 13:31:35 · 1563 阅读 · 0 评论 -
Android使用PullToRefresh完成ListView下拉刷新和左滑删除
吹在前面的话:ListView下刷新刷功能相信从事Android开发的猿友们并不陌生,包括现在Google亲儿子SwipeRefreshLayout实现效果在一些APP上也能看见(不过个人不喜欢官方的刷新效果)。本文就带领一些刚入门android的朋友或者一起爱分享的朋友来简单的实现ListView的下拉刷新和左滑删除效果。一、本文主要内容:使用PullToRefresh完成ListView下拉、原创 2016-11-02 10:47:54 · 4845 阅读 · 5 评论 -
Android 自定义View实现开关效果
前言:Android自定义View对于刚入门乃至工作几年的程序员来说都是非常恐惧的,但也是Android进阶学习的必经之路,平时项目中经常会有一些苛刻的需求,我们可以在GitHub上找到各种各样的效果,能用则用,不能用自己花功夫改改也能草草了事。不过随着工作经验和工作性质,越来越觉得自定义View是时候有必要自己花点功夫研究一下。一、经过这两天的努力,自己也尝试着写了一个Demo,效果很简单,就是原创 2016-09-20 23:40:21 · 2397 阅读 · 0 评论 -
Android网络图片处理之三层缓存详解
为什么要使用三层缓存如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知所以提出三层缓存策略,通过网络、本地原创 2016-09-20 11:09:10 · 1612 阅读 · 0 评论 -
Android仿美团外卖点菜联动列表
Android高仿美团外卖点菜联动列表效果最近项目中有一个添加购物车的需求,需要做成美团外卖点菜联动ListView的效果,可能有的朋友觉得这很简单,不就是2个Listview点击事件联动处理机制吗?没错,基本思路就是这样子,只是美团外卖点菜效果上有一种根据右边列表滑动可以监听到左边分类信息的变化状态。 可能言语上表达你们没法想象,先上一张效果图: 完成此效果需要掌握以下知识点:L原创 2016-07-08 00:32:15 · 24440 阅读 · 26 评论 -
Android通讯录字母排序城市列表展示效果
本篇文章主要给大家介绍一个通讯录列表字母A——Z排序展示的效果,其实很多场景都会用到,今天一个同事做城市列表也需要类似这样的效果,于是乎我就给他简单写了一个demo,刚好借此机会将此demo和效果展示给正在学习和需要用到该效果的android开发者。个人认为学习android是一个日积月累的过程,见得多了,写的多了,自身能力自然会提升,所以建议广大朋友可以平时多积累一些项目开发中常用的demo,这样原创 2016-07-08 15:12:09 · 5222 阅读 · 1 评论 -
Android快速开发OrmLite数据库封装详解
Android移动开发之数据库——OrmLite详解随着开源框架的广泛,对于Android开发者越来越有优势,极大的提高了开发效率和开发周期。android系统的sqlite轻量级数据库操作SQL语句较为麻烦,如果不熟悉Web开发的朋友可能对SQL语句还比较陌生。一、本文可以让你学到的内容:1.使用第三方框架OrmLite数据库开发Android移动应用程序; 2.不再使用SQL语句实现增删查改,原创 2016-03-11 17:59:32 · 2463 阅读 · 0 评论