自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fakerXuan的博客

本科快毕业了 抽时间整理整理笔记 Github:https://gitee.com/fakerxuan

  • 博客(84)
  • 资源 (1)
  • 收藏
  • 关注

原创 2021-08-12

一个简单的记录步数自定义View一个简单的记录步数自定义View最终效果代码一些理解原作者课程链接一个简单的记录步数自定义View最终效果最终效果代码自定义Viewpackage com.example.viewapplication;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.C

2021-08-12 01:59:45 155

原创 一个简单的天气预报APP

运行效果 一个简单的天气预报APP 项目代码https://gitee.com/fakerxuan/weather

2021-06-26 11:00:07 415

原创 Android自定义View之自定义drawable

Android自定义View之自定义drawable运行效果代码实现思路:观察动画由哪些流程组成(动画分解)1 初始状态:背景圆圈叉2 旋转动画 时长圆圈从-90 逆时针方向旋转 3圈 -1080度叉 缩小为一个圆点3 圆点上移 时长4 圆点下移 时长5 由一个圆点 变成 一个勾勾 时长动画编排ValueAnimator 改变属性的值addUpdateListeronAnimationUpdate(){获取属性值invalidateSelf();}旋转动画 matri

2021-06-26 09:37:40 401

原创 Android面试题笔记(三)

ZygoteZygote的作用是什么?启动SystemServer孵化应用进程启动三段式#mermaid-svg-ib9wKZ2LcFjbHTgO .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-ib9wKZ2LcFjbHTgO .label text{fill:#333}#mermaid-s

2021-06-26 09:36:02 114

原创 Android面试笔记二

Android面试笔记之Java基础JDK1.8中对Hash算法和寻址算法是如何优化的?HashMap如何解决Hash冲突问题?HashMap是如何进行扩容的?JDK1.8中对Hash算法和寻址算法是如何优化的?寻址算法但是,如果使用未经过优化的hash值进行与运算,由于n通常比较小,就会导致表示n的32位的高16位总是0.这样会导致hash值的高16位在很多情况下不参与运算。这使得不同的hash与n-1进行与运算后容易得出相同的结果,产生hash冲突。使用经过优化的hash值时,由于优化

2021-06-16 16:26:34 218 4

原创 Android面试题整理三

应用进程是怎么启动的?应用是怎么启用Binder()机制的?什么时候支持Binder机制的?进程启动后在ProcessState里做的谈谈你对Application的理解Application有什么作用?保存应用进程内的全局变量初始化操作提供应用上下文Application:活得长,生的早;跟者进程走而不是跟着应用走。应用开几个进程 就有几个Application。Application的继承关系?Application的生命周期启动 : * 构造函数 、 at

2021-06-15 10:02:32 186 3

原创 Android面试题整理

你知道什么是单例模式么?如何创建一个单例模式?双重校验方式创建public static ImageLoader getInstance(){ if(instance == null){ synchronized(ImageLoader.class){ if(instance == null){ instance = new ImageLoader(); } } }

2021-06-15 09:41:18 261 2

原创 AndroidX适配与升级指南

AndroidX适配与升级指南为什么要升级AndroidX如何在老项目中使用AndroidX升级常见问题解决AndroidX库文件的混淆为什么要升级AndroidX如何在老项目中使用AndroidX升级常见问题解决每个项目遇到的问题可能都是不一样的,出错之后,不要着急。可以通过./gradlew build-stacktrace查看详细的出错堆栈信息,进一步排查AndroidX库文件的混淆...

2021-06-08 11:47:39 280

原创 Android类加载机制

Android类加载机制双亲委派Android中主要的类加载机制Class文件的加载Class.forName & ClassLoader.loadClass有何不同双亲委派什么是双亲委派?双亲委派是如何实现的?双亲委派的作用Android中主要的类加载机制Class文件的加载Class.forName & ClassLoader.loadClass有何不同...

2021-06-08 00:34:25 173 1

原创 Handler

HandlerHandler存在的意义数据通信会带来哪些开发中的问题?Handler工作流程Handler:主要函数Handler & Looper & MessageQueue三角关系简述消息分发ThreadLocalHandler面试八问Handler存在的意义跟Web开发的ajax有异曲同工之妙使得Android开发难度大大降低几乎看不到多线程死锁问题数据通信会带来哪些开发中的问题?线程间如何通讯Handler通信实现的方案实际上是内存共享的方案为什么线程间不会干

2021-06-08 00:23:56 147 1

原创 Retrofit2

Retrofit2Retrofit2是什么入门请求方法类标记类参数类原理分析关键类功能说明关键的几个流程Converter种类CallAdapter种类如何自定义一个Converter及CallAdapter?Retrofit中的设计模式Retrofit2是什么官网介绍是A type-safe HTTP client for Android and Java,是一个 RESTful 的 HTTP 网络请求框架的封装,但网络请求不是Retrofit来完成的,它只是封装了请求参数、Header、Url、返回结

2021-06-07 17:54:03 153 1

原创 Fragment笔记

Fragment笔记Fragment的产生与介绍为什么要使用fragmentFragment的生命周期Fragment的产生与介绍Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板等超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至 Act

2021-06-06 20:07:23 167 3

原创 Android自定义View之自定义组合控件

运行效果https://www.bilibili.com/video/BV17w411Z7pV/代码valuesattrs.xml<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="FlowLayout"> <attr name="android:gravity"/> <attr name="andro

2021-06-05 19:23:14 237 3

原创 CardView+RecyclerView实现仿探探UI

运行效果 Android CardView+RecyclerView实现仿探探UI 代码https://gitee.com/fakerxuan/android-learning/tree/master/

2021-06-05 17:44:24 177

原创 Android自定义View之实现流式布局

流式布局把子控件从左到右摆放,如果一行放不下,自动放到下一行自定义布局流程1. 自定义属性:声明,设置,解析获取自定义值 在attr.xml中声明3. 测量:在onMeasure 方法测量自身的宽高和child的宽高4. 布局:在onLayout方法里面根据自己的规则来确定children的位置5. 绘制:onDraw6. 处理layoutParams7. 触摸反馈:滑动事件...

2021-06-04 20:19:58 219

原创 Android自定义View之自定义一个简单的阶梯式布局

onMeasure:确定自身的大小确定子View的大小流程:1. ViewGroup开始测量自己的尺寸2. 为每个子View计算测量的限制信息3. 把上一步确定的限制信息,传递给每一个字View,然后子View开始measure自己的尺寸4. 获取子View测量完成后的尺寸5. ViewGroup根据自身的情况,计算自己的尺寸6. 保存自身的尺寸onLayout:1. 根据规则确定子View位置流程:1. 遍历子View2. 确定自己的规则3. 子View的测量尺寸.

2021-06-03 21:49:08 374 1

原创 启动耗时优化

启动耗时统计systrace统计启动耗时页面加载耗时优化

2021-06-01 21:32:20 135

原创 性能优化简介

性能优化性能优化的重要性及方向优化方法性能优化的四个方向流畅性优化方向页面显示速度启动速度优化响应速度内存优化常见内存泄露原因优化内存空间稳定性优化流量优化安装包大小优化减少安装包大小的常用方案总结性能优化的重要性及方向优化方法性能优化的四个方向流畅性优化方向页面显示速度优化原因页面需要绘制的内容(布局 控件)太多,从而导致页面测量时间过长绘制效率过低,从而导致绘制时间过长优化方案布局层级优化异步加载xml离屏预渲染启动速度优化优化原因初次打开应用时,大量

2021-06-01 20:46:58 184

原创 Android自定义View

Android自定义ViewAndroid自定义View概述Android开发进阶的必经之路为什么要自定义View自定义View的基本方法自定义控件分类自定义View基础View的分类View类简介AttributeSet与自定义属性View视图结构Android坐标系View位置(坐标)描述位置获取方式Android中颜色相关内容View树的绘制流程View树的绘制流程是谁负责的?view的添加view的绘制流程measurelayoutdrawLayoutParamsMarginLayoutParams

2021-05-31 11:27:26 242

原创 Android APK签名

Android APK签名Android APK签名是什么?V1签名方案概述V2签名方案概述Android APK签名是什么?V1签名方案概述V2签名方案概述可商用的多渠道自动化打包方案

2021-05-29 15:02:47 112

原创 Android依赖注入框架Hilt基本使用

Android依赖注入框架依赖注入的框架类型什么是控制反转——IOC(inversion of control)什么是DI(dependency injection)依赖注入IOC的优势IOC的缺点Hilt如何使用step1配置应用程序step2 配置需要依赖注入的类step3.1 定义对象如何被创建step3.2 使用@binds提供接口实现注入能力作用域scopeHilt的局限性依赖注入的框架类型什么是控制反转——IOC(inversion of control)什么是DI(dependenc

2021-05-29 12:51:17 314

原创 Flutter线程和异步UI

2021-05-19 17:53:02 116

原创 Flutter路由与导航

2021-05-19 17:20:55 107

原创 Flutter状态管理

2021-05-18 23:32:22 86

原创 Flutter中的布局与列表

2021-05-18 23:23:49 83

原创 认识Flutter中的View(视图)

2021-05-18 23:04:25 215

原创 Flutter项目结构、资源、依赖和本地化

2021-05-18 22:48:11 139

原创 Flutter入门基础知识

2021-05-18 22:34:58 97

原创 Flutter声明式UI

2021-05-18 22:26:32 194

原创 Dart基础快速入门

2021-05-18 19:28:04 119

原创 Jetpack笔记

Jetpack笔记什么是JetpackJetpack的优势Jetpack组件库介绍使用Jetpack架构开发模式LIfecycle架构组件原理解析什么是JetpackJetpack是众多优秀组件的集合。是谷歌推出的一套引领Android开发者逐渐统一开发规范的架构Jetpack的优势基于生命周期感知的能力,可以减少NPE崩溃、内存泄露、模板代码。为我们开发出健壮且高质量的程序提供强力保障组件可以单独使用,也可以搭配使用,搭配Kotlin语言特性可以进一步加速开发。Jetpack组件库介绍

2021-05-17 23:39:14 198 4

原创 浅谈Web Debugging与网络抓包

浅谈Web Debugging与网络抓包抓包常用工具Charles抓包原理网络安全配置抓包常用工具wireshark: 侧重于TCP,UDP传输层,HTTP/HTTPS也能抓包,但不能解密HTTPS报文。fiddler:支持HTTP/HTTPS协议,篡改请求入参,篡改响应数据,设置请求断点重发,弱网络模拟,只支持windowscharles:基本功能同上,全平台支持,界面简洁,操作简单Charles抓包原理网络安全配置...

2021-05-16 03:15:01 356

原创 Android面试题笔记(二)

Handler面试笔记什么是HandlerHandler通过发送和处理Message和Runnable对象来关联相应线程的MessageQueue可以让对应的Message和Runnable在未来的某个时间点进行相应处理让自己想要处理的耗时操作放在子线程,让更新UI的操作放在主线程Handler的使用方法post(runnable)sendMessage(message)Handler引起的内存泄露以及解决办法原因:静态内部类持有外部类的匿名引用,导致外部Activity

2021-05-04 01:00:24 749 8

原创 Android面试题笔记(一)

Activity笔记Activity的4种状态running/ paused/ stopped/ killedActivity生命周期Activity生命周期分析Android进程优先级前台>可见>服务>后台>空Activity启动模式standard 标准模式singletop 栈顶复用模式singletask 栈内复用模式singleinstance 单例 独享一个任务栈scheme跳转协议Fragment笔记Fragment加

2021-05-01 22:49:29 143

原创 Android网络编程学习笔记

知识图谱Android网络编程核心技术概述#mermaid-svg-1LubylYv7zSWJWHF .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-1LubylYv7zSWJWHF .label text{fill:#333}#mermaid-svg-1LubylYv7zSWJWHF .node rect

2021-04-28 20:04:31 164

原创 并发与多线程开发核心技术

知识图谱Android Thread线程的几种创建方式通过Thread类或Runnable接口创建通过Android 提供的AysncTask创建通过HandlerThreadIntentServiceThreadPoolExecutor线程的优先级线程的几种状态与常用方法...

2021-04-26 18:10:27 217

原创 Android导航架构实战

Android路由传统路由方式Arouter&Navigation横向对比如何做好技术选型

2021-04-19 17:40:54 351 5

原创 Activity-Fragment-RecyclerView

文章目录Launcher启动流程与ActivityThread深入分析Launcher启动流程与ActivityThread深入分析

2021-04-17 18:43:31 142

原创 Kotlin学习笔记

文章目录Kotlin概述Kotlin特点Kotlin设计理念Kotlin构建流程Kotlin必备基础Kotlin基本数据类型Kotlin的数组生成数组的方式遍历数组的5种方式Kotlin的集合集合排序Kotlin方法与Lambda表达式Lambda表达式Kotlin方法进阶闭包(Closure)Kotlin类与接口Kotlin中的泛型泛型约束Kotlin中的协变与逆变Kotlin注解@Target@RetentionKotlin扩展(Extensions)技术与应用Kotlin中常用的扩展Kotlin概述

2021-04-16 21:33:41 416 2

原创 在RecyclerView中使用ViewPager时出现的两个Bug

在RecyclerView中使用ViewPager时出现的两个Bug解决1.RecyclerView滚动上去,直至ViewPager看不见,再滚动下来,ViewPager下一次切换没有动画原因解决方案2.当ViewPager滚动到一半时,RecyclerView滚动上去,再滚动下来,ViewPager会卡在一半原因解决方法1.RecyclerView滚动上去,直至ViewPager看不见,再滚动下来,ViewPager下一次切换没有动画原因Viewpager里有一个私有变量mFirstLayout,它

2021-04-15 21:05:44 306

IDEA13基础教程.pdf

IDEA使用基础教程 简洁 实用 快速入门IDEA IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一。 Intellij IDEA 最突出的功能自然是调试(Debug),可以对Java代码,JavaScript,JQuery,Ajax等技术进行调试。

2020-02-07

空空如也

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

TA关注的人

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