android 进阶
文章平均质量分 82
Amarao
这个作者很懒,什么都没留下…
展开
-
Android 关于Handler面试的坑
目录一、问题二、Handler机制和原理1. Handler中包含的对象2.运行机制三、Message 消息队列对于延迟消息的处理1. 先看一下发送消息2.之后看一下消息队列2.1重点讲解 3 处,这个地方要分类去讨论3、总结四、接收消息总结回顾问题一、问题说下 handler 机制,Looper 通过 MessageQueue 取消息,消...转载 2019-03-19 11:02:19 · 611 阅读 · 0 评论 -
SmartRefreshLayout 仿美团下拉刷新
先上图:今天写了下拉刷新,框架用的是 SmartRefreshLayout 从零撸美团项目地址:https://github.com/cachecats/LikeMeiTuan一、分析美团的下拉加载动画初看挺简单的,就一个卖萌的小人。细看的话还稍微有点复杂,一共有三个状态。刚开始下拉的时候,小脑袋从小变大的过程。 下拉到一定程度但还没松手,小人翻了个跟头直到完全出现。再往...转载 2018-09-22 11:45:28 · 1704 阅读 · 0 评论 -
android如何添加gif动态图片
使用android-gif-drawableGIT地址: https://github.com/koral–/android-gif-drawable 1.首先添加引用文件 ,只需要的app的build.gradle里添加dependencies { implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.1...原创 2018-09-22 11:18:22 · 8217 阅读 · 0 评论 -
Android 性能优化
目录性能优化的目标一、快二、稳三、小四、省五、工具性能优化的目标基本总结为:快,稳,省,小如下图一、快如何让 app 在运行过程过不卡顿,运行流畅,速度快,也就是说如何解决卡顿呢?我们先看看那些因素影响卡顿? UI,包括ui的绘制,刷新等 启动,包括冷启动,热启动,温启动等 跳转,页面跳转,前后台切换 ...转载 2018-09-03 11:29:26 · 236 阅读 · 0 评论 -
一步步搭建MVP架构
MVC MVP MVVM (图文):https://blog.csdn.net/jinmie0193/article/details/81531907MVC MVP MVVM (代码):https://blog.csdn.net/jinmie0193/article/details/81536793本文代码下载:https://download.csdn.net/download/jinm...原创 2018-09-02 17:39:55 · 893 阅读 · 0 评论 -
RxJava2 使用详解一之基础教程
目录一、配置二、原理第一步:创建被观察者第二步:创建观察者第三步:建立订阅关系链式操作ObservableEmitter:Disposable:subscribe()重载方法下篇:RxJava2 使用详解二之线程调度一、配置要在Android中使用RxJava2, 在app的build.gradle中添加依赖:/*导入Rxjava RxAndr...转载 2018-08-30 15:10:59 · 1383 阅读 · 0 评论 -
友盟统计U-APP集成和多渠道打包
0. 序言友盟之所以被阿里收购,说到底是统计做得好. 国内APP统计就选U-APP.1. U-APP 功能应用趋势 清晰展示新增用户、活跃用户、启动次数、版本分布、行业指标等数据,整体把控运营情况及增长动态. 渠道分析 清晰展示各渠道的新增用户、活跃用户、次日留存率等用户指标,衡量渠道推广效果. 留存分析 掌握每日(周/月)的新增用户在初次使用后一段时间内的留存率,反映了产品...转载 2018-08-29 16:05:49 · 1655 阅读 · 0 评论 -
Android 屏幕适配详细讲解
一、前言屏幕适配① 到底哪一种屏幕适配最合适,仁者见仁智者见智.② 开始我推荐dimens基于px的适配,而后来我推荐dimens dp的适配,而如今我推荐修改今日头条的适配(修改手机的设备密度 density)。屏幕尺寸屏幕的对角线的长度。屏幕分辨率屏幕宽和高两者的像素值之积。二、正文切图之前我我推荐切图依照1280 * 720的分辨率进行切图,既适用于更...转载 2018-08-29 16:04:21 · 703 阅读 · 0 评论 -
Retrofit 2.0 使用教程一之原理介绍
目录前言1. 简介2. 与其他开源请求库对比3. 使用介绍步骤1:添加Retrofit库的依赖步骤2:创建 接收服务器返回数据 的类步骤3:创建 用于描述网络请求 的接口注解类型注解说明第一类:网络请求方法第二类:标记第三类:网络请求参数汇总步骤4:创建 Retrofit 实例a. 关于数据解析器(Converter)b. 关于...转载 2018-08-31 15:51:26 · 284 阅读 · 0 评论 -
RxJava2 使用详解二之线程调度
目录一、RxJava2线程调度1、Observable和Observer默认在主线程中执行2、去子线程中发送事件,主线程接收事件3、subscribeOn() 指定发送事件的线程, observeOn() 指定接收事件的线程. 二、RxJava2的线程选择:三、实际开发中使用(网络请求)上篇:RxJava2 使用详解一之基础教程一、RxJava2线程调度在 R...转载 2018-08-31 12:37:23 · 1065 阅读 · 1 评论 -
Android 系统架构及源码目录
目录四层模型五层模型应用层应用框架层(Java Framework)系统运行库层(Native)硬件抽象层(HAL)Linux内核层总结Android系统源码目录 下面先看看网上常见的四层和五层模型图解,其实五层模型只是多介绍了硬件抽象层(HAL)。Android的体系架构鼓励系统组件重用,共享组件间的数据,并定义组件间的访问权限控制。可以说,这...转载 2018-08-19 10:00:22 · 753 阅读 · 0 评论 -
Android 碎片fragment使用详解
作为一名专业的android开发人员,需要我们能够同时做到兼顾平板和手机。下面的内容会对你有一定帮助目录1.碎片介绍2.碎片的基本使用3.动态添加碎片4.在碎片中模拟返回栈5. 碎片和活动间的通信6.碎片的生命周期7.动态加载布局技巧提升1.碎片介绍碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在...原创 2018-08-18 23:02:50 · 3112 阅读 · 1 评论 -
Android 常用限定符
目录在安卓3.2之下的适配 限定符android3.2之后引入的,目前推荐使用的;在安卓3.2之下的适配 限定符为了适配不同屏幕大小的android手机或android平板,有时候就需要利用限定符来为不同的屏幕设定不同的布局文件。 android中一些常用的限定符如下所示:屏幕特性 限定符 描述 屏幕尺寸 small 小屏幕 no...转载 2018-08-18 22:56:05 · 2518 阅读 · 1 评论 -
安卓 视频直播二:推流端代码
想要从底层一步步写起比较麻烦,需要了解一点图像处理的知识,为了快速开发,我选择通过第三方的SDK,这里简单说一下第三方SDK,其中有腾讯,阿里,百度云,网易,金山云,抖音,大牛都支持不过各有利弊。(1)腾讯云ILVB实名认证后需要人工审核5个工作日,反正至今没有看到SDK;(2)阿里云提供多媒体云服务,但是至今尚未提供移动直播SDK;(3)百度云接口还很粗糙,连移动直播必选的美颜功能都...原创 2018-10-25 22:35:46 · 2472 阅读 · 0 评论 -
安卓 视频直播三:nginx搭建服务器
利用nginx与nginx-rtmp-module搭建流媒体服务器实现直播1. 下载 nginx 1.7.11.3 Gryphon下载链接: http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip下载完成后解压;将解压后的目录名:nginx 1.7.11.3 Gryphon改成:nginx-1.7.11.3-Gry...转载 2018-10-25 22:49:58 · 835 阅读 · 0 评论 -
安卓 视频直播一:流程分析
视频直播的流程可以分为如下几步:1.采集 —>处理—>编码和封装2.推流到服务器—>服务器流分发3.播放器流播放图解:一.采集采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节。视频的采集涉及两方面数据的采集:音频采集和图像采集,它们分别对应两种完全不同的输入源和数据格式。1.音频采集 音频...原创 2018-10-24 22:51:43 · 1140 阅读 · 0 评论 -
MpAndroidChart-LineChart 折线图使用(含动态添加点,动态添加曲线)
目录零、简介一、MpAndroidChart的基本使用1.依赖:project的build.gradle 中添加2.app的build.gradle 中添加3.举例4.常用API二、MpAndroidChart-LineChart的基本使用配置1.XAxis(X轴)2.YAxis(Y轴)3.Legend(图例:即上图所示的曲线图下面的 温度)4.Desc...原创 2019-05-16 10:42:25 · 24816 阅读 · 23 评论 -
LeakCanary 内存泄漏检测工具
目录一、介绍二、使用教程1. 添加依赖2.初始化3.使用 RefWatcher 监控 Fragment三、如何查看内存泄漏四、工作机制五、自定义UI 样式1.res2.string六、上传 leak trace 到服务器1.创建一个 LeakUploadService2.请确认 release 版本,使用 RefWatcher.DISABLED:...原创 2019-05-15 16:06:25 · 574 阅读 · 0 评论 -
快手工程笔试题A卷 部分知识点总结
计算机网络https://zhidao.baidu.com/question/652547257760057045.htmlhttps://blog.csdn.net/q2213065359/article/details/82832912https://blog.csdn.net/xqhadoop/article/details/79634854一、计算机网络各层协议应用层协...原创 2019-03-30 18:05:47 · 1407 阅读 · 0 评论 -
Android 最全面试题汇总(问题+答案+详解链接)
大厂的Android面试一般不简单,基本都会涉及Java、算法,当然也移不开Android的题目。本文主要涉及Android相关的问题,之后我会陆续公布Java,以及算法的相关面试题总结。目录一、基本问题Android的四大组件以及作用描述下Activity的生命周期?屏幕旋转时的Activity生命周期:Activity的启动模式onNewIntent的调用时...原创 2019-03-09 20:24:03 · 3839 阅读 · 0 评论 -
Android 支付宝使用的开源项目
下边是支付宝 Android 客户端使用的开源组件,在这里跟大家分享一下。项目名称 项目介绍 github仓库地址 FFmpeg FFmpeg一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序 https://github.com/FFmpeg/FFmpeg achartengine 一个图表库,现在Android上用的较多的是—-MP...原创 2018-08-30 15:26:04 · 359 阅读 · 0 评论 -
gson转化为带泛型的Map(K, V):com.google.gson.internal.LinkedTreeMap cannot be cast to xx(entity)
目录错误日志:解释:原因:错误代码:解决方法(零)、TypeToken解决其他几种解决思路(一)、当Map的Key为String类型时正确代码1:(二)、通过 由Map的key组成的List,和有value组成的List解决正确代码2:错误日志: com.google.gson.internal.LinkedTreeMap canno...原创 2019-01-28 14:15:03 · 5257 阅读 · 1 评论 -
java 强引用、软引用、弱引用、虚引用讲解
目录引言一、强引用举例:介绍:二、软引用(SoftReference)举例:介绍:引用队列(ReferenceQueue)软引用处理图片三、弱引用(WeakReference)举例介绍:弱引用软引用区别弱引用处理内存泄漏四、虚引用(PhantomReference)介绍意义引言java对象的引用由高到低分为强、软、弱、...原创 2019-02-10 14:27:30 · 389 阅读 · 0 评论 -
implementation、compile、api区别
目录一、区别(举例)二、原因一、区别(举例)gradle升级3.+版本后,原来的依赖方法compile替换成了implementation和api,现在新建工程gradle默认使用的也是implementation。举例:如果你的项目中有多个模块,比如1、App模块 引用 MyMoudle模块而MyMoudle模块是通过implementation添加的依赖,此时A...原创 2019-01-30 16:45:32 · 3197 阅读 · 0 评论 -
Android 构建gradle依赖包
目录一.样例二.基本工具三.详细步骤 1 创建项目 2 创建Module模块 3 github 托管 4 发布release包,并打版本号 5 jitpack 生成gradle依赖一.样例请看常见的gradle依赖包的引用方式dependencies { implementation'com.blankj:utilcode:1.23...原创 2019-02-06 15:59:35 · 738 阅读 · 0 评论 -
Android 音频管理器AudioManager类介绍
目录一、AudioManager类介绍二、AudioManager方法简介三、AudioManager常用方法四、申请音频焦点五、第三方音频同步思路处理一、AudioManager类介绍1.AudioManager类提供了音量控制与铃声模式相关操作。2.实例化:AudioManager am = (AudioManager)context.getSystemServ...原创 2019-01-03 16:24:43 · 3103 阅读 · 0 评论 -
单例模式:饿汉式,懒汉式、双重锁,静态内部类、枚举 实现
推荐书籍:《Android源码设计模式 第二版》目录一、单例模式的定义及使用场景二、常用的单例模式实现方法饿汉式懒汉式Double Check Lock(DCL模式):双重检查锁定静态内部类实现枚举使用容器实现单例Android源码中单例使用三、总结一、单例模式的定义及使用场景定义:确保某个类只有一个实例,而且自行实例化提供给外部使用。使用场...原创 2018-11-28 13:35:23 · 859 阅读 · 1 评论 -
Android中动态调整ImageView的宽高比
1.原理我在实践中,是调整一个ListView中的Item里的ImageView元素的宽高比,类似微信公众号的消息内容,item有固定padding,然后ImageView宽度撑满屏幕,高度由一定比例决定。在写好布局文件后,首先拿到整个屏幕的宽度,然后减去左右两侧的padding所占的宽度,得到的结果就是ImageView应该设置的宽度,再由一定比例计算出高度,最后以ImageView.s...转载 2018-10-24 22:57:33 · 5582 阅读 · 0 评论 -
Android 响应式编程 RxJava 框架详解
目录使用方法:RxJava 到底是什么RxJava 好在哪API 介绍和原理简析1. 概念:扩展的观察者模式观察者模式RxJava 的观察者模式2. 基本实现1) 创建 Observer2) 创建 Observable3) Subscribe (订阅)4) 场景示例3. 线程控制 —— Scheduler (一)1) Scheduler 的 ...转载 2018-08-12 19:52:42 · 571 阅读 · 0 评论 -
安卓 常用第三方框架
目录1.下拉刷新 2.卫星菜单 3.节选器 4.模糊效果 5.HUD与Toast6.进度条 7.UI其他 8.动画 9.网络相关 10.图像获取11.响应式编程 12.地图 13.数据库 14.图像浏览及处理 ...转载 2018-08-12 19:41:22 · 1243 阅读 · 0 评论 -
Android CircleImageView实现圆形图标/头像
一、用途该框架是一个用来制作圆形图像的控件。二、使用方式:1、由于源码只有一个类和一个资源文件,因此可以直接下载源码。 2、直接引入lib库:compile ‘de.hdodenhof:circleimageview:2.1.0’ 3、在需要使用圆形图标的xml文件中引入:CircleImageView三、重要属性解释。 该控件具有四个自定义属性,如下1、civ_border_width: ...转载 2018-06-18 14:30:41 · 1761 阅读 · 0 评论 -
Android SurfaceView讲解
一、SurfaceView介绍 Android提供了View进行绘图处理,View通过刷新来重绘视图, Android系统通过发出VSYNC信号来进行屏幕重绘,刷新时间间隔为16ms, 所以如果在16ms内View完成了自己需要的操作,便不会有用户视觉上的卡顿, 但如果逻辑操作太多,需要频繁刷新界面,就会阻塞主线程,造成界面卡顿,这时候就需要SurfaceView了View...原创 2018-06-24 23:06:22 · 517 阅读 · 0 评论 -
Android 画布Canvas与画笔Paint (附带会动的钟表)
一、Canvas绘制图形的直接对象1、两种绘制环境:(1)、使用普通View的canvas画图,(2)、使用专门的SurfaceView的canvas来画图。canvas主要是区别:第一种适合处理量比较小,帧率比较小的动画,比如说象棋游戏之类的;第二种主要用在游戏,高品质动画方面的画图。因为SurfaceView中定义一个专门的线程来完成画图工作,应用程序不需要等待View的刷图,提高了性能。Vi...原创 2018-06-24 18:10:27 · 1233 阅读 · 0 评论 -
Android 事件拦截/分发机制 (图解+代码)
一、介绍Android为触摸事件封装了一个类MotionEvent,其实OnTouchEvent的一个参数就是MotionEventMotionEvent中封装了触摸点坐标、点击事件类型等Android中的View可以放在一个ViewGroup中,这个ViewGroup又放在另一ViewGroup中等等,一层层嵌套起来,同一个触摸事件,View和父ViewGroup都想要处理,我们应该传给谁呢,此...原创 2018-06-24 09:31:24 · 7052 阅读 · 10 评论 -
Android 自定义View(三):重写View实现全新控件
一、介绍Android原生控件,无法满足我们需求时,我们可以完全创建一个新的view,来实现自己需要的功能创建View的难点在于控件的重绘和实现交互通常需要重写onDraw OnMeasure等方法实现绘制逻辑,重写onTouchEvent等实现交互逻辑当然我们也可以向组合控件那样加入自定义属性我们来实现一个下图红框内的效果(步数有点少,大家不要笑)二、重写View实现全新控件分析一下 这个Vie...原创 2018-06-23 20:15:47 · 2786 阅读 · 0 评论 -
Android 自定义View(二):创建复合控件
另一个例子:自定义switch按钮创建复合控件分为三步:1. 设计属性2. 实现View3. 引用View这里设计一个qq联系人界面的TopBar其中有三部分组成,左边圆形头像,中间文本,右边按钮,还有个蓝色默认背景1.设计属性在Android Studio的res的values中右键新建XML文件qq_topbar_attrs.xml,内容如下android中通过<...原创 2018-06-22 22:16:08 · 679 阅读 · 0 评论 -
Android 自定义View(一):对现有控件的扩展
一、View的测量1.自定义View前首先要对View进行测量,即告诉系统应该画一个多大的View,这个过程在onMeasure()中进行Android通过MeasureSpec类来帮助测量View。2.MeasureSpec它有三种测量模式EXACTLY:精确模式,当layout_height/layout_width属性为具体值或指定为match_parent时,为精确模式AT_MOST: 最...原创 2018-06-22 19:29:11 · 1054 阅读 · 1 评论 -
Android ConstraintLayout 布局解析
ConstraintLayout其实是一个升级版的RelativeLayoutConstraintLayout 布局属性主要有位置控制,大小控制,一、位置控制app:layout_constraintLeft_toLeftOf //我最左边的位置 在别人的左边,以下类似app:layout_constraintLeft_toRightOfapp:layout_constraintRight_...原创 2018-06-22 14:59:57 · 872 阅读 · 0 评论 -
android虚拟摇杆
虚拟摇杆一资源下载效果如下:第一步:attr 中定义自定义参数,如下:<?xml version="1.0" encoding="utf-8"?><resources> <!-- areaBackground 设置区域背景 rockerBackground 设置摇杆的样式 rockerScale 设置摇杆的相对于背景的比例 rockerS...转载 2018-04-05 11:46:51 · 9004 阅读 · 3 评论 -
Android自定义View设计之自己需要的控件
资源链接自定义View分为三步:1. 设计属性2. 实现View3. 引用View这里已自定义顶部的TopBar为例讲解,效果如下图:其中由两部分组成,依次是左边ImageView 右边Switch。第一步:设计需要的属性在Android Studio的Values中右键新建XML文件atts.xml,内容如下<?xml version="1.0" encoding...原创 2018-04-05 10:36:22 · 510 阅读 · 0 评论