首页
学习
活动
专区
工具
TVP
发布

Android小知识

专栏作者
103
文章
112145
阅读量
24
订阅数
ConstraintLayout+ViewPager2打造《摇一摇新年幸运签》App
话不多说直接上图 📷 image.png 从图中可知,分为上下两部分,上部分是传统春联和福字,代表对大家的新年祝福,下部分是主要功能模块,包含红包金额、新年幸运签和是与不是。 采用Kotlin语言进行编写,涉及到的技术有:ConstraintLayout、Drawable、 自定义View、Android动画、Viewpager2、字体的设置和传感器的使用。 创意来源 这个创意的来源,主要是年纪大了,过年肯定要给侄子侄女发红包,哈哈哈,这回金额可以他们自己摇出来,具有互动和随机性比较好玩,为新年增添一
longzeqiu
2022-03-08
6610
关于MaterialButton你需要知道的事
📷 MaterialButton 官网占楼,下面是个人使用的总结 MaterialButton官方文档 首先肯定是导包 implementation 'com.google.android.material:material:1.2.0-alpha06' 包引入以后你就会发现可以在布局里写出MaterialButton控件了 <com.google.android.material.button.MaterialButton android:layout_width="@dimen/
longzeqiu
2022-01-11
7850
泛型
定义泛型方法:修饰符和返回值类型中间要有<参数类型>,泛型方法可定义在任意位置。 注意 定义在泛型类中的泛型方法,传入的参数类型可以与泛型类传入的类型不同,泛型类传入的类型只影响普通方法。
longzeqiu
2021-11-24
2690
算法刷题篇——Stack
Stack 栈 后进先出(先进后出) Vector的一个子类 创建一个栈 Stack stack = new Stack<包装类型>(); Stack方法|用途 分类 功能 boolean empty() 返回布尔值表示栈是否为空 Object peek() 查看栈顶元素 Object pop() 取出栈顶元素 Object push(Object element) 把元素压入栈 int search(Object element) 从栈顶向下该元素第一次出现的位置 个人刷题方法及总结 去哪刷题 ht
longzeqiu
2020-06-18
5210
NDK启航篇——C语言基础(联合体)
今天写一下联合体union(比较简单)。 什么是联合体? 不同类型的变量,共同占一段内存(相互覆盖),联合体变量任何时刻只有一个变量存在,所以也叫共用体 联合体的作用 节省内存 联合体的大小 联合体变量的大小等于最大的成员所占的字节数 联合体的定义 union 名字{}; 示例代码如下 union MyValue{ int y; int x; double z; }; void main(){ union MyValue d1; d1.x = 90; d1.y = 100; d
longzeqiu
2020-04-09
3160
NDK启航篇——C语言基础(结构体)
今天来写一下结构体 什么是结构体? 结构体是一种构造数据类型把不同的数据类型整合起来成为一个自定义的数据类型 与Java中的类相似 是C中最复杂的数据类型 结构体的初始化方式 ①声明的同时进行赋值 ②先声明,声明之后赋值 //尖括号代表系统类库,std表示标准,io表示输入输出 引入标准输入输出 #include<stdio.h> //lib表示类库 引入标准类库 #include<stdlib.h> struct Man{ char* name; int age; int (*func)(
longzeqiu
2020-04-09
3100
NDK启航篇——C语言基础(字符串)
我们写程序肯定会用到字符串,那么C中的字符串怎么写呢? C中的字符串写法 字符串数组存储字符串 字符串数组最后要写结束符\0,否则会出现乱码 //尖括号代表系统类库,std表示标准,io表示输入输出 引入标准输入输出 #include<stdio.h> //lib表示类库 引入标准类库 #include<stdlib.h> void main(){ //字符串数组最后要写结束符\0 char str[] = {'b','o','y','\0'}; char str[4] = {'b','o',
longzeqiu
2020-04-02
4830
NDK启航篇——C语言基础(指针)
如上代码运行你会发现取出来的值为0.00000,原因就是指针的类型不匹配(通过4字节读取8字节的内容)
longzeqiu
2020-04-01
3300
NDK启航篇——C语言基础(函数指针)
昨天介绍了指针类型、空指针、指针运算,今天来写一下函数指针 函数指针 函数指针的定义:函数的返回值类型(函数指针的名称)(函数的参数列表) 获取函数的地址,可以直接通过函数名获取与加&(取地址符)函数名称一样 //尖括号代表系统类库,std表示标准,io表示输入输出 引入标准输入输出 #include<stdio.h> //lib表示类库 引入标准类库 #include<stdlib.h> //windows系统标准头文件 #include<windows.h> void dialog(){ //win
longzeqiu
2020-04-01
4330
从头再看Handler
Handler是什么 想必每一个做安卓开发的人都知道Handler,就是线程间通信的桥梁,那么他的本质是什么呢,说白了就是内存共享。 Handler的是如何实现内存共享的 这就要说到Message消息,说到消息就需要说到MessageQueue消息队列,那么有了消息和消息队列,肯定少不了Looper消息泵,最后如何运行起来呢,就用到了Looper.loop()消息泵的开关,好了到这里Handler基本就明了了。 从源码理解Handler 我们用Handler发送消息都是通过sendMessage()或者po
longzeqiu
2020-03-26
3240
空间复杂度
什么是空间复杂度 空间复杂度是指执行算法时所使用的临时变量所占用内存空间的大小,同时间复杂度一样用大写的字母O(数量)来表示。 为什么使用空间复杂度 用于判断算法的优劣(算法在时间复杂度相同的情况下,空间复杂度越小的越好) 常见的空间复杂度种类 常数空间:算法所占用的空间是固定的,与输入输出无关,记为S(n) = O(1)。 线性空间:算法所占用的空间与输入输出成正比,记为S(n) = O(n)。 二维空间:算法所分配的是一个集合长度和宽度都与输入规模成正比的二维数组,记为S(n) = O(n²)。 递归
longzeqiu
2020-02-18
4070
时间复杂度
什么是时间复杂度 时间复杂度是指程序执行的次数,可以用大写的字母O(次数)来表示,我们常见的时间复杂度可分为四种 常数:程序执行次数是固定值 线性:程序执行次数是n次 对数:程序执行次数是折半的可以记为log以2为底n的对数 高阶:程序执行次数为循环n次 为什么使用时间复杂度 用于判断算法的优劣,空间复杂度 相同时算法所执行的时间越小,算法越优。 常见的时间复杂度种类 一般我们所说的时间复杂度不是指具体的程序执行次数,而是假设程序执行的次数无穷大时的时间复杂度。 常数:T(n)=O(1) 线性:T(n
longzeqiu
2020-02-18
5650
算法与数据结构
什么是算法 算法是解决各种类型问题的方法,算法有优劣之分,可依据时间复杂度和空间复杂度进行判断,但大多数的算法都是用时间来换空间,或者用空间来换时间,很像古人说的鱼和熊掌不可兼得。 我们程序员就是要寻求一种平衡,不断地去优化算法从而得到时间和空间的兼顾的算法。 为什么要学习算法 优化用户体验,减少用户等待时间。 让用户能够使用我们写成的程序(即使用户的内存空间较小的情况)。 提升个人的逻辑思维能力。 什么是数据结构 数据结构是对数据进行管理,从而可以高效的增删改查数据。 为什么学习数据结构 数据结构和算法是
longzeqiu
2020-02-18
3050
带你搞懂Java多线程(一)
什么是多线程 多线程也叫并发编程,那么在写多线程之前,我们先来了解一下并发编程的基础概念。 ①CPU核心数和线程数的关系 核心即CPU,多核就是将多个CPU集成到一个芯片内,每个处理器都是单独的,核心数和线程数是一比一的关系,Interl使用超线程技术,将一个物理CPU模拟成两个逻辑CPU核心数和线程数实现一比二。 即如果一个4核CPU使用超线程技术,就可以同时运行8个线程,未使用超线程技术的话,则同时运行4个线程。 ②CPU时间轮转机制 也叫RR调度,可以理解为将CPU的运行时间进行切片,每一
longzeqiu
2020-02-10
5280
带你搞懂Java反射
在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应方法。
longzeqiu
2020-02-10
2810
带你搞懂Java多线程(三)
为了解决上面的问题Java语言内置了synchronized关键字,所以也叫内置锁。
longzeqiu
2020-01-15
2320
带你搞懂Java泛型
定义泛型方法:修饰符和返回值类型中间要有<参数类型>,泛型方法可定义在任意位置。 注意 定义在泛型类中的泛型方法,传入的参数类型可以与泛型类传入的类型不同,泛型类传入的类型只影响普通方法。
longzeqiu
2020-01-02
4680
DrawerLayout+NavigationView
侧滑菜单的实现方式有许多种,之前有写过一篇SlidingMenu的使用,这次决定记录下DrawerLayout+NavigationView来实现的过程 这里说一下DrawerLayout之前是放在android.support.v4.widget包下的,不过AS3.5以后google整合了这些包到androidx中,于是这次我用的包为androidx.drawerlayout.widget.DrawerLayout。 DrawerLayout下包裹两个控件 第一个是内容控件 第二个是侧滑控件 addD
longzeqiu
2019-12-19
1K0
MUTF-8(Modified UTF-8)
在Android应用程序的Dex文件中,所有的字符串都是使用一种叫做MUTF-8(Modified UTF-8)的编码格式进行编码的。
longzeqiu
2019-11-18
1.7K1
Android 需要配置的环境变量
身为Android开发,可能好多人只知道配置java环境变量,但很多人不知道Android环境变量,下面我就来记录一下。 配置Android环境变量后我们可做什么 使用AndroidStudio自带的Terminal命令行工具。 或在cmd命令行工具中进行某些android操作。 在linux或windows系统中用命令进行打包操作。 在Terminal中使用adb和gradle命令。 环境变量配置 在系统变量中新建一个变量名字为ANDROID_HOME的变量,值为你的sdk目录。
longzeqiu
2019-08-15
3.4K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档