自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 git创建一个本地分支,并从远程分支拉取代码

Git 是一种分布式版本控制系统,广泛用于管理项目的源代码。它可以追踪文件的修改、记录历史变更、协调多人合作开发,并提供了回滚、分支管理、合并等功能。现在,你已经成功创建了一个本地分支,并从远程分支拉取了代码。你可以在本地分支上进行修改和提交,并根据需要将更改推送到远程仓库。记得在推送到远程仓库之前进行代码审查和测试。

2023-07-11 14:04:06 3805

原创 Git上传代码到远程仓库

这些是基本的提交代码的步骤。在实际使用中,可能还会涉及解决冲突、分支切换等操作。提前备份重要数据,并确保你了解将代码提交到什么地方以及可能带来的影响。

2023-07-11 13:59:32 3200

原创 Unsupported Java. Your build is currently configured to use Java 17.0.6 and Gradle 7.0.2.

导入别人项目时出现的bug,提示java环境版本和Gradle版本不匹配。

2023-07-03 16:14:05 3893 2

原创 Activity启动流程分析

简单点来说就是通过AMS代理类,封装创建Activity的信息,然后回调给ActivityThread,通过mInstrumentation创建Activity,调用onCreate方法启动Activity。隐式Intent是通过在AndroidManifest文件中设置action、data、category,让系统来筛选出合适的Activity。2、setComponent(componentName)方法。1、构造方法传入Component,最常用的方式。...

2022-08-30 16:48:08 1689 1

原创 activity启动模式介绍

如果要启动的Activity已经存在于它想要归属的栈中,那么不会创建该Activity实例,将栈中位于该Activity上的所有的Activity出栈,同时该Activity的onNewIntent()方法会被调用。如果要启动的Activity已经在栈顶,则不会重新创建Activity,只会调用该该Activity的onNewIntent()方法。程序模块逻辑入口:主页面、WebView页面、扫一扫页面、购物界面、确认订单界面、付款界面。来电显示、呼叫界面、锁屏等。...

2022-08-30 15:03:43 914

原创 Activity生命周期看这一篇足够了

android学习中,Activity是非常重要的一部分,接下来进行activity生命周期的讲解和具体的应用。

2022-08-30 11:55:44 1300

原创 Retrofit的使用及原理详解

retrofit—>建造者—>create(动态代理)—>getPersonInfo接口(注解解析+URL拼接)到invoke方法中—>call.enqueue(丢给okHttp,realCall—>AsyncCall内部类,切到子线程)—> ExecutorCallAdapterFactory中返回数据的enqueue()方法(切回主线程callbackExecutor.execute())...

2022-08-04 10:00:20 1117

原创 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context

开启一个新界面时,出现的错误,这是由于使用到了。方法时,会受到限制,需要开启一个新的task。

2022-08-03 18:05:48 1786

原创 android.content.res.Resources$NotFoundException: String resource ID #0x1解决方案

Android Studio爆红:android.content.res.Resources$NotFoundException: String resource ID #0x1这是由于DataBinding进行双向绑定时只允许String类型,当要传入Int类型时需要进行转换代码如下:这个问题在setText时传值也会经常遇到,要传String类型的数据...

2022-08-03 17:56:57 688

原创 MVC,MVP和MVVM架构解析

1.使得M,V,VM的解耦更加彻底,在mvp模式中,p需要持有V的引用,才能去刷新UI,在MVVM模式中,View和Model使用databingding进行双向绑定,一方改变会直接通知另外一方,使得viewModel能专注于业务逻辑的处理,而不需要去关心UI刷新。客户端开发最常用的重用时View,但是数据双向绑定技术,让你在一个View都绑定了一个model,不同模块的model都不同,那就不能简单重用View了。项目结构更加低耦合。1.解耦,区别于MVC不会产生巨量代码,区别于MVP不会产生大量接口。.

2022-07-29 14:28:32 1088

原创 Android优化之启动优化和黑白屏优化

开机—>BootLoader(引导芯片)—>Linux(init,rc)—>init进程(id=1)—>zygote进程—>JVM,SystemServer等—>ActivityManagerService,SystemServerManager,Binder(线程池)—>launcher(app)黑白屏优化主要体现在视觉上的优化,通常我们会加一个启动页来填充我们启动的时间。主要有一个启动的background和一个右上角的跳过按钮。启动后立即为该app显示一个空白窗口(白屏)加载布局,绘制(替换白屏)..

2022-07-29 11:59:25 250

原创 svg图片实战:自定义view打造中国地图

1、SVG 指可伸缩矢量图形2、SVG 用来定义用于网络的基于矢量的图形3、SVG 使用 XML 格式定义图形4、SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失与其他图像格式相比,使用 SVG 的优势在于:1、SVG 可被非常多的工具读取和修改(比如记事本)2、SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。3、SVG 是可伸缩的4、SVG 图像可在任何的分辨率下被高质量地打印5、SVG 可在图像质量不下降的情况下被放大6、SVG 图像中的文本是可选的,

2022-07-29 11:28:46 2003

原创 Jetpack中各个组件简介

Jetpack是当下最火的组件了,Google官方大力推荐,其好用,性能优异受到很多开发者的喜爱,接下来我们将简单了解一下Jetpack中各个组件,以后会发文章单独详细讲解。

2022-07-28 16:52:54 1725

原创 kotlin语法总结(二)

这章接着上一章语法总结继续讲解,主要讲kotlin和java不一样的地方(40)嵌套类(41)数据类dataclass提供toString,equals,hashCode个性化实现,==符号比较值,为每个属性生成operator修饰的componentN()方法,支持解构,生成copy方法,方便对象复制Int){//解构val(x,y)=playerScore(1,2)println(x)println(y)}数据类必须有至少一个参数数的主构造函数Int){变换。...

2022-07-28 09:53:19 115

原创 kotlin语法总结(一)

接下来几章将总结一下kotlin的语法,总结kotlin和java不一样的地方(1)var可修改、val只读(类型推断)、constvala=1(编译时常量)(2)kotlin只提供引用数据类型,会在字节码中变成基本书记类型//等于3为少儿in0..3->println("shaoer")in3..12->println("11")else->{$art(4)String模板“Answer$b”,可带变量Int)String{}valble$......

2022-07-28 09:42:33 314

原创 自定义ViewGroup实现搜索栏历史记录流式布局

自定义view和viewGroup是Android中重要的组成部分,自定义view只要在方法中实现,需要判断大小是会用到方法,而自定义viewGroup主要用到方法和方法UI绘制流程中:1、onMeasure()measure()方法被final修饰不可重写,onMeasure()可重写父view重写onMeasure()方法,调用子view的measure()方法,子view的measure()方法调用子view的onMeasure()方法,以此递归每个view的onMeasure()方法最终调用setM

2022-07-26 18:43:37 437

原创 Glide中图片处理

其实Glide加载本地图片和加载网络图片调用的方法是一样的,唯一的区别是说加载SD卡的图片需要SD卡的权限,加载网络需要网络权限。需要实现两个方法,其中transform方法里面能拿到bitmap对象,这里就是对图片做处理的地方。transform方法是不支持多次调用的,如果你调用了两次,那么第二次的会覆盖了第一次的效果。如果你希望加载的只是gif,如果不是gif就显示错误图片,那么只用加上asGif方法。但是他有一个重载的方法可以传入多个对象,这样传入的变形器都能够生效。直接放file文件进去。...

2022-07-26 11:19:44 1290

原创 Android中图片的裁剪与压缩

1)matrix不缩放,图片与控件左上角对齐,当图片大小超过控件时将被裁剪(2)center不缩放,图片与控件中心点对齐,当图片大小超过控件时将被裁剪以完整显示图片为目标,不剪裁,当显示不下的时候将缩放,能够显示的情况下不缩放以填满整个控件为目标,等比缩放,超过控件时将被裁剪(宽高都要填满,所以只要图片宽高比与控件宽高比不同时,一定会被剪裁)(5)fitCenter(默认)...

2022-07-26 09:53:57 3160

原创 gradle脚本中groovy语法讲解

a+b//gradle默认将最后一行非空行(有代码行)作为结果返回}//groovy没有私有这一说classStudent{

2022-07-25 13:46:55 763

原创 Glide使用及原理分析

Glide是一款非常好用的图片加载框架那么它具体好用在哪里呢?总所周知,在android开发中有几大令人头疼的问题,比如内存泄漏,线程问题,生命周期,这些问题在Glide的身上都不需要关心,下面就具体来介绍一下Glide的使用及原理吧。httpshttpshttpshttps。...

2022-07-25 10:35:13 1938

原创 RecyclerView使用和原理解析

RecyclerView是Android官方在5.0之后添加的控件,相比原来的ListView和GridView来讲更加灵活,接下来就来介绍一下RecyclerView的使用和原理分析。

2022-07-22 12:03:29 1004

原创 synchronized锁原理详解

在理解锁实现原理之前先了解一下Java的对象头和Monitor,在JVM中,对象是分成三部分对象头实例数据对其填充实例数据和对其填充与synchronized无关,对象头是我们需要关注的重点,它是synchronized实现锁的基础,因为synchronized申请锁、上锁、释放锁都与对象头有关。......

2022-07-21 14:35:11 962

原创 ReentrantLock的使用和原理详解

避免堵塞lock1.lock()获取lock1对象的锁,while1中的lock1.lock()也是尝试获取lock1对象的锁,但是lock1对象的锁已经在上面被获取了,所以这个程序会一直阻塞在这里,但是有了可重入锁,这里不再需要获取这个锁了,直接往下运行。是重入锁,所以可以反复得到相同的一把锁,它有一个与锁相关的获取计数器,如果拥有锁的某个线程再次得到锁,那么获取计数器就加1,然后锁需要被释放两次才能获得真正释放(重入锁)。执行后,出现了死锁,可通过中断来停止线程。的,但是在jdk1.6里面,...

2022-07-21 11:34:50 299

原创 属性动画的使用和原理解析

属性动画,顾名思义它是对于对象属性的动画。因此,所有补间动画的内容,都可以通过属性动画实现。Interpolator的概念其实我们并不陌生,在补间动画中我们就使用到了。他就是用来控制动画快慢节奏的;而在属性动画中,TimeInterpolator也是类似的作用;TimeInterpolator继承自Interpolator。我们可以继承TimerInterpolator以自己的方式控制动画变化的节奏,也可以使用Android系统提供的Interpolator。......

2022-07-21 10:54:04 730

原创 帧动画和补间动画的使用

pivotX取值含义10距离动画所在view自身左边缘10像素10%距离动画所在view自身左边缘的距离是整个view宽度的10%10%p距离动画所在view父控件左边缘的距离是整个view宽度的10%帧动画是最容易实现的一种动画,这种动画更多的依赖于完善的UI资源,他的原理就是将一张张单独的图片连贯的进行播放,从而在视觉上产生一种动画的效果;总的来说,Android动画可以分为两类,最初的传统动画和Android3.0之后出现的属性动画;pivotY也是相同的原理,只不过变成的纵向的位置。...

2022-07-21 10:16:31 313

原创 自定义view实现半圆弧进度条

自定义view实现半圆弧效果图,自定义view实现扇形进度条

2022-07-21 09:48:46 771

原创 Binder机制详解(三)

前两节学习了Binder机制需要储备的底层知识,接下来会分四层详细讲解Binder机制

2022-07-20 11:34:11 495

原创 Binder机制详解(二)

系列章节:Binder机制详解(一)上一章通过一个例子让我们认识了Binder通信机制不同于Linux的地方,还了解了用户空间和内核空间,这章我们主要来讲解MMU内存管理单元MMU(Memory Management Unit)

2022-07-13 14:47:17 306

原创 Binder机制详解(一)

Binder通信机制是android中不同于Linux的通信机制,那么为什么会有Binder通信机制,为什么不能用linux中已有的进程框架呢?Google工程师究竟是如何考量的?

2022-07-12 17:21:32 274

原创 Java垃圾回收机制(GC原理)解析

Java相比于c/c++一个最显著的特征就是引入了垃圾回收机制,使我们不用像c/c++编写时还要注意内存管理,java中JVM替我们完成了这部分工作

2022-07-11 16:29:38 5896

原创 2.2.2新版Banner轮播图实现

主要改进功能介绍2.xml文件代码如下:3.activity文件到此就可以完成上述的轮播图功能!!,文章末尾贴出Demo地址,接下来介绍一下Banner进阶功能使用!!!此步骤可以省略,图片轮播提供有默认适配器,其他的没有提供是因为大家的可变性要求不确定,所以直接自定义的比较好。5.Banner具体方法调用6.Banner使用中优化体验(可选)生命周期改变时7.Demo地址Demo地址...

2022-07-08 16:50:08 1508 1

原创 计算机网络面试题总结

文章目录一、OSI七层模型、TCP/IP四层协议二、TCP三次握手,为什么不能是两次?三、HTTP和HTTPS,HTTPS为什么是安全的?四、HTTPS如何保障安全性,讲SSL层建立连接的过程三、TCP三次握手,为什么不能是两次?三、TCP三次握手,为什么不能是两次?三、TCP三次握手,为什么不能是两次?三、TCP三次握手,为什么不能是两次?三、TCP三次握手,为什么不能是两次?三、TCP三次握手,为什么不能是两次?三、TCP三次握手,为什么不能是两次?三、TCP三次握手,为什么不能是两次?三、TCP三次握

2022-05-31 20:43:43 193

原创 Android中OKHttp使用及原理解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代.

2022-05-29 21:47:08 1111

空空如也

空空如也

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

TA关注的人

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