- 博客(28)
- 收藏
- 关注
原创 Git学习记录
Git分区 Git 本地数据管理,大概可以分为三个区,工作区,暂存区和版本库。 工作区(Working Directory) 是我们直接编辑的地方,例如 Android Studio 打开的项目,记事本打开的文本等,肉眼可见,直接操作。 暂存区(Stage 或 Index) 数据暂时存放的区域,可在工作区和版本库之间进行数据的友好交流。 版本库(commit History) 存放已经提交的数据,push 的时候,就是把这个区的数据 push 到远程仓库了。 用户通过git命令进行提交时,一个变化过程:
2021-04-19 21:42:33
317
原创 View的工作流程--onMeasure
View何时开始绘制?-requestLayout() Window是View的载体,在ViewRootImpl的setView方法中添加Window到WMS之前。会调用requestLayout绘制整颗View Hierarchy的绘制。 Activity在onResume执行结束后才会进行view的绘制和显现。在handleResumeAcitvity()方法执行完Activity的onResume()方法后,会把DecorView加载到Window中,并同时创建ViewRootImpl对象。 Act
2020-10-24 21:56:46
339
原创 ARouter的简单使用
ARouter的官方文档 借鉴 ARouter框架可以解决组件化的通信问题,组件化工程下的业务关系,业务之间将不再直接引用和依赖,而是通过“路由”这样一个中专站间接产生联系 基本使用 1.添加依赖 2.初始化 Application进行ARouter的初始化 public class BaseApplication extends Application { private boo...
2020-02-23 23:15:14
291
原创 EventBus的使用
EventBus 是一款在 Android 开发中使用的发布/订阅事件总线框架,基于观察者模式,将事件的接收者和发送者分离,避免复杂且容易出错的依赖关系和生命周期问题,简化了组件之间的通信。 EventBus的优点 通过ThreadMode方便灵活的指定工作线程 速度快 功能多,使用方便 对事件通信双方进行解耦 简化的组件间交流的方式 使用 在使用之前先将EventBus作为依赖项添加进项...
2020-02-09 10:35:24
361
1
原创 DataBinding-BindingAdapter注解
@BindingAdapter自定义属性注解 dataBinding中自定义属性依赖于注解@BindingAdapter 作用于方法,这个方法可以写在任何地方 这个注解面向一个public static方法 {}内部表示使用时这个属性的名字。例如:@BindingAdapter({“imageUrl”}),imageUrl为属性的名称 简单应用-加载图片 public class ImageH...
2019-12-07 22:06:28
1691
转载 自定义控件之绘图-drawText()
一、概述 1.基线 canvas在利用drawText绘制文字时,是有规则的,这个规则就是基线,当基线确定时,文字的位置也就确定了 如图上面红色的线就是基线 2.canvase的drawText() 1.canvas.drawText()与基线 public class CircleView extends View { public CircleView(Context context...
2019-12-01 11:06:34
404
原创 JAVA线程
Object的notify和notifyAll方法的区别 notify:只会唤醒等待该锁的其中一个线程 notifyAll:唤醒等待锁的所有线程 每个对象都拥有两个池,锁池和等待池 锁池:假设线程A已经拥有了某个对象的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的...
2019-11-17 17:38:12
125
原创 AsyncTask的简单使用
AsyncTask的简单使用 为了更加方便对UI的操作,Android提供了AsyncTask,借助AsyncTask可以简单的从子线程切换到 主线程。 参数解释: 1、Params:这是一个任务参数,一般我们会定义成String类型的,例如要获取网络资源的URL地址 2、Progress:任务执行的刻度,一般我们会定义成Integer类型 3、Result:返回结果类型,本例为Integer...
2019-11-03 00:15:47
164
转载 JSON数据的解析
JSON数据的解析 在解析JSON数据时,往往遇到的JSON格式并没有书上列举的那么简单, 在此我举例几种JSON格式:这下面JSON数据来自于一篇别人的博客 { “name”:“李四”, “age”:99, “hobby”:“爱好是练习截拳道” } 用这一对花括号括起来的是一个JSON对象 private void parseJSONWithJSONObject(String jsonDat...
2019-10-20 11:05:26
211
原创 OkHttp的使用
OkHttp的使用 步骤: 首先在项目中添加OkHttp的依赖库,编辑app/build.gradle文件: implementation 'com.squareup.okhttp3:okhttp:4.2.2' get的请求的使用方法 get的同步请求: 同步请求在请求时需要开启子线程,请求成功后需要跳转到UI线程修改UI 使用如下: private void sendHttpResult(...
2019-10-20 10:31:13
170
原创 背景图和状态栏融合
实现背景图和状态栏融合 简单的方法 if(Build.VERSION.SDK_INT >= 21) { View decroView = getWindow().getDecorView(); decroView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_L...
2019-10-13 18:36:14
289
转载 滑动菜单
滑动菜单指的是:菜单项在初始状态下是隐藏的,用户可以通过滑动的方式将菜单显示出来。 DrawerLayout布局 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/a...
2019-10-13 18:16:42
319
原创 RecyclerView
RecyclerView的简单使用 RecyclerView的使用步骤: 添加依赖库 --> 准备适配器,让适配器继承RecyclerView.Adapter --> MainAvtivity创建Adapter对象 --> 创建LinerLayoutManager对象,并设置到RecyclerView中 --> RecyclerView的setAdapter()方法完成...
2019-09-28 18:48:04
141
原创 ListView
ListView的简单使用 ListView用来数据的展示,ListView允许用户通过手指上下滑动的方式,将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。 ListView的使用步骤: 提供数据 --> 创建适配器 --> listView.setAdapter(adapter) 将adapter对象传递进去 ArrayAdapter: 它可以同过泛型来指定要...
2019-09-28 18:04:27
131
转载 LocationManager的简单使用
LocationManager 在Android中可以根据LocationManager来获取设备所在的地理信息 根据需求可以将定位的代码移动到所需的地方或者可以稍加改动获取城市的信息 MainActivity 中: package com.example.myapplicationpp; import android.Manifest; import android.app.Activity;...
2019-09-20 00:39:58
1731
1
原创 线性表
线性表的逻辑结构 线性表是n个元素的有限序列。 逻辑关系:表中有且仅有一个开始结点,有且仅有一个终端结点;除开始结点外,每个结点都有一个前驱结点;除终端 结点外,表中的每个结点都有一个后继结点。 顺序表 定义: 顺序存储是所有的结点元素存放在一块连续的存储区域中,用存储结点的物理位置来体现结点之间的逻辑关系的存储方法。在高级语言中,一块连续的存储空间通常可用一个数组来表示。因此,顺序存储通常用一...
2019-09-05 19:25:53
907
原创 聊天室-客户端
现在只能实现群聊,不能实现私聊 图片如下: 登录界面: 聊天界面: 在AndroidStudio中可以开启两个模拟器,也可以手机和模拟器,ip地址是电脑的ipv4地址,可以在cmd通过ipconfig查看自己的ipv4地址 登录界面的布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=...
2019-08-10 09:43:16
369
原创 聊天室-服务器
class ChatThread implements Runnable{ private Socket socket; private OutputStream out; private InputStream reader; public ChatThread(Socket socket) throws IOException{ &n...
2019-08-10 09:10:38
348
原创 简易计算器的实现
计算器的布局如图: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" andr...
2019-08-09 20:21:46
746
原创 Java多线程
进程和线程的区别 进程 : 是程序的执行过程,具有动态性,即运行的程序就叫进程,不运行就叫程序; 线程:系统中的最小执行单元,同一进程中有多个线程,线程可以共享资源,一旦出现共享资源,必须注意线程安全。 java线程的分类 守护线程 用户线程 通过Thread.setDaemon(false)设置为用户线程;通过Thread.setDaemon(true)设置为守护线程。如果不设置次属性,默...
2019-08-04 12:50:41
120
原创 常见工具类
System类的概述和方法使用 System类的概述: System 类包含一些有用的类字段和方法。它不能被实例化。 成员方法: public static void gc() ------- 运行垃圾回收器。 finalize()方法是一个类对象在销毁时会被调用的方法,垃圾收集器在发现这个类对象不会再被使用时就会回收内存,也就是销毁该对象,从而finalize()被调用了。JDK带的垃圾回收...
2019-06-15 17:57:39
388
原创 基本包装类及Arrays
数组的冒泡排序与选择排序 冒泡排序与选择排序 (加载别人的一篇博客) Arrays 类的概述与方法的使用 Arrays 类的概述: 此类包含用来操作数组(比如排序和查找)的各种方法。 此类好包含一个允许将数组作为列表来查看的静态工厂 方法的使用 Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法 toString方法 sort方法 5、Arrays.binarySear...
2019-06-13 23:25:21
149
原创 Java-StringBuffer类
StringBuffer类 类的概述: 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题 线程安全的可变字符序列 StringBuffer和String的区别 前者长度和内容可变,后者不可变。 如果使用前者做字符串的拼接,不会浪费太多的资源。 Java中的String,StringBuilder,Stri...
2019-06-13 22:14:36
174
原创 JAVA基本数据类型
注释 语言注释分为三种 单行注释 多行注释 文档注释 单行注释:将双斜线(//)放在需注释内容之前。 多行注释:"/*"表示注释开始, */ 表示注释结束。(用法与C语言的相似) 标识符 标识符就是用于给 Java 程序中变量、类、方法等命名的符号。 规则: ①可以由字母,数字,下划线(_),美元符($)组成,但不能包含@,%,空格等其他特殊字符,不能以数字开头。 ②不能是Java关...
2019-05-18 18:23:53
103
原创 全排列与函数原形的实现
数的全排列 如:输入一个数,输出1~n的全排列 假如有编号有1、2、3的3张扑和编号为1、2、3的3个盒子,现在需要将这3张扑克牌分别放到3个盒子里面,并且每个盒子有且只有一张扑克牌。 拿着3张扑克牌,每次到一个盒子面前是,都先放1号,再放2号,再放3号。首先走到1号盒子前,将1号扑克牌放到1号盒子中,现在手中有两张牌,走到2号盒子前,放入第二张牌,放好后来到3号盒子,此时手中只剩一张3号牌了,所...
2019-04-20 22:43:16
175
原创 单向链表的相关操作
单向链表的插入,删除,修改,查询。 单向链表的插入 1>头插法 struct node *insert(struct node *phead) { struct node *pnew; pnew=(struct node *)malloc(sizeof(struct node)); printf("insert:"); scanf("%d",&pnew->data); ...
2019-04-12 18:50:31
261
原创 单向链表简单的创建
单向链表的介绍及创建 链表的定义: 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。有时使用数组时显得不灵活,这时候使用链表,比如插入,删除等时比较好用。 链表的实现 C语言中可以使用...
2019-04-12 16:53:33
2428
原创 指针地址
地址(Adress) 1.地址的作用 2.地址的表示 3.变量地址的表示 4.变量单元的分配 5.地址的计算 指针 1.指针的定义 2.一级指针 3.多级指针是二级指针 4.野指针 地址(Adress) 1.地址的作用 系统用来查找数据位置的依据,标识存储单元空间。 2.地址的表示 i>地址是一个整数值,(十六进制表示)每8bit一个址。 ii>...
2019-04-07 09:31:43
1803
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅