自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Star的博客

越努力,越幸运!

  • 博客(63)
  • 收藏
  • 关注

原创 HarmonyOS 状态管理

HarmonyOS 状态管理,@State, @Observed

2024-04-20 22:16:13 855

原创 Android 自定义 View 中使用 Spannable

我们都知道 Android 中使用 Spannable 可以实现 TextView 富文本的显示,但是在自定义控件中如何使用 Spannable 绘制不同样式的文字呢?例如这种效果,标题中的 分数字61 是粗体,分 是常规字体,并且相对于 61 更小些。第一反应可能是使用 SpannableString.setSpan() 设置 RelativeSizeSpan, 然后在 onDraw() 中进行绘制,事实是这样实现是没有效果的,因为 onDraw() 中只能获取到 SpannableString 中

2020-05-23 21:22:31 477

原创 杠上数据结构 - 排序

杠上数据结构 - 排序稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。空间复杂度:是指算法在计算机冒泡排序每次 比较相邻 的两个元素,后一个元素值小于前一个元素值(升序),则交互位置,n 个元素需要比较 n-1 趟,每一趟需要比较 (n-当前第几趟) 次。如数组 {23, 1, 98,4,18,3 }第一趟:第一次

2020-05-23 21:21:05 285

原创 杠上数据结构 - 二叉树

二叉树在面试过程中出现的频率非常高,因此熟练掌握二叉树是吊打面试官的必备技能。基本认识二叉树:是节点的一个有限集合,该集合要么为空,要么由一个根节点加上左子树和右子树组成。特点:每个节点最多有两颗子树,即二叉树不存在度大于 2 的节点。二叉树的子树有左右之分,左子树在左,右子树在右。二叉树的存储结构二叉树的存储结构有:顺序存储链式存储顺序存储顺序存储是使用一维数组存...

2020-04-24 21:29:05 273

原创 杠上数据结构 - 树

线性与非线性**线性:**指的是元素之间是 “一对一” 的关系,比如只有唯一 一个"前驱"和唯一一个"后继"。非线性: 指的是元素之间是一对多的关系,比如 “树” 中节点可能有多个孩子节点,“图” 中可能有多个元素与之关联。树树是一种非线性的数据结构,是由 n (n >= 0)个节点组成的有限集合。如果 n = 0,则树是空树。除了根节点外,其余节点被分成 M (M > 0) ...

2019-07-16 21:04:59 184

原创 杠上数据结构 - 栈

介绍**栈 : **是 一种只允许在一端进行插入,删除的线性表,具有先进后出的特性。通常,栈的操作端称为 栈顶,另一端称为 栈底。栈的插入称为 进栈(push), 栈的删除操作称为 出栈(pop)。栈的存储结构既然栈的本质是一种线性表,那么栈的存储结构也有两种:顺序存储结构(顺序栈)链式存储结构(链式栈)栈顺序存储结构栈的顺序存储结构一般使用 数组 实现。数组中的第一个元素作...

2019-05-03 21:18:04 177

原创 杠上数据结构 - 线性表

介绍线性表 : 是由零个或多个数据元素组成的有限序列。线性表有两种实现方式:顺序结构存储 : 指的是一段地址连续的存储单元依次存储表中的数据元素。链式结构存储 : 指的是各个元素存储的位置不是连续的, 他们之间通过指针域进行关联。线性表顺序存储线性表的顺序存储一般使用 数组 实现, 通过分配一块地址连续的内存空间来存储数据元素。为方便和链式存储结构实现相同的操作,现将对表的操作...

2019-05-02 21:12:22 156

原创 Android 实现渐变色状态栏

渐变色状态栏变得越来越流行了, 刚好最近有这样的需求, 现将实现过程记录下来.效果图:Android 5.0 以上版本 :Android 4.4 以上版本:实现思路我们都知道, 在高于 4.4 低于 5.0 版本上实现纯色状态栏, 是将状态栏透明,然后创建一个与状态栏等高的 View, 设置背景色,放在状态栏位置上即可.现需要设置为渐变色,由于系统没有提供状态栏设置渐变色 API,...

2019-04-28 21:19:56 2070 3

原创 Android 架构组件 - LiveData

介绍LiveData 是一款基于观察者模式的可感知生命周期的核心组件。LiveData 为界面代码 (Observer)的监视对象(Observable),当 LiveData 所持有的数据改变时,它会通知相应的界面代码进行更新。同时,LiveData 持有界面代码 Lifecycle 的引用,这意味着它会在界面代码(LifecycleOwner)的生命周期处于 started 或 resu...

2019-04-20 21:38:02 2795

原创 Android AOP 面向切面编程 - AspectJ

AOP 概念AOP 是 Aspect Oriented Programming 的缩写,意为 面向切面编程,通过预编译和运行期动态代理实现程序功能的统一维护的一种技术。利用 AOP 可以实现对代码的业务逻辑进行隔离,降低各功能间的耦合度。使用场景: 需求是在类的每个方法中代码执行之前添加一句日志打印,在没有使用 AOP 的情况下,就需要在每个方法中手动添加日志打印,使用了 AOP ,就可以将打...

2019-03-03 18:43:41 1473

原创 Android NDK 开发 - Cmake

JNI 开发步骤创建 Java 类,编写 native 方法public class HelloJNI { public native String getContentFromJni();}Terminal 中切换到项目的 src/main/java 目录下,使用 javah 命令生成 jni 头文件E:\AndroidProject\ProgressAndroi...

2019-02-23 21:41:23 209

原创 Kotlin 类与继承

类kotlin 中使用关键字 class 声明类类声明由类名,类头(指定其类型参数,主构造函数等),花括号包围的类体构成,类头 和类体都是可选的。class Student { }如果一个类没有类体,则可以省略花括号class Empty 主构造函数一个类可以有一个主构造函数和一个或多个次构造函数,主构造函数是类头的一部分,主构造函数跟在 类名后。class 类名 c...

2019-01-30 18:43:11 1571

原创 Kotlin 控制流

if 表达式在 kotlin 中,if 是一个表达式,即他会返回一个值,因此就不需要三元运算符(条件? 然后:否则) .fun getMax(): Int { var a: Int = 1 var b: Int = 2 return if (a > b) a else b}if 的分支可以是代码块,最后的表达式作为该块的值fun getMaxCode(a:...

2019-01-30 18:42:20 140

原创 kotlin 基础

类型数字类型Double 64 位Float 32 位Long 64 位Int 32 位Short 16 位Byte 8 位布尔类型Kotlin 使用 Boolean 类表示布尔类型,他有两个值: ...

2019-01-30 18:41:20 158

原创 Android 自定义 View进阶 - Shader

不知曾几何时,渐变色变得流行起来了,各大手机厂商都发布了各自的渐变色手机,同时越来越多的 App ,也开始应用了渐变色的设计。为了满足工作需要,我们也要学习下 Android 中的渐变着色器 Shader。效果图Shader 概念/** * Shader is the based class for objects that return horizontal spans of colo...

2019-01-20 21:54:56 608

原创 Android 自定义 View 进阶 - Xfermode

在 Android 自定义控件中,Xfermode 是一个难点也是一个重点,我们有必要掌握它。之前学习过,没有充分理解,今天重新学习了下,完成了一个高亮进度条的 ImageView 控件(逐步优化中)。效果图:实现代码/** * 高亮进度的 imageview */public class HightlightProgressImageView extends AppCompatI...

2019-01-13 22:00:38 512

原创 2019 心想事成

时间总是在不经意间溜走,2019 元旦快乐!回想起 2018 年初定下的目标还没实现,2019 年只能更需要努力了,愿 2018 年的遗憾成为 2019 年的惊喜!2019 勿忘初心!...

2019-01-01 09:53:50 431

原创 RecyclerView ItemDecoration 完全解析

RecyclerView ItemDecoration 解析我们都知道,使用 RecyclerView 时 ,我们不能像 ListView 那样通过 setDivider() 的方式来设置分割线,好在 Android 为我们提供了定制性更强的 ItemDecoration 来为 RecyclerView 设置分割线。什么是 ItemDecoration ?顾名思义 ItemDecoratio...

2018-12-22 23:03:42 6277 1

原创 回顾 Linux 命令及运用

ls 命令一个简单的表格是这么创建的:参数含义-a显示所有文件及目录,包括以点开头的隐藏文件或目录-A同 -a ,但不会列出 “.”(当前目录)和 “…”(父目录)-l详细列出文件名称,文件拥有者,文件权限,文件大小等信息-r将文件以反序显示(默认依字母次序)-t以文件创建时间先后次序显示-F列出显示文件名称时,在末尾添加符号(可执...

2018-12-21 22:18:31 127

原创 Vuejs 深入浅出 - 组件

组件的定义全局组件全局组件可以在不同的挂载点中进行引用,全局组件的 3 种定义方式:使用 Vue.extend 配合 Vue.component<body> <div id="app"> <!-- 1.3 使用组件时,直接把组件名称以 HMTL 标签的形式引入即可 --> <my-Comp></...

2018-12-16 22:28:56 541

原创 Android 组件化必知必会

什么是组件化?组件化: 就是将一个 Application 的开发分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以只用专注自己开发的模块,进行单独调试,但在最终发布 apk 时,又可以将这些组件合并成一个统一的 app。组件化环境搭建实现组件化基本思路: 根据配置文件中的 isAloneRun 变量来决定该组件是作为 module 工程集成到 App 工程中,还是单...

2018-12-15 22:36:47 327

原创 Android Activity 转场动画

序言好久没有写博客了,真是越来越懒了,还是要改变!今天学习了很有可能会应用到工作中的动画效果。效果图实现思路LoginActivity 通过转场动画跳转到 MainActivity :在 LoginActivity 中确定动画的开始位置坐标,并通过 intent 传递给 MainActivity。MainActivity 拿到动画起始位置执行动画,如果需要 finish 掉 Log...

2018-11-03 21:29:05 959

原创 前端循序渐进 - 仿京东 Web 移动端首页(简易版)

最近在学 Web 前端,HTML,CSS 虽然上手容易,但是网页布局什么的,还是要多练习才行,趁周末两天空闲时间,写一些页面练习练习。 宽度使用 百分比 布局,适配不同宽度设备。最大宽度显示效果: 手机显示效果: 源码: https://github.com/xing16/jd-mobile...

2018-08-26 17:01:49 3640

原创 前端循序渐进 - HTML 实现情人节告白气球

昨天情人节,大家过的好吗?反正情人节还是跟我没有什么关系,尴尬了,最近刚好在学习 前端,又刚好看到这个公开课视频,于是动手写下记录下。效果图(gif 只能录的效果不好):源码地址:https://github.com/xing16/ValentineDaySuprise...

2018-08-18 16:19:28 5767

原创 Android 混淆其实很简单

简介在 Android 打出正式的 APK 安装包时,通常为了增加别人反编译后阅读源代码的难度,需要做一些混淆工作。在 Android Studio 中配合 Gradle 很容易完成这个操作。Proguard 作用压缩 Shrinking : 默认是开启的,移除未被使用的类和成员,并且在 优化Optimization **工作执行后还会再次执行。优化 Optimization ...

2018-08-05 20:07:12 12655

原创 Android 仿 58同城加载动画

/** * Created by Administrator on 2018/6/3. */public class BoundLoadingView extends View { private static final int DEFAULT_CIRCLE_COLOR = 0xffff0000; private static final int DEFAU...

2018-06-07 22:33:40 736 2

原创 Android 自定义锁屏图案 View

Android 自定义锁屏图案 View前言Android 自定义 View 技能是成为高级工程师所必备的,笔者觉得自定义 View 没有什么捷径可走,唯有经常练习才能解决产品需求。笔者也好久没有写自定义 View 了,赶紧写个控件找点感觉回来。本文实现的是一个 锁屏图案的自定义控件。效果图如下:Github 地址:https://github.com/xing16/Andro...

2018-06-02 09:08:19 2024

原创 RecyclerView ItemDecoration 实现分组吸顶效果

RecyclerView ItemDecoration 实现吸顶分割线本文实现的吸顶效果为:![tick-divide](C:\Users\Administrator\Desktop\blog\RecyclerView ItemDecoration\stick-divider.gif)简介我们都知道 ListView 添加分割线可以通过在布局文件中添加 android:divi...

2018-05-06 20:17:40 4292 3

原创 Java 数据结构 - 栈

关于栈栈是一种后进先出的数据结构,栈限制只能在一端进行插入和删除。栈顶:进行插入和删除操作的一端。栈底: 不变的一端。栈的数组实现使用数组来存储栈中的元素,push 的时候,直接添加一个元素到 数组 arr[n] 中 , pop 的时候直接返回 数组最后一个元素 s[n] 。 /*** 基于数组实现的栈*/public class ArrayStack&...

2018-04-21 23:10:09 233

原创 Android IntentService 异步 Service

当我们执行文件上传,文件下载等耗时任务时,为了保证 App 退回到后台而降低被系统干掉的概率,使得该任务仍然能继续执行,我们通常会将这些任务放在后台 Service 中去处理,但是,Service 是运行在主线程中(不能执行耗时操作),因此必须在 Service 中创建子线程来执行。Android SDK 提供了 IntentService 来简化了这个过程。IntentService 特点...

2018-04-15 21:14:36 700

原创 Android HandlerThread 使用指南

在 Android 开发中,需要把耗时操作放到子线程中,避免阻塞主线程,从而导致程序 ANR。实现这类异步任务的方式有:Thread + HandlerAsyncTaskHandlerThreadIntentService本文来讲解分析下 HandlerThread,在真正开始前,我们先了解下 Handler 的使用方式。Handler 机制子线程中创建 Hand...

2018-04-14 22:35:12 1259

原创 Java 数据结构 - 排序

冒泡排序思想:N 个元素需要排序 N-1 趟, 每趟比较相邻的两个元素,如果前一个元素和后一个元素不满足大小顺序规则,则交换位置,这样一趟下来,一趟中的最大(最小)的元素就 “沉” 到最后面的位置。执行 M 趟排序后,整个元素序列中的最后面的 M 个元素就排好顺序了,剩下就只需要将前面的 N-M 个元素排好序即可。private void sortBubble(int[] a...

2018-04-06 10:11:33 139

原创 Android 自定义控件 - 仿支付宝数字键盘

简介在一些带有支付功能的 App 中,输入的密码一般只能是纯数字,虽然我们可以指定 EditText 输入框只能输入数字,但是为了提供用户的使用体验,我们往往更倾向于使用自定义的纯数字键盘。本文效果:自定义 KeyboardView实现步骤:集成系统的 KeyBoardView 类,在初始化时初始化键盘布局,设置 KeyBoard 对象。实现 OnKeyboardA...

2018-03-25 20:40:47 1989

原创 Android 事件分发机制总结

简述我们知道,Android 的事件分发基本遵循 Activity —-> ViewGroup —-> View 依次从顶层至底层的顺序进行传递的,这其中主要涉及以下三个方法:public boolean dispatchTouchEvent() : 事件分发方法,如果一个事件传递给了 View ,那么 dispatchTouchEvent()方法一定被调用。 返回...

2018-03-18 15:23:23 293

原创 Weex 入门这一篇就够了

一:Vue.js 了解Vue.js 环境配置(1) 安装 nodejs(2) 安装 webpack : npm install webpack -g (3)安装 vue-cli 脚手架:npm install vue-cli -gVue.js 项目创建(1)vue init webpack vue-hello ( vue-hello 为项目名称 )(2)c...

2018-03-10 11:02:34 55622 10

原创 Python 深入浅出 - PyPDF2 处理 PDF 文件

实际应用中,可能会涉及处理 pdf 文件,PyPDF2 就是这样一个库,使用它可以轻松的处理 pdf 文件,它提供了读,割,合并,文件转换等多种操作。文档地址:http://pythonhosted.org/PyPDF2/PyPDF2 安装PyCharm 安装:File -> Default Settings -> Project InterpreterPdfFileR

2018-01-14 14:04:33 79790 2

原创 Python 深入浅出 - PyMySQL 操作 MySQL 数据库

不知不觉 2017 就已经结束了,2018 元旦快乐。回顾 2017 ,真是碌碌无为;希望 2018 勿忘初心,好好努力,早日实现新年愿望:提升自身技术,坚持把 Java 后端技术学好;轻松购买 MBP,而不会觉得价格贵;努力赚钱,买车;妹子; 祝自己好运~~~~Python 的数据库接口标准时 Python DB-API,大多数 Python 数据库接口都遵循这个标准。为了兼

2018-01-01 13:14:35 1943 2

原创 Python 深入浅出 - 网络请求库 Requests

Requests 是用 Python 语言编写的,基于 urllib,采用 Apache2 Licensed 开元协议的 HTTP 库,它比 urllib 更加方便,编写爬虫和测试服务器响应数据时经常会用到。安装 Requests通过 pip 安装>>> pip install requests下载源码安装git clone git://github.com/kenne

2017-12-31 09:41:06 482

原创 Python 深入浅出 - IO 编程

标准输入 - 键盘默认的标准输入是键盘,Python 内置函数 input() 函数可以从标准输入读入一行文本。str = input("请输入你的名字:")print("你的名字:" ,str)输出结果: 请输入你的名字:star 你的名字: star 文件操作open() 函数语法: File object = open(file_name [,access_mode] [,bu

2017-12-23 21:51:36 485

原创 Python 深入浅出 - 面向对象

在 Python 中,所有的数据类型都可以视为对象,当然也可以自定义对象,自定义对象数据类型就是面向对象中的类 Class 的概念。定义类类通过使用 class 关键字进行定义,定义模板:class Person(object): def __init__(self,name,age): self.__name = name self.__age = age

2017-12-16 21:35:37 311

空空如也

空空如也

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

TA关注的人

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