- 博客(226)
- 资源 (6)
- 收藏
- 关注
原创 总结一下Android编码时的一些技巧
1.高效的返回一个带泛型的空集合javaCollections. emptyList()2.判断当前集合size是否为空Collection.isEmpty()3.SharedPreferences清空Key值下的数据SharedPreferences.Editor editor = userSettings.edit();editor.remove("KEY");editor....
2020-02-26 08:45:30 332
原创 Android大牛的博客连接
一些稀有的博客连接和知识点1.视频播放的第三方框架:vitamio、google开源框架Exoplayer、 jikplayer 2.美团技术团队:http://tech.meituan.com/3.360技术博客:http://blogs.360.cn4.腾讯移动互联网设计团队 MXD:http://mxd.tencent.com/5.腾讯全端技术团队:http://www.alloyteam.c
2016-10-27 14:55:35 425
原创 RecyclerView源码阅读(一) onMeasure、onLayout、onDraw
RecyclerView是google提出ListView的替代品。更强大的缓存支持,Grid模式和Horizantal模式展示。基本使用方式:RecyclerView.setLayoutManager()RecyclerView.setAdapter()RecyclerView.setItemAnimator()RecyclerView.addItemDecoration()解释说明。setLayoutManager:必选项,设置 RV 的布局管理器,决定 RV 的显示风格。常用的有线性
2021-04-30 11:43:34 543
转载 写给 Android 应用工程师的 Binder 原理剖析
前言这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无法用清晰直白的文字准确的表达出 Binder 的设计精髓。直到今天提笔写作时还依旧战战兢兢。Binder 之复杂远远不是一篇文章就能说清楚的,本文想站在一个更高的维度来俯瞰 Binder 的设计,最终帮助大家形成一个完整的概念。对于应用层开发的同学来说,理解到本文这个程度也就差不多了。希望更加深入理解 Binder 实现机制的,可以阅读文末的参考资料以及相关
2021-04-09 11:20:53 197
原创 macOS 配置Android SDK 环境变量
配置SDK1.Android Studio 默认SDK位置,打开终端查看下能否进入,如果能往下走,如果不能停步,移往别处。$ cd ~/Library/Android/sdk注意:~表示当前登录用户的根目录。2.在当前用户创建文件夹$ cd ~ //切换到根目录$ touch .bash_profile //如果没有县创建bash_profile3.以记事本的方式打开文件夹$ open -e .bash_profile4.在打开的文本文件中输入如下内容保存export ANDR
2021-03-23 14:41:17 2831
原创 Kotlin list 转 map
val colors: List<Color> = listOf( Color("SILVER", "#C0C0C0"), Color("GOLD", "#FFD700"), Color("OLIVE", "#808000") ) 1. associate() function // Add mapping from name to hex of Color object val map: Map<S...
2021-01-27 16:32:50 4289
原创 在子线程中计算RecyclerView数据DiffResult并回调
DiffUtil.Callback介绍RecyclerView 是我们日常开发中最常用的组件之一。当我们滑动列表,我们要去更新视图,更新数据。我们会从服务器获取新的数据,需要处理旧的数据。通常,随着每个item越来越复杂,这个处理过程所需的时间也就越多。在列表滑动过程中的处理延迟的长短,决定着对用户体验的影响的多少。所以,我们会希望需要进行的计算越少越好。现在,我们的列表已经显示在屏幕上,获取的新的数据后需要更新,我们会调用notifyDataSetChanged() 方法。然而这个方法实际上非常消耗
2020-11-17 15:31:47 877
原创 android一个简单圆形进度条编写(知识点拾遗)
前言先上UI图,好久没有写过自定义控件了,好多api都忘记了。写票文章记录一下写这个控件时用到的知识点。参考UI,我得出的需要绘制的图像有3个刻度带阴影的背景渐变色的进度展示流程与思考1、首先新建 class继承自View 文件class CloudRecordCircleProgress @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0)
2020-07-15 21:21:22 457
转载 Android自定义View:MeasureSpec的真正意义与View大小控制
自定义View是Android开发中最普通的需求,灵活控制View的尺寸是开发者面临的第一个问题,比如,为什么明明使用的是WRAP_CONTENT却跟MATCH_PARENT表现相同。在处理View尺寸的时候,我们都知道最好在onMeasure中设定好自定义View尺寸,那么究竟如何合理的选择这个尺寸呢。直观来说,可能有以下问题需要考虑:自定的View最好不要超过父控件的大小,这样才能保证自己能在父控件中完整显示自定的View(如果是ViewGroup)的子控件最好不要超过自己的大小,这样才能保证子控
2020-07-15 18:15:56 699
原创 Kotlin中常用的几个关键字
1. val / var 变量声明val:修饰变量时相当于 java 中 finalvar2. fun 函数声明3. ${} 字符串模板4. import 导入任何种类的声明同 java 中的 import ,区分不同包中的同名类kotlin 分包和 java 不同,不是严格的分包。即可以不在包对应的文件夹下。4. enum class 枚举5. when 分支表达式6. ...
2020-04-08 11:11:00 455
原创 Android Drawable 快速复制粘贴魔板
BitmapDrawable 例子antialias:是否开启图片抗锯齿功能。dither:是否开启抖动效果。gravity:可以配置图片的显示位置,如果控件的宽高大于图片的话,可以设置具体显示的位置tileMode:平铺模式。“disabled” “clamp” “repeat” “mirror”<?xml version="1.0" encoding="utf-8"?>...
2020-04-07 20:13:24 508
原创 RxJava2操作符使用
1.基本创建操作符create()RxJava 中创建被观察者对象最基本的操作符作用:完整创建1个被观察者对象(Observable) Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() { ...
2020-04-07 18:20:10 692
原创 面试时你被问到做过Android哪些优化时该回答什么
一、布局优化:1)尽量减少布局文件的层级。层级少了,绘制的工作量也就少了,性能自然提高。2)布局重用 include 标签和 merge标签3)按需加载:使用ViewStub实现布局懒加载二、绘制优化:基于onDraw会被调用多次,该方法内要避免两类操作:创建新的局部对象,导致大量垃圾对象的产生,从而导致频繁的gc,降低程序的执行效率。不要做耗时操作,抢CPU时间片,造成绘制很卡不...
2020-03-22 21:49:02 428
原创 Handler同步屏障机制的原理和使用场景
什么是Handler的同步屏障Handler中的Message可以分为两类:同步消息、异步消息。消息类型可以通过以下函数得知//Message.javapublic boolean isAsynchronous() { return (flags & FLAG_ASYNCHRONOUS) != 0;}一般情况下这两种消息的处理方式没什么区别,在设置了同步屏障时才会出现差...
2020-03-22 20:26:48 2422
原创 Android RadioGroup动态添加RadioButton
import android.app.AppComponentFactory;import android.content.Context;import android.text.Html;import android.util.AttributeSet;import android.util.Log;import android.view.LayoutInflater;import ...
2020-02-22 12:28:22 1114
原创 不透明度16进制表示
透明度百分比16进制100%FF95%F290%E685%D980%CC75%BF70%B365%A660%9955%8C50%8045%7340%6635%5930%4D25%4020%3315%2610%1A5%0D...
2020-01-11 21:53:51 1667
转载 从一道面试题谈Linux下fork的运行机制
今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目:给出如下C程序,在Linux下使用gcc编译:#include "stdio.h"#include "sys/types.h"#include "unistd.h" int main(){ pid_t pid1; pid_t pid2; pid1 = fork(); pi...
2020-01-08 13:25:21 177
原创 面试必问之Android界面跳转时的生命周期
简单介绍一下后面用到的 Activity:FirstActivity:当前 App 的默认启动 Activity。界面中包含一个点击可跳转到 SecondActivity 的 button。SecondActivity:上面 FirstActivity 跳转的 Activity,界面包含一个点击 finish 当前 Activity 的 button。很简单。咱们先看一下 andro...
2019-12-16 16:15:36 1038
原创 HTTP 的概念、原理、⼯作机制、数据格式
HTTP 的定义Hypertext Transfer Protocol,超⽂本传输协议,和 HTML (Hypertext Markup Language 超⽂本标记语⾔言) ⼀一起诞生,用于在⽹络上请求和传输 HTML 内容。超⽂文本,即「扩展型文本」,指的是 HTML 中可以有链向别的⽂文本的链接 (hyperlink)。HTTP 的⼯工作⽅方式浏览器:用户输入地址后回车或点击链接...
2019-12-10 20:27:58 695
原创 结合Retrofit的create方法说一下java的动态代理
代理模式 的好处1.可以隐藏委托类的实现;2.可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。动态代理代理类在程序运行时创建的代理方式被成为 动态代理注意这里的运行时首先看一下在 Retrofit#create 方法中使用到的动态代理 public <T> T create(final Class<T> service) {...
2019-12-07 20:48:47 415
原创 解决Activity启动黑白屏问题
先上图。注意看底部,点击图标时会直接显示icon,然后在加载SplashActivity的View。使用的机型是oneplus 5t ,系统是android9.0。首先要说明的是无论是APP启动,还是startActivity都是Activity的启动,最后都是ActivityManagerService启动一个新的Activity。咱们先看一下闪屏的原因。闪屏的原因当点击桌面的launc...
2019-12-02 14:01:49 622
原创 Java基础篇
Java 基础方面1.什么是面向对象(OOP)?面向对象就是程序的一种设计模式,或者说是一种设计规范。基本思想就是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。https://blog.csdn.net/u013728021/article/details/102851884...
2019-11-25 15:58:56 332
原创 如何解决Android studio错误“Unsupported Modules Detected: Compilation is not supported for following module
1-结束项目2-关闭Android Studio(打开显示隐藏文件)3-删除.IDEA目录4-删除所有.iml文件5-打开android studio并导入该项目
2019-11-22 11:43:10 5299 6
原创 Android中如何使控件保持固定宽高比
如何实现固定的宽高比,现在提供两种方案。1. 自定义view自定义RatioView,重写onMeasure或onLayout等相关方法,通过预定的比例计算宽高。代码:public class RatioView extends View { private int mRatio=2; public RatioView(Context context) { ...
2019-11-15 09:21:01 1130
原创 Java中Integer.parseInt 和 Integer.valueOf 区别
Integer.parseInt() 和 Integer.valueOf() 都是用来 将String转换为Int的,但是为什么Java会提供两个这样的方法呢,他们如果是同样的操作,岂不是多此一举?我们来深挖Java源代码一探究竟。Integer.parseInt(),返回一个原子类型int.Integer.valueOf(), 返回的是封装的Integer对象。Integer.par...
2019-11-01 19:59:44 3362
原创 深入理解Java中的String
String类先看一下源码(jdk1.8.0_144)中的对于类的定义public final class String implements java.io.Serializable, Comparable<String>, CharSequence { ...}首先可以看到String类是被final修饰的,即意味着String类不能被继承,并且它的成员方法都...
2019-11-01 19:04:44 146
原创 Java面向对象详解
首先我们要区分一下“基于对象”和“面向对象”的区别。基于对象,通常指的是对数据的封装,以及提供一组方法对封装过的数据操作。比如 C 的 IO 库中的 FILE * 就可以看成是基于对象的。面向对象,则在基于对象的基础上增加了多态性。在java中基本思想就是使用对象、类、继承、封装、多态等基本概念来进行程序设计。对象对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对...
2019-11-01 10:14:09 271
原创 系统服务与bindService等启动的服务的区别
前言服务可分为系统服务与普通服务,系统服务一般是在系统启动的时候,由SystemServer进程创建并注册到ServiceManager中的。而普通服务一般是通过ActivityManagerService启动的服务,或者说通过四大组件中的Service组件启动的服务。这两种服务在实现跟使用上是有不同的,主要从以下几个方面:服务的启动方式服务的注册与管理服务的请求使用方式服务的启动方...
2019-10-31 21:04:27 1329 2
原创 Activity中的四种启动模式
配置清单文件可配置的launchmodestandard:这个是android默认的Activity启动模式,每启动一个Activity都会被实例化一个Activity,并且新创建的Activity在堆栈中会在栈顶。singleTop:如果当前要启动的Activity就是在栈顶的位置,那么此时就会复用该Activity,并且不会重走onCreate方法,会直接它的onNewIntent方法...
2019-10-31 18:18:38 277
原创 ViewGroup事件分发机制
小结每次按下直到取消或者抬起,都会进行一次事件分发。事件分发是由Activity传递给Window,Window传递给DecorView实际就是ViewGroup的dispatchTouchEvent这个方法进行分发。如果ViewGroup的dispatchTouchEvent方法回false,那么只会响应ACTION_DOWN的事件,其它事件不再响应。如果ViewGroup的dispat...
2019-10-31 09:12:14 215
原创 View的事件分发机制
View的两个重要方法dispatchTouchEvent(MotionEvent event) 负责事件分发,事件是从这个方法开始分发的。onTouchEvent(MotionEvent event) 触摸事件。dispatchTouchEvent(MotionEvent event)源码分析public boolean dispatchTouchEvent(MotionEvent ...
2019-10-30 20:19:46 207
原创 Activity的事件分发机制
MotionEvent的4种类型事件类型具体动作MotionEvent.ACTION_DOWN按下(所有事件的开始)MotionEvent.ACTION_UP抬起MotionEvent.ACTION_MOVE滑动MotionEvent.ACTION_CANCEL结束事件(非人为原因)事件分发的本质是将点击事件(MotionEvent)传递到某个...
2019-10-30 20:12:51 664
转载 客户端HTTP请求优化实战
转自 https://zhuanlan.zhihu.com/p/31927387一、引言对每个APP来说,网络请求必不可少,虽然有大把现成的框架能帮助我们轻松的完成这项工作,但是实际考究效果时,会发现经常有用户反应请求很慢,页面刷不出来,菊花转不停等问题,可见其中还是存在不少优化空间的,这篇文章就烫爷在项目中对HTTP请求做的优化,做一个简单的梳理。二、数据采集要解决问题,必先分析问题,要...
2019-10-30 15:15:07 492
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人