自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(233)
  • 资源 (7)
  • 收藏
  • 关注

原创 总结一下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 96

原创 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 279

原创 在子线程中计算RecyclerView数据DiffResult并回调

DiffUtil.Callback介绍RecyclerView 是我们日常开发中最常用的组件之一。当我们滑动列表,我们要去更新视图,更新数据。我们会从服务器获取新的数据,需要处理旧的数据。通常,随着每个item越来越复杂,这个处理过程所需的时间也就越多。在列表滑动过程中的处理延迟的长短,决定着对用户体验的影响的多少。所以,我们会希望需要进行的计算越少越好。现在,我们的列表已经显示在屏幕上,获取的新的数据后需要更新,我们会调用notifyDataSetChanged() 方法。然而这个方法实际上非常消耗

2020-11-17 15:31:47 20

原创 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 61

转载 Android自定义View:MeasureSpec的真正意义与View大小控制

自定义View是Android开发中最普通的需求,灵活控制View的尺寸是开发者面临的第一个问题,比如,为什么明明使用的是WRAP_CONTENT却跟MATCH_PARENT表现相同。在处理View尺寸的时候,我们都知道最好在onMeasure中设定好自定义View尺寸,那么究竟如何合理的选择这个尺寸呢。直观来说,可能有以下问题需要考虑:自定的View最好不要超过父控件的大小,这样才能保证自己能在父控件中完整显示自定的View(如果是ViewGroup)的子控件最好不要超过自己的大小,这样才能保证子控

2020-07-15 18:15:56 67

转载 Android 中不应该使用 Enum 吗?

Android 中不应该使用 Enum 吗?

2020-07-10 20:18:28 86

原创 Android Drawable 快速复制粘贴魔板

BitmapDrawable 例子antialias:是否开启图片抗锯齿功能。dither:是否开启抖动效果。gravity:可以配置图片的显示位置,如果控件的宽高大于图片的话,可以设置具体显示的位置tileMode:平铺模式。“disabled” “clamp” “repeat” “mirror”<?xml version="1.0" encoding="utf-8"?&gt...

2020-04-07 20:13:24 111

原创 RxJava2操作符使用

1.基本创建操作符create()RxJava 中创建被观察者对象最基本的操作符作用:完整创建1个被观察者对象(Observable) Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() { ...

2020-04-07 18:20:10 131

原创 面试时你被问到做过Android哪些优化时该回答什么

一、布局优化:1)尽量减少布局文件的层级。层级少了,绘制的工作量也就少了,性能自然提高。2)布局重用 include 标签和 merge标签3)按需加载:使用ViewStub实现布局懒加载二、绘制优化:基于onDraw会被调用多次,该方法内要避免两类操作:创建新的局部对象,导致大量垃圾对象的产生,从而导致频繁的gc,降低程序的执行效率。不要做耗时操作,抢CPU时间片,造成绘制很卡不...

2020-03-22 21:49:02 150

原创 Handler同步屏障机制的原理和使用场景

什么是Handler的同步屏障Handler中的Message可以分为两类:同步消息、异步消息。消息类型可以通过以下函数得知//Message.javapublic boolean isAsynchronous() { return (flags & FLAG_ASYNCHRONOUS) != 0;}一般情况下这两种消息的处理方式没什么区别,在设置了同步屏障时才会出现差...

2020-03-22 20:26:48 626

原创 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 361

原创 不透明度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 93

转载 从一道面试题谈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 41

原创 红黑树的定义和插入操作

红黑树的定义和插入操作

2019-12-31 22:51:56 124

原创 面试必问之Android界面跳转时的生命周期

简单介绍一下后面用到的 Activity:FirstActivity:当前 App 的默认启动 Activity。界面中包含一个点击可跳转到 SecondActivity 的 button。SecondActivity:上面 FirstActivity 跳转的 Activity,界面包含一个点击 finish 当前 Activity 的 button。很简单。咱们先看一下 andro...

2019-12-16 16:15:36 122

原创 Java中方法重写的返回值修饰符问题

Java中方法重写的返回值修饰符问题

2019-12-13 15:52:16 276

原创 HTTP 的概念、原理、⼯作机制、数据格式

HTTP 的定义Hypertext Transfer Protocol,超⽂本传输协议,和 HTML (Hypertext Markup Language 超⽂本标记语⾔言) ⼀一起诞生,用于在⽹络上请求和传输 HTML 内容。超⽂文本,即「扩展型文本」,指的是 HTML 中可以有链向别的⽂文本的链接 (hyperlink)。HTTP 的⼯工作⽅方式浏览器:用户输入地址后回车或点击链接...

2019-12-10 20:27:58 198

原创 结合Retrofit的create方法说一下java的动态代理

代理模式 的好处1.可以隐藏委托类的实现;2.可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。动态代理代理类在程序运行时创建的代理方式被成为 动态代理注意这里的运行时首先看一下在 Retrofit#create 方法中使用到的动态代理 public <T> T create(final Class<T> service) {...

2019-12-07 20:48:47 78

原创 解决Activity启动黑白屏问题

先上图。注意看底部,点击图标时会直接显示icon,然后在加载SplashActivity的View。使用的机型是oneplus 5t ,系统是android9.0。首先要说明的是无论是APP启动,还是startActivity都是Activity的启动,最后都是ActivityManagerService启动一个新的Activity。咱们先看一下闪屏的原因。闪屏的原因当点击桌面的launc...

2019-12-02 14:01:49 148

原创 Java基础篇

Java 基础方面1.什么是面向对象(OOP)?面向对象就是程序的一种设计模式,或者说是一种设计规范。基本思想就是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。https://blog.csdn.net/u013728021/article/details/102851884...

2019-11-25 15:58:56 119

原创 如何解决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 3980 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 325

原创 HashSet与HashMap 怎么判断集合元素重复

HashSet与HashMap 怎么判断集合元素重复

2019-11-04 10:08:54 557

原创 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 140

原创 深入理解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 31

原创 Java面向对象详解

首先我们要区分一下“基于对象”和“面向对象”的区别。基于对象,通常指的是对数据的封装,以及提供一组方法对封装过的数据操作。比如 C 的 IO 库中的 FILE * 就可以看成是基于对象的。面向对象,则在基于对象的基础上增加了多态性。在java中基本思想就是使用对象、类、继承、封装、多态等基本概念来进行程序设计。对象对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对...

2019-11-01 10:14:09 134

原创 Binder线程、Binder主线程、Client请求线程的概念与区别

Binder线程是执行Binder服务的载体,只对于服务端才有意义,对请求端来说,是不需要考虑Binder线程的,但Android系统的处理机制其实大部分是互为C/S的。比如APP与AMS进行交互的时候,都互为对方的C与S,这里先不讨论这个问题,先看Binder线程的概念。Binder线程Binder线程就是执行Binder实体业务的线程,一个普通线程如何才能成为Binder线程呢?很简单,只...

2019-11-01 09:24:38 1356

原创 系统服务与bindService等启动的服务的区别

前言服务可分为系统服务与普通服务,系统服务一般是在系统启动的时候,由SystemServer进程创建并注册到ServiceManager中的。而普通服务一般是通过ActivityManagerService启动的服务,或者说通过四大组件中的Service组件启动的服务。这两种服务在实现跟使用上是有不同的,主要从以下几个方面:服务的启动方式服务的注册与管理服务的请求使用方式服务的启动方...

2019-10-31 21:04:27 274 1

原创 Activity中的四种启动模式

配置清单文件可配置的launchmodestandard:这个是android默认的Activity启动模式,每启动一个Activity都会被实例化一个Activity,并且新创建的Activity在堆栈中会在栈顶。singleTop:如果当前要启动的Activity就是在栈顶的位置,那么此时就会复用该Activity,并且不会重走onCreate方法,会直接它的onNewIntent方法...

2019-10-31 18:18:38 52

原创 ViewGroup事件分发机制

小结每次按下直到取消或者抬起,都会进行一次事件分发。事件分发是由Activity传递给Window,Window传递给DecorView实际就是ViewGroup的dispatchTouchEvent这个方法进行分发。如果ViewGroup的dispatchTouchEvent方法回false,那么只会响应ACTION_DOWN的事件,其它事件不再响应。如果ViewGroup的dispat...

2019-10-31 09:12:14 40

原创 View的事件分发机制

View的两个重要方法dispatchTouchEvent(MotionEvent event) 负责事件分发,事件是从这个方法开始分发的。onTouchEvent(MotionEvent event) 触摸事件。dispatchTouchEvent(MotionEvent event)源码分析public boolean dispatchTouchEvent(MotionEvent ...

2019-10-30 20:19:46 70

原创 Activity的事件分发机制

MotionEvent的4种类型事件类型具体动作MotionEvent.ACTION_DOWN按下(所有事件的开始)MotionEvent.ACTION_UP抬起MotionEvent.ACTION_MOVE滑动MotionEvent.ACTION_CANCEL结束事件(非人为原因)事件分发的本质是将点击事件(MotionEvent)传递到某个...

2019-10-30 20:12:51 296

转载 客户端HTTP请求优化实战

转自 https://zhuanlan.zhihu.com/p/31927387一、引言对每个APP来说,网络请求必不可少,虽然有大把现成的框架能帮助我们轻松的完成这项工作,但是实际考究效果时,会发现经常有用户反应请求很慢,页面刷不出来,菊花转不停等问题,可见其中还是存在不少优化空间的,这篇文章就烫爷在项目中对HTTP请求做的优化,做一个简单的梳理。二、数据采集要解决问题,必先分析问题,要...

2019-10-30 15:15:07 110

原创 2019年10月份android面试的一些总结

2019年10月份android面试的一些总结

2019-10-30 14:02:36 582 5

转载 阿里资深工程师教你如何优化 Java 代码!

转自:https://blog.csdn.net/csdnnews/article/details/100987866明代王阳明先生在《传习录》谈为学之道时说:私欲日生,如地上尘,一日不扫,便又有一层。着实用功,便见道无终穷,愈探愈深,必使精白无一毫不彻方可。代码中的"坏味道",如"私欲"如"灰尘",每天都在增加,一日不去清除,便会越累越多。如果用功去清除这些"坏味道",不仅能提高自己的编码...

2019-10-29 11:24:08 36

原创 ByteBuffer常用方法详解

原文链接:https://blog.csdn.net/u012345283/article/details/38357851缓冲区(Buffer)缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区:使用缓冲区有这么两个好处:1、减少实际的物理读写次数2、缓冲区在创建时就被分配内存,这块内存区域一直被重用,可...

2019-10-25 15:59:48 44

原创 WebSocket的简单理解

转自 https://www.zhihu.com/question/20215561一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1...

2019-10-24 17:35:41 57

原创 sizeof()用法汇总

转自:https://www.cnblogs.com/chengxin1982/archive/2009/01/13/1374575.htmlsizeof()功能:计算数据空间的字节数1.与strlen()比较strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为’\0’的数组元素。而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针...

2019-09-17 11:25:06 22

原创 数据结构和C程序设计知识点

001:数的结点总数和度的关系任一棵树中,结点总数=度数*该度数对应的结点数+1002:解决哈希表的冲突的开放地址法H i ( key ) = ( H ( key )+ d i ) mod m ( i = 1,2,…… , k ( k ≤ m – 1))H ( key ) 为关键字 key 的直接哈希地址,m 为哈希表的长度,di 为每次再探测时的地址增量。增量 d 可以有不同的...

2019-09-16 17:17:39 63

原创 一道时间复杂度算法题

时间复杂度算法

2019-07-10 16:42:00 715

塑料挤出机温度自动系统的研究

关于plc的硕士论文 塑料挤出机温度自动系统的研究_王斌.caj 塑料挤出机温度自动系统的研究

2014-02-21

《大话数据结构》

《大话数据结构》,很不错

2018-11-13

Android可以放大缩小的图片

android zoomimageview可以放大缩小的图片控件

2016-03-29

Android面试题

收集的一些Android面试题

2016-03-23

环信的通信demo

环信通信的简单那demo,大家可以看看很详细的。免积分下载了

2016-01-14

ListView详解

关于安卓控件Listview的一些知识点。

2015-10-01

Android开发培训课件.ppt

网上看到的课件,学习安卓的可以借鉴一下,版权归作者所有。里面有一些知识还是很好的。

2015-10-01

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除