自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 安装mmengine时报错,opencv-python 包的哈希值和 requirements 文件中的不一致,ERROR: THESE PACKAGES DO NOT MATCH THE HA...

opencv-python 包的哈希值和 requirements 文件中的不一致

2023-11-05 22:59:43 285

原创 动态设置RecyclerView的高度

方法一,自定义view继承RecyclerView(来源)class MaxRecyclerView : RecyclerView { private var mMaxHeight = 0 constructor(context: Context) : super(context) {} constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { init(conte

2021-11-05 00:08:14 1366

原创 BroadCastReceiver的应用与工作过程

BroadCastReceiver作为android的4大组件之一,其重要程度不言而喻。在BroadCastReceiver的工作过程中主要涉及到两方面的内容,一是广播的注册过程;二是广播的发送和接收过程。一、广播的使用首先定义一个广播接收者:public class AlarmReceiver extends BroadcastReceiver{ @Override pub...

2019-12-05 17:12:35 193

原创 自定义日历控件——实现日期多选功能

首先看看日历控件的效果图:这是日历的默认效果,默认选中当前日期这是多选的实现首先来分析一下这个日历控件的结构:我们可以将其分为三部分第一部分,显示月份...

2019-11-07 16:13:19 3159

原创 使用最广的设计模式——单例模式

单例模式是我们应用最广的设计模式,所以对于像我这样的菜鸟一样会接触到很多。在使用这种设计模式的时候,单例对象的类必须保证只有一个实例存在。单例模式的定义确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式的适用场景确保一个类只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。例如创建一个对象要使用的资源过多,或者需要访问IO和数据库...

2019-10-30 11:17:34 161

原创 Window和WindowManager深入理解

Window表示一个悬浮窗口,在开发直接接触的并不多,但是当我们需要使用在桌面上显示一个悬浮窗的东西的时候Window就派上用场了。Window是一个抽象类,它的具体实现时PopupWindow类,创建Window很简单,只需要通过WindowManager即可完成。WindowManager是外界访问Window的入口。Window和WindowManager之间的联系为了分析Window的...

2019-10-26 15:46:18 1734

原创 自定义控件之——GestureDetector用户手势检测分析

在我们平常的使用当中会只用到很多的手势,DOWN,MOVE,UP,SCROLL,FLING等等,当然在我们之前的理解中使用View的onTouchEvent好像都可以解决,但是在实现的逻辑上也许就会非常的复杂了。所以Android为我们更加方便实现复杂的手势操作提供了GestureDetector这个类。DestureDetector的接口DestureDetector对外提供了两个接口(On...

2019-10-25 20:25:19 1611

原创 自定义控件之——封装控件(一)

自定义属性与自定义Style在使用一个自定义控件式我们常常在它的xml文件中看到如下的代码:<com.example.administrator.tine.view.CustomCalendar android:id="@+id/cal" android:layout_width="match_parent" and...

2019-10-23 17:27:12 1906

原创 IntentFilter匹配规则详解

说到IntentFilter最先想到的肯定是IntentIntentintent是一个消息传递对象,我们可以是有它来启动其他应用组件特定的任务。作为一个Android开发者相信大家都知道intent在4大组件中的运用吧。ActivitystartActivity(Intent intent)ServicestartService(Intent service)bindServic...

2019-10-21 14:23:50 290

原创 自定义控件——Canvas与图层

获取Canvas对象的方法方法一:重写onDraw(),dispatchDraw()函数这两个函数在我们自定义view时是非常常用的,函数结构如下://其中的Canvas对象是View的Canvas对象,利用这个对象画图,效果会直接反映在View中protected void onDraw(Canvas canvas){//该函数用于绘制试图本身 super.onDraw(canvas)...

2019-10-17 10:35:45 623

原创 Paint的基本使用

基本设置函数//重置画笔reset()//给画笔设置颜色值setColor()//设置颜色,但是是利用ARGB分开设置setAlpha(int a)//设置画笔透明度setStyle(Paint.Style style)//设置画笔宽度setStrokeWidth()//设置画笔是否抗锯齿setAntiAlias(boolean aa)//设置画笔倾斜度.事实...

2019-10-12 16:32:03 686

原创 自定义控件——动画进阶

1.1 利用PathMeasure实现路径动画

2019-10-12 11:23:25 246

原创 深入理解java类加载器以及双亲委派模型

类加载器的任务是根据一个类的全限定名来读取此类的二进制字节流到JVM中,然后转换为一个与目标对应的java.lang.Class对象实例从虚拟机的角度来看,有两种类加载器:启动类加载器:这个类加载器使用C++语言实现,是虚拟机的一部分所有其他的类加载器:这些类都是由Java语言实现,独立于虚拟机外部,并且全都继承于java.lang.ClassLoader从java开发人员的角度来看,...

2019-10-12 09:07:31 133

原创 java虚拟机之虚拟机字节码执行引擎

执行引擎概述执行引擎是java虚拟机最核心的组成部分。虚拟机的执行引擎是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件支持的指令集格式。在java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型。所有的虚拟机的外观上看都是一样的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。运行时栈帧结构栈帧适用于支持虚拟机方法调用和方法执行的数...

2019-10-12 09:07:08 123

原创 java内存模型与线程

高速缓存的概念:高速缓存是为了解决内存和处理机之间的问题,作为一个缓冲——将处理机运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存中,这样处理期就无须等待缓慢的内存读写了。引入高速缓存带来的问题:缓存一致性,再多处理机系统中,每一个处理机都有自己的高速缓存,但是他们又共享同一主内存。所以当多个处理机的运算任务都涉及同一主内存区域时,将可能导致各自的数据不一样。为...

2019-10-12 09:06:55 94

原创 Java虚拟机关键问题解析

深入理解虚拟机之java内存区域:Java内存区域对象的访问方式1.通过句柄访问在java堆中分出一块内存进行存储句柄池,这样的话,在栈中存储的是句柄的地址优点:当对象移动的时候,这样只需要改变句柄的指针,但是栈中的指针不需要改变,因为栈中存储的是句柄的地址缺点:需要惊醒两次定位,寻找两次指针,开销相对大一点2.直接访问指针方式java栈直接与对象进行访问,在java堆中对象的布...

2019-10-08 17:11:31 142

原创 JDK 1.8JVM的内存区域划分

运行时数据区域该图标识的是JDK1.8的数据区域,与1.7比较不同的是元数据区取代了永久代,元数据空间的本质和永久代类似,都是对JVM规范中方法区的实现。元数据空间与永久代最大的差别在于:元数据空间并不在虚拟机中,而是直接使用本地内存。上图中程序计数器,java虚拟机栈,本地方法栈属于线程私有的内存。堆,元数据区,直接内存属于所有线程共享的内存。1.程序计数器程序计数器是一块较小的内存...

2019-10-07 11:38:11 1803 1

原创 如何将Version Control中的消失的git重新找出来

图解首先我们看到的是没有git的情况然后找到Plugins下的Gitintergration 和 GitHub将两个都选中,点击Apply之后,studio会重启。这下git就出来了

2019-09-28 09:44:45 918 1

原创 你了解Java的类加载过程吗?

编译:就是将java文件通过javac命令编译成字节码,也就是.class文件运行:即使将编译结果.class文件交给虚拟机执行类加载过程:是指JVM虚拟机把.class文件中的类信息加载进内存,并进行解析生成class对象的过程类加载的主要过程:加载,链接——验证、准备、解析,初始化一、加载加载指的是把class文件字节码文件从各个来源通过类加载器装载入内存,在加载阶段主要完成三件事...

2019-09-20 17:15:40 183

原创 创建线程的方式

创建线程的方式:继承Thread类public class Demo1 extends Thread{ public Demo1(String name){ super(name); } @Override public void run(){ while(!interrupted()){ System.out.println(getName()+"...

2019-09-11 14:15:42 92

原创 Synchronized的实现原理与应用

1.线程的安全性问题Synchronized原理与使用内置锁互斥锁修饰普通方法——内置锁就是当前类的实例修饰静态方法——内置锁就是当前的class字节码对象修饰代码块方法——内置锁为传入的参数字节码层面分析Synchronized的实现原理2.活跃性问题死锁——哲学家就餐问题。饥饿——线程优先级过低,导致一直拿不到资源,一直无法执行,就会处于饥饿状态。...

2019-09-11 14:13:57 175

原创 自定义控件——属性动画

1.1 ValueAniamor的基本使用1.1.1 为何要引入属性动画属性动画是为了弥补视图动画的不足而设计的,能够实现补间动画无法实现的功能。从属性动画的名字我们知道它应该是用于操作控件的属性的。补间动画的一个缺点当我们利用补间动画绘制一个矩形,并给它设置点击事件,然后将它从屏幕的左上角移动到右下角时,我们会发现当我门点击当前右下角的位置,并不会触发点击事件,而当我们点击左上角时...

2019-09-07 20:01:24 198

原创 自定义控件——属性动画进阶

1.PropertyValuesHolder与KeyFrame在前一节我们了解了ofInt(),ofFloat(),ofObject()函数的用法。ValueAnimator和ObjectAnimator创建Animator实例除此之外还有ofProperValuesHolder()//ValueAnimatorpublic static ValueAnimator ofPropertyVa...

2019-09-05 16:16:47 229

原创 自定义控件——视图动画

阿瑟东

2019-09-05 10:30:13 165

原创 自定义控件——基础图形绘制

android中的paint类就是画笔,canvas类就是纸,也就是画布。画笔的基本属性如下:Paint paint = new Paint();paint.setColor(Color.RED);//设置画笔基本属性paint.setStyle(Paint.Style.STROKE);//设置填充样式 paint.setStrokeWidth(50);//设置画笔宽度如何实现画一个...

2019-09-03 16:43:43 296

原创 Activity的启动模式——笔记二

四种启动模式standard:标准模式——每次启动一个Activity都会重新创建一个新的实例。singleTop:栈顶复用模式——已经位于栈顶的Activity不会重新创建,onNewIntent被回调,并取出当前请求的信息。singletask:栈内复用模式——只要Activity在一个所需要的任务栈中存在,那么多次启动此Activity都不会重新创建实例。singleInstanc...

2019-07-22 16:50:14 165

原创 Activity的生命周期——笔记一

Activity的生命周期分为两部分1.典型情况下的生命周期——>有用户参与的。2.异常情况下的生命周期——>Activity被系统回收或者由于当前设备的Configuration发生改变从而导致Activity被销毁重建。一、典型情况下的生命周期(1)onCreate:表示Activity被创建。做初始化工作,setContentView初始化Activtiy所需数据等。(...

2019-07-22 15:43:31 226

原创 OkHttp3源码阅读理解

**OkHttp3源码阅读理解*Okhttp3作为当下最为流行的网络框架,对于这个框架想必来说是每一个android开发人员都会学习和是使用的吧。为什么要使用OkHttp呢?那我们就来说以下OkHttp的好处吧。使用OkHttp的好处:1.支持SPDY,HTTP2.0共享同一个Socket来处理;2.如果SPDY不可用,则通过连接池来减少请求延时;3.缓存响应数据来减少重复的网络...

2019-04-27 16:25:31 279

空空如也

空空如也

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

TA关注的人

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