自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 问答 (7)
  • 收藏
  • 关注

原创 自定义注解 kapt的使用

fragment的改造:改造目的 无须在资源文件中编写一个个的Destination节点Fragment文件添加Destination注解(可以控制id,是否要登录等权限)生成一个配置文件,最后手动生成navGraph对象给navController使用一、 添加依赖根目录-> new-> java or Kotlin Library需要把工程的gradle-wrapper和gradle-plugin分别降低到4.10.1,3.2.0。详细原因如果不想降级gradle,.

2021-11-30 21:31:15 2004 2

原创 Navigation 一些源码

navigation是为了统一app内所有页面导航的能力一、layout的一些属性点击的底部按钮会又微微变大1.1. defaultNavHostactivity_main.xmlapp:defaultNavHost="true"是否和系统的返回键相关联:如果相关联 点击系统的返回键NavHost会判断回退栈是否还有fragment如果有fragment会拦截系统的返回键如果无fragment就执行系统返回键的默认行为1.2 navGraphactivity_main..

2021-11-24 22:06:55 350

原创 五、ContentProvider权限动态申请 通讯录增删改查

五、ContentProvider相关ContentProvider内容提供者: 负责数据存取,常用于APP进数据共享,跨进程数据存取等…比如读取相册,读取联系人,都是ContentProvider来实现的**1.**我们想在自己的应用中访问别的应用,或者说一些ContentProvider暴露给我们的一些数据, 比如手机联系人,短信、相册等!我们想对这些数据进行读取或者修改,这就需要用到ContentProvider了!**2.**我们自己的应用,想把自己的一些数据暴露出来,给其他的应用进行

2021-11-19 20:53:46 2213 1

原创 四、BroadcastReciver 广播类型 自定义广播

BroadcastReceiver广播接收者: 负责页面间通信(如两个acticity之间),系统和APP通信,APP和APP通信,比如监听网络连接状态变化,就是通过BroadcastReceiver广播接收者来实现的部分文字转载自https://www.songyubao.com/book/primary/activity/broadcastReceiver.htmlAndroid中, 系统自己在很多时候都会发送广播,比如电量变化,wifi连接变化,插入耳机,输入法改变等,系统都会发送广播,这.

2021-11-17 16:24:39 1985

原创 三 、 service生命周期 启动方式 Android 8.0后台service

**Service服务:**不需要和用户交互,且需要长期运行任务的解决方案。负责后台任务,比如播放音乐,socket长连接Service启动后默认是运行在主线程中,在执行具体耗时任务过程中要手动开启子线程,应用程序进程被杀死,所有依赖该进程的Service服务也会停止运行。图片和部分文字转载于https://www.songyubao.com/book/primary/activity/service.html1.Service启动方式与生命周期Service启动方式分为两种,普通启动st.

2021-11-14 14:41:13 2849 1

原创 二、Fragment相关生命周期、动态添加

使用Fragment 我们可以把页面结构划分成几块,每块使用一个Fragment来管理。这样我们可以更加方便的在运行过程中动态地更新Activity中的用户界面,日后迭代更新、维护也是更加方便注意事项: Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity 被destory销毁了,他也会跟着销毁!一个Activity可以嵌套多个Fragment。图片和部分文字转载自https://w.

2021-11-11 16:41:47 1558

原创 一、Activity相关

Activity: 负责用户界面的展示和用户交互,学习Activity就要学习Fragment,虽然它不是四大组件之一,但是它在我们的开发工作中也是频频被使用到,且必须和Activity一块使用,常用于分模块开发,比如慕课首页的几个tab,每个tab都是对应着一个Fragment图片和部分文字转载自https://www.songyubao.com/book/primary/activity/Activity.html1.Activity 生命周期方法作用onCreat.

2021-11-05 21:34:00 164

原创 二、RESTFUL网路请求框Retrofit

Retrofit是一个高质量高效率的HTTP请求库。Retrofit内部依赖于OkHttp,它将OKHttp底层的代码和细节都封装了起来,功能上做了更多的扩展,比如返回结果的自动解析数据模型,网络引擎的切换,拦截器…restFul是符合rest架构风格的网络API接口,完全承认Http是用于标识资源。restFul URL是面向资源的,可以唯一标识和定位资源。 对于该URL标识的资源做何种操作是由Http方法决定的。rest请求方法有4种,包括get,post,put,delete.分别对应获取资源,

2021-10-31 23:04:13 73

原创 一、网络框架OKHttp get和post以及Gson的简单使用

Android 在6.0之后也将内部的HttpUrlConnection的默认实现替换成了OkHttp1. 特点1.同时支持HTTP1.1与支持HTTP2.0;2.同时支持同步与异步请求;3.同时具备HTTP与WebSocket功能;4.拥有自动维护的socket连接池,减少握手次数;5.拥有队列线程池,轻松写并发;6.拥有Interceptors(拦截器),轻松处理请求与响应额外需求(例:请求失败重试、响应内容重定向等等);图片和部分文字转载自https://www.songyuba

2021-10-29 16:41:45 903

原创 六、RecyclerView高级UI控件

出色的性能和插拔式的架构设计图片转载自https://www.songyubao.com/book/primary/ui/RecyclerView.html[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nOXEOFMk-1635167546067)(https://cdn.jsdelivr.net/gh/hairlyOwl/photo@master/RecyclerView族谱.2ko9sg7gvkw0.png)]四层回收、复用机制可以让页面在滑动的时候非常顺滑1

2021-10-25 21:13:37 78

原创 五、 ImageView图片控件

视频 视频博客1.常见属性属性属性值示例属性说明android:src@drawable/icon_home给ImageView设置要显示的图片android:alpha0.5[0.0~1.0]设置透明度android:background@drawable/background给ImageView设置背景色、背景图片android:scaleType用于设置图片如何缩放以适应ImageView的大小同时设置 src 和 backgrou

2021-10-22 21:52:25 59

原创 四、TextView 文本控件

原文链接https://www.songyubao.com/book/primary/ui/TextView.html1. 常用属性属性属性值示例属性说明id@+id/tv设置一个组件id,通过findViewById()的方法获取到该对象,然后进行相关设置layout_width100dp组件宽度layout_heightwrap_content组件高度text设置文本内容background#ff0000背景颜色(或背景图片).

2021-10-22 10:18:00 39

原创 三、MaterialButton 丰富多彩的按钮

视频 视频老师的博客1、MaterialButtonMaterialButton是Google于SDK28推出的新控件,当遇到按钮需要圆角、或者描边等,就不必使用xml文件或者Github上找第三方库实现。1.1 依赖引入添加依赖 我的项目默认添加了material 1.4.0Project文件模式下 app—> bulid.gradleimplementation 'com.google.android.material:material:1.3.0'app 的theme主题修改

2021-10-22 10:17:16 138

转载 二、Android常用布局容器

转载 https://www.songyubao.com/book/primary/ui/viewgroup.htmlAndroid 的UI 可以分为两类,一类叫做ViewGroup容器,一类叫做View视图View视图:(TextView,Button,ImageView)都是常用常见的视图.ViewGroup容器:内部可以承载、放置、添加View视图1. 基础布局容器(7种)LinearLayout线性布局:横着或竖着按顺序排列RelativeLayout相对布局:起始坐标时屏幕左上角

2021-10-22 10:16:00 480

原创 高效制胜题解记录

高效制胜day01 求和问题T1 1. 两数之和 数组 哈希表方1:遍历class Solution { public int[] twoSum(int[] nums, int target) { for(int i=0;i<nums.length;i++){ //由于前i位已经互相匹配,j从i+1位开始不会遗漏 for(int j=i+1;j<nums.length;j++){ i

2021-10-16 21:38:50 63

原创 kotlin 一次四则运算计算器

kotlin 一次四则运算计算器package com.example.firstapp.lessonimport java.lang.Exception/** *@author: hairly owl *@time:2021/10/13 21:22 *@version: 1.00 *@description: 一次四则运算计算机器 */fun main() { while(true){ println("==========请输入你的表达式========

2021-10-13 22:09:09 304

原创 八、kotlin扩展函数

视频课 视频老师的博客提供架构的易用性减少代码量,让代码更加整洁、纯粹提高编码的效率,生产力提高1.扩展方法扩展方法的原型fun String.lastChar(): Char = this.get(this.length-1)2.扩展方法的使用2.1在Kotlin中使用fun main() { Jump().test() Jump().doubleJump()}class Jump{ fun test(){}}//扩展函数的定义,就是在方法

2021-10-13 21:11:37 173

原创 九、kotlin泛型

var(局部可变) 和 val(不可变) 的区别https://www.infoq.cn/article/ez85rqhlvbiw5nskghfb视频课程 老师详细的博客架构开发的一把利器;使我们的代码或开发出来的框架更加的通用;增加程序的健壮性,避开运行时可能引发的 ClassCastException;能够帮助你研究和理解别的框架;自己造轮子需要,能用泛型解决问题;1. 泛型接口/类(泛型类型)fun main() { //1.1 泛型接口 val d.

2021-10-12 21:52:34 18

原创 六、Kotlin循环控制

视频 视频老师的博客 更详细1、 for 循环//for item in elements elements可以是数组、集合//1.1 for-inprintln("for-in")for(item in items){ print("$item ")}//1.2 forEachprintln("\nforEach")items.forEach{ print("$it ")}//1.3 forEachIndexedprintln("\nforEachIndex

2021-10-05 16:21:53 58

原创 五、Kotlin条件控制

课程 资料Tips:Kotlin 中没有 switch-case1.if 表达式1.1 带返回值 if 表达式fun maxOf(a:Int,b:Int):Int{ //比较两个值的大小 if(a>b){ return a }else{ return b }}1.2 if 表达式替代三目运算符fun maxOf2(a:Int,b:Int):Int{ //maxOf简写版 return if (a &g

2021-10-04 22:36:06 51

原创 四、Kotlin/方法与Lambda表达式

视频链接 视频老师博客链接1.kotlin的方法1.1方法声明1.1.1 成员方法成员方法需要构建实列对象,才能访问成员方法//成员方法class Person{ fun test(){ println("Person test方法") }}fun main() { //成员方法需要构建实列对象,才能访问成员方法 //示例对象的构建只需要在类名后面加上() !!!不需要new Person().test()}1.

2021-10-02 16:55:07 38

原创 剑指offer java day30 分治算法

T1 17. 打印从1到最大的n位数leetcode 返回是int[] 不考虑大数 ,原书考虑大数越界情况下不考虑大数越界class Solution { public int[] printNumbers(int n) { int m = (int)Math.pow(10,n)-1; //要打印的个数 10的n次(从1开始) int[] res = new int[m]; for(int i=0;i<m;i++){

2021-09-30 18:33:41 22

原创 剑指offer day29 动态规划

T1 19. 正则表达式匹配k神题解转移方程dp[i][j]条件dp[i][j-2]dp[i-1][j] & s[i-1] = p[j-2]dp[i-1][j] & p[j-2] = ‘.’p[j-1]=’*’dp[i-1][j-1] & s[i-1] = p[j-1]dp[i-1][j-1] & p[j-1] =’.’p[j-1] ≠ ‘*’public boolean isMatch(String s, String p) {

2021-09-29 23:30:11 17

原创 三、kotlin数据容器

学习视频 视频老师的博客1.数组1.1 arrayOf() 数组初始化是必须指定数组的元素 不定长,可以是任意类型val arrayInt = arrayOf(1, 2, 3, 4)//kotlin的Any等价于java中的Objectval array = arrayOf(1, true, "2") // 集合中的元素可以是任意类型1.2 arrayOfNulls()必指定元素类型、指定数组长度val arrayOfNulls = arrayOfNulls&lt

2021-09-29 16:47:26 50

原创 剑指offer java day28 搜索与回溯算法

T1 37. 序列化二叉树k神题解理解后写出分析后可知输入序列是层序遍历输入[1,3,5,null,null,4,6]#mermaid-svg-84VWpDbZUls50RKW .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-84VWpDbZUls50RKW .label text{fill:#333}#

2021-09-28 23:39:02 35

原创 剑指offer java day27 栈与队列

T1 59 - I. 滑动窗口的最大值滑动窗口每次移动元素的增添符合队列先进先出的特点创建一个队列保证1.仅包含滑动窗口的元素2.每次添加元素队列里小于新增加元素则删除QueueDeque添加元素到队尾add(E e) / offer(E e)addLast(E e) / offerLast(E e)取队首元素并删除E remove() / E poll()E removeFirst() / E pollFirst()取队首元素但不删除E element

2021-09-27 23:08:03 20

原创 剑指odffer java day26 字符串

T1 20. 表示数值的字符串方1:k神的题解有限状态自动机初始状态,接受状态​ |------>被接受初始状态-------转移规制------->接受状态----------|------>被拒绝本题根据题意9种状态0、开始的空格1、幂符号前的正负号2、小数点前的数字3、小数点、小数点后的数字4、当小数点前为空格时,小数点、小数点后的数字5、幂符号6、幂符号后的正负号7、幂符号后的数字8、结尾的空格绘制状态

2021-09-26 23:33:05 25

原创 剑指offer java day25 模拟

T1 29. 顺时针打印矩阵n 行数 m列数123456789101110第一轮 [0][0] —>[0][m-1] 左到右第二轮[1][m-1]----->[n-1][m-1] 上到下第三轮[n-1][m-2]----->[n-1][0] 右到左第四轮[n-2][0]----->[1][0] 下到上第五轮[1][

2021-09-25 22:05:50 17

原创 二、Kotlin数据类型

课程学习-慕课零、构建第一个Android APP1.目录结构一、Kotlin必知必会教材1.kotilin的特点富有表现力且简洁:可以使用更少的代码实现更多的功能。少编写样板代码。在使用 Kotlin 的专业开发者中,有 67% 的人反映其工作效率有所提高。更安全的代码:Kotlin 有许多语言功能,可帮助避免 null 指针异常等常见编程错误。包含 Kotlin 代码的 Android 应用发生崩溃的可能性降低了 20%。可互操作:可以在 Kotlin 代码中调用 Java

2021-09-25 15:07:09 94

原创 剑指offer java day24 数学

T1 14- I. 剪绳子方1:动态规划初始条件dp[n] = n 1<=n<3动态方程dp(n) = max(dp(i)*dp(n-i)) 0<i<nclass Solution { public int cuttingRope(int n) { //递归终止的条件 if(n<4){ return n-1; } int[] dp = new

2021-09-24 23:18:46 19

原创 键值offer java day23 数学

T1 39. 数组中出现次数超过一半的数字目标是数组值的众数方1排序,众数在中间位置class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); //升序排序 return nums[nums.length/2]; }}方2:K神题解摩尔投票法T2 66. 构建乘积数组示例[1,2,3,4,5]a[0]a[1]a[2]a[3]a[4]

2021-09-23 23:16:37 29

原创 剑指offer java day 22 位运算

理解Krahets大佬题解后的答案T1 I. 数组中数字出现的次数两个相同数字异或为 0,任何数字与0异或结果是其本身class Solution { //输入[4,1,4,6] public int[] singleNumbers(int[] nums) { int z=0,m=1,x=0,y=0; //找到两个只出现一次的异或 for(int num:nums){ //两个相同数字异或为 0,任何数字与0异或

2021-09-22 23:19:10 16

原创 剑指offer java day21 运算符

T2 15. 二进制中1的个数方一根据 与运算 定义,设二进制数字 n ,则有:若 n & 1 = 0,则 n 二进制 最右一位 为 0 ;若 n & 1 = 1 ,则 n 二进制 最右一位 为 1 。public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int res = 0; w

2021-09-21 23:09:39 22

原创 键指offer java day20 分治算法

解法大部分源于Krahets的题解T1 07. 重建二叉树前序 根左右; 中序 左根右; 后序 左右根测试用例前序 [3, 9, 20,15,7] 中序 [9 , 3 , 15,20,7]​ [根|左| 右 ] [左|根| 右 ]class Solution { int[] preorder; //先序数组便于 HashM

2021-09-20 23:39:35 16

原创 剑指 offer day19 分治算法

T1 64. 求1+2+…+n需要逻辑运算符的短路效应代替用if判断的递归终止条件class Solution { public int sumNums(int n) { //逻辑符号的短路效果 //n > 1时递归 n=1短路相当于递归终止条件 boolean x = n>1 && (n += sumNums(n-1))>0; return n; }}T2 68 - I. 二叉搜索树

2021-09-19 23:21:09 16

原创 剑指offer java day18 搜索与回溯算法

T1 55 - I. 二叉树的深度DFS 根节点的深度=max(左叶子深度,右叶子深度)+1class Solution { public int maxDepth(TreeNode root) { if(root==null) return 0; return Math.max(maxDepth(root.left),maxDepth(root.right))+1; }}BFSclass Solution { public int ma

2021-09-18 23:35:53 21

原创 剑指offer java day17 排序

T1 40. 最小的k个数排序 返回前k个。class Solution { public int[] getLeastNumbers(int[] arr, int k) { int low = 0; int high = arr.length -1; int[] res = new int[k]; quickSort(arr,low,high); for(int i=0;i<k;i++){

2021-09-17 23:30:32 21

原创 剑指 offer java day16 排序

T1 45. 把数组排成最小的数若拼接字符串 x + y > y+x,则 x “大于”y ; 通过传递性证明compareTo()将number对象与参数比较。如果指定的数与参数相等返回0。如果指定的数小于参数返回 -1。如果指定的数大于参数返回 1。valueOf(int i) 返回 int 参数的字符串表示形式快速排序模板public void quickSort(int[] num){ int low = 0; int high = num.le

2021-09-16 22:43:23 26

原创 剑指offer java day15 搜索与回溯算法

T1 34. 二叉树中和为某一值的路径DFS 先序遍历 + 路径记录先序遍历: 按照 “根、左、右” 的顺序,遍历树的所有节点。public E removeLast()删除并返回最后一个元素。class Solution { //记录当前路径的链表 LinkedList<Integer> path = new LinkedList<Integer>(); //记录结果的链表数组 LinkedList<List&lt

2021-09-15 23:39:13 21

原创 剑指offer java day14 搜索与回溯算法

T1 12. 矩阵中的路径深度优先搜索(DFS)+ 剪枝char[] toCharArray()将此字符串转换为一个新的字符数组。class Solution { public boolean exist(char[][] board, String word) { char[] words = word.toCharArray(); for(int i=0;i<board.length;i++){ //行 for(

2021-09-14 23:42:10 22

空空如也

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

TA关注的人

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