自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 Window与WindowManager

WindowWindow表示窗口,比如可以实现桌面或者锁屏上的类似悬浮窗的效果,Android中所有的视图都是通过Window来呈现的,不管是Activity、Dialog还是Toast,实际上他们都是附加在Window上的,WindowManager提供了对这些Window的统一管理功能Window与WindowManager的联系为了分析Window的工作机制,需要先了解如何使用W...

2019-07-21 17:15:53 198

原创 控件的高级属性(二)

GestureDetector.SimpleOnGestureListener类首先它是一个类,在他的基础上新建类,要使用ectends派生 ,而不能用implements继承在其中的方法并不需要全部进行重写,需要什么就可以直接重写什么eg:public class SimpleOnGestureListenerActivity extends AppCompatActivity im...

2019-07-21 16:03:29 190

原创 CircleImageView的使用

简介:实现对一个图片进行圆形切割,并作为头像使用,因为在使用的过程中涉及备份到云端,那么就会出现重新加载的图片出现毛边,为了解决毛边的问题,在头像的周围添加一个圆框即可,在github上有一个开源控件叫做CircleImageView可以很好的实现圆形边框使用:在build.gradle的dependencies中加入dependencies { .... impl...

2019-07-21 14:43:36 1629

原创 控件的高级属性(一)

手势检测当用户触摸屏幕的时候,会产生很多的手势,如up,down,scroll, fling等处理简单的手势:View类有一个View.onTouchLiatener内部接口,通过重写他的onTouch(View view, MotionEvent event)函数,可以处理一些touch事件,但是这个函数只限于处理简单手势处理复杂手势:Android SDK提供给我们...

2019-07-15 23:06:35 173

原创 MMKV组件实现原理以及和SharedPreferences的比较(二)

MMKV数据结构上面提到的SharedPreferences使用的是xml来进行文件存储的<map> <int name = "4970" value="4970"/> <int name = "4971" value="4971"/> <int name = "4972" value="4972"/> &lt...

2019-07-09 19:50:40 613

原创 Java Stream使用

循环遍历的弊端得益于lambda表达式所带来的函数式编程引入了Stream的概念Java8 Lambda表达式专注于做什么而不是怎么做,针对for循环语句可以发现:for循环的语法就是“怎么做”for循环的循环体才是“做什么”Stream写法/*使用Stream流的方式,遍历集合二,对集合中的数据进行过滤*/public class DemoStream {&nbsp...

2019-07-09 15:10:54 263

原创 MMKV组件实现原理以及和SharedPreferences的比较(一)

MMKV组件简介MMKV项目地址MMKV是基于mmap内存映射关系的key-value组件,底层序列化/反序列化使用protobuf实现。性能高,稳定性强。从2015年就在微信上使用,已经移植到了Android/MacOS/Windows平台SharedPreferences实现原理SharedPreferences是Android提供的一种使用XML文件保存内容的机制,内部通过XM...

2019-07-08 21:47:43 1038

原创 Android APP编译流程

Android Gradle plugin的具体流程首先上一张官方的图:[外链图片转存失败(img-QMFtfIiX-1562588711680)(en-resource://database/5304:1)]首先通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进制&非二进制保持原来的代码)处理.aidl文件,生成对应的Java接...

2019-07-08 20:26:09 800

原创 测量与布局

ViewGroup的绘制流程绘制流程分为三步:测量、布局、绘制,分别对应onMeasure(), onLayout(),onDraw()onMeasure():测量当前控件的大小,为正式布局提供建议(只是建议,至于上是否适用,要看onLayout()函数onLayout():使用layout()函数对所有子控件进行布局onDraw():根据布局的位置绘图onMeasure()函数与M...

2019-07-08 17:59:20 310

原创 封装自定义控件

自定义属性与自定义Style利用XML中的declare-styleable标签来实现自定义属性,下面是declare-styleable标签的使用方法:自定义控件的步骤自定义一个类MyTextViewimport android.content.Context;import android.widget.TextView;/*** Created with Android ...

2019-07-05 21:14:04 489

原创 ANR产生原因以及分析工具

ANR产生原因:只有当应用程序的UI线程响应超时才会引起ANR,超时原因:当前事件没有机会得到处理当前的事件正在处理,但是由于耗时太长没能及时完成引发ANR的原因;View的按键事件或者触摸事件在5s内无法得到响应BroadcastReceiver的onReceive()函数在10s内没有得到处理Service各个生米周期函数在20s内没有得到处理典型的ANR场景分...

2019-07-05 11:30:54 808

原创 Matrix与坐标变换

ColorMatrix色彩变换对于色彩的存储,Bitmap类使用一个32位的数值来保存,红,绿,蓝以及透明度各占8位,每个色彩分量的取值范围是0~255,透明度为0表示完全透明,为255时色彩完全可见色彩矩阵的表示:由于一个色彩信息包含R、G、B、Alpha信息,所以,必须使用一个四阶色彩变幻矩阵来修改色彩的每一个分量,对于色彩矩阵来说色彩顺序是R、G、B、A如果想要原有的R色上增加...

2019-07-04 20:36:42 1069 1

原创 双缓冲技术解决方案

解决方案一:保存索要绘制的内容,全屏重绘:为了防止每次画布上绘制的,第一种解决方案是:每次将我们绘制的内容都保存起来,下次拿到画布时,把这些绘制的内容全部重新绘制一遍,但是这种方案主要用于比较简单的绘图上private void drawText(final Surfaceholder holder){ Canvas canvas = holder.lockCanvas(); ...

2019-07-04 17:28:14 253

原创 lambda表达式

lambda简介什么是lambdaJava8添加的新特性,lambda是一个匿名函数为什么使用lambda使用lambda可以对接口进行非常简洁的实现lambda对接口的要求虽然可以使用lambda可以对某些接口进行简单实现,但是接口中只能定义一个抽象方法不可以多于或者少于一个。在Java8对接口增加了一个新特性:default, 对接口中的方法进行修饰,被修饰的方法在接口...

2019-07-03 21:40:09 255

原创 双缓冲技术局部更新原理

SurfaceView支持局部更新,可以通过Canvas lockCanvas(Rect dirty)函数指定获取画布的区域和大小,画布以外的地方会将现在屏幕上的内容复制过来,以保持与屏幕一致,而画布以内的部分将会保持原画布的内容:lockCanvas():用于获取整个画布的内容,屏幕内容不会被更新到画布上,画布保持原画布内容(不会进程当前屏幕内容,只保持所有在自己上面所画的内容利用unloc...

2019-07-03 20:06:23 376

原创 SurfaceView使用与双缓冲技术

为什么引入SurfaceViewAndroid屏幕刷新时间是16ms, 如果View在16ms内完成所需要执行的绘图操作,那么在视觉上,界面是流畅的,否则就会出现卡顿,View,ViewGroup,Animator的代码执行全部是在主线程中完成的,当执行大量逻辑代码的时候,轻则卡顿,甚至会发生ANR问题,所以一般会使用Handler和AsyncTask,但是同时也会加大代码的复杂度,为了解决逻...

2019-07-02 21:29:19 749

原创 Bitmap静态方法

Bitmap静态创建方法static Bitmap createBitmap(int width, int height, Bitmap.Config config);static Bitmap createBitmap(Bitmap src);static Bitmap createBitmap(Bitmap source, int x, int y, int width, int hei...

2019-07-01 15:42:00 342

AndroidKiller_v1.3.1.rar

AndroidKiller可视化、全自动的反编译、编译、签名;支持批量编译APK。

2019-06-07

空空如也

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

TA关注的人

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