
学习
AncelyF
这个作者很懒,什么都没留下…
展开
-
【鸿蒙BUG】开发游戏的一个登录界面,发现鸿蒙一个BUG(小记)
在用Dialog做登录弹窗的时候,在做窗口管理的时候我会把除最上层的窗口都hide,开始调用的是DIaLog的hide方法,其它手机开始测试都没 什么问题,后来测试发现在下拉状态栏操作一些东西的时候,后面影响的Dialog在左上角给显示出来了。 然后能过复现发现是在点击华为分享的时候在同意协议的时候点取消必现。无敌大BUG死坑 解决方法,重写Dialog的hide方法,去掉super自己做View的隐藏,用INVISIBLE 不能用GONE原创 2022-12-07 16:18:47 · 379 阅读 · 0 评论 -
Android 音视频入门之C++入门序列(四)- 函数构造
C++ 和Java类型还是非常多的 构造写法也很类似 构造函数 #include <iostream> using namespace std; // C# .net也有命名空间 // 对象默认会有一个指针 class Animation { // 空参构造函数 Animation() { cout << "空参数构造函数" << endl; } Animation(char *name) { cout原创 2022-04-20 16:16:15 · 226 阅读 · 0 评论 -
Android 音视频入门之C++入门序列(三)- 命名空间
关键字 namespace 我们之前在打印的时候有有用到std:: cont这个是没用命名空间的 打印 int main () { std::cout << "Hello Work " << std::endl; } 当我们声明了std时就可以省略std:: using namespace std; // 全局的所有函数都可以用 int main () { cout << "Hello Work " << std::endl; } 也可以原创 2022-04-20 15:50:19 · 2432 阅读 · 0 评论 -
Android 音视频入门之C++入门序列(二)- 函数
C里面函数写法 void change(int *num1, int *num2) { int temp = 0; temp = *num1; *num1 = *num2; *num2 = temp; } C++写法 // & 代表是引用 void change2(int &num1, int &num2) { std::cout << "change2 " << "n1的地址: " << &nu原创 2022-04-20 15:41:34 · 2666 阅读 · 0 评论 -
Android 音视频入门之C++入门序列(一)- 初步认识C++
#include <iostream> // c++标准支持 using namespace std; // 命名空间 C++的特性,相当于Java语言的内部类 int main() { // C++是面向对象 C语言是面向过程 函数+结构体 // C++可以基于C,可以调用C语言,反之C不能调用C++ // C++打印 << 这个是操作符重载 Kotlin里面这种语法会经常看到 std::cout << "Hello, Worl原创 2022-04-18 10:05:00 · 1554 阅读 · 0 评论 -
Android 音视频入门之C入门序列(十一)- 文件加解密思路
加密思路 加密 === 破坏文件 方式一: 全部加密, 对每一个字节都处理 方式二: 部分加密,把某一部分内容拿出来处理 如何破坏呢,可以最简单的思路,就是把取出来的数据异或某一个值。 解密思路 解密 === 将破坏过的文件还在原 在加密思路中异或的值再异或一次 代码实现 char *fileNameStr = "D:\\Temp\\IMG.png"; // 来源 char *fileNameStrEncode = "D:\\Temp\\IMG_encode.png"; // 加密后的目标文件 FIL原创 2022-04-18 09:55:19 · 322 阅读 · 0 评论 -
Android 音视频入门之C入门序列(十)- 操作文件入门
C里面打开文件API fopen 参数详解 fopen (参数1: 文件路径, 参数2: 模式(读r, 写w,rb作为二进制读,wb作为二进制文件写)) 读取文件数据 int main () { // 文件路径 char *fileNameStr = "D:\Temp\DerrFile.txt"; // 打开一个API FILE *file = fopen(fileNameStr, "r"); // 判断文件是否被打开 因为读一个文件可能这个文件不存在 if (!file) {.原创 2022-04-18 09:39:31 · 1274 阅读 · 0 评论 -
Android 音视频入门之C入门序列(九)- 结构体别名
通用写法 给结构体写别名 关键字typedef // 首先定义一个结构体 struct Worker_ { char name[10]; int age; char sex; }; // 给结构体定义一个别名 typedef struct Worder_ Worder_; // 定义一个结构体指针别名 typedef struct Worder_ * Worder; // 使用 int main () { // 首先没有定义别名时是这样创建的 struct Work原创 2022-04-13 14:03:43 · 1535 阅读 · 0 评论 -
Android 音视频入门之C入门序列(八)- 结构体
Java里的对象对应C里的是结构体 关键字struct 定义结构体 // 方式一 struct Dog { // Java类里有成员, // 成员 char name[10]; // 这个需要copy int age; char sex; }; // 方式二 struct Person { char *name; // 这个可能直接赋值 int age; char sex; } ppp0, ppp = {"Derry", 3.原创 2022-04-13 13:37:57 · 1611 阅读 · 0 评论 -
Android 音视频入门之C入门序列(七)- 字符串相关
定义字符串的二种方式 方式一 char str[] = {'H', 'e', 'l', 'l', 'o', '\0'}; // 加上'\0'的作用是打印有个结尾 方式二 char *str2 = "Hello"; // 这名话会隐式加了\0, 所以这个不需要在后面加\0 上面二种方式在使用上也是有区别 // 方式一 char str[] = {'H', 'e', 'l', 'l', 'o', '\0'}; // 方式二 char *str2 = "Hello"; // 方式一可以执行修改操作原创 2022-04-08 16:42:24 · 1827 阅读 · 0 评论 -
Android 音视频入门之C入门序列(六)- 内存开辟
C里内存开辟分静态开辟和动态开辟 静态开辟 int arr[5];// 静态开辟 // 下面为数组赋值 for (int i = 0; i < 5; ++i) { arr[i] = i; printf("%d, %p \n", *(arr + i), arr + i); } Java布尔类型定义为boolean, 而C中只有0和1, 非0即true, 0就是false 静态开辟内存也要注意, 不是随便开辟多大都可以,假如下面 int arr[10*1024*1024]; // 这.原创 2022-04-08 16:06:57 · 1579 阅读 · 0 评论 -
Android 音视频入门之C入门序列(五)- 函数指针
指针类型有何用 指针也为内存地址,他在32系统中占用永远是 4个字节, 64位为8 所以用处就是在取值的时候系统知道怎么取,这就是类型规范的好处,因为是4个 固定,所双找下个只要知道偏移4就是下一个就可以 函数指针 函数本身就是指针,当我们定义了一个函数的时候他就有个内存地址,所以函数也可以当做参数传递,如下面例子 #include <stdio.h> // 先定义下面二个方法 void add (int num1, int num2) { printf("num1+num2 = %d\n",原创 2022-03-31 17:37:47 · 2423 阅读 · 0 评论 -
Android 音视频入门之C入门序列(四)- 多级指针及数组
在我们平时写代码中常用的为三级指针及以下,多的用的比较少 int num = 999; //定义一级指针: int * num_p = # //定义二级指针: int ** num_p_p = &num_p; //定义三级指针: int *** num_p_p_p = &num_p_p; printf("num_p的地址是: %p, num_p_p的地址是: %p\n", num_p, num_p_p); printf("num_p_p的值是: %d\n", .原创 2022-03-31 16:34:07 · 2457 阅读 · 0 评论 -
Android 音视频入门之C入门序列(三)- 函数入门
C里面函数和Java里面的函数差不了多少,但是也有区别 区别1:C里面的函数需要和无申明再使用 错误方式如下,change函数写在了main函数下面 #include <stdio.h> int main(){ //函数, 取修改一个数(指针操作) int i = 100; change1(i); return 0; } // 函数不能写在main的上面 非要写在后面,要先声明再实现 void change(int i){ // 这个函数传过来的i c会.原创 2022-03-31 15:41:41 · 319 阅读 · 0 评论 -
Android 音视频入门之C入门序列(二)- 指针入门
在Java中有这么一种说法,万物皆对象,而C C++也有一种说法,万物皆指针而Linux则万物皆对象 指针 在C中指针就是内存地址 比如下面代码 定义了一个别名为numbler1的int型变量,给他赋值于100000 int numbler1 = 100000; C里面获取内存地址的方式为 &(取值) 比如下面代码,int * 代表定义一个指针,别名为numbler1_p 将其赋于numbler1的内存地址(&numbler1) int * numbler1_p = &num.原创 2022-03-30 15:02:37 · 1515 阅读 · 0 评论 -
Android 音视频入门之C入门序列(一)- 初步认识C
初步认识C #include <stdio.h> // <>寻找系统的资源 “” 寻找自己写的资源 // .h .hpp (声明文件 头文件) // .c .cpp (实现 文件) int main1() { // 函数入口 printf("Hello word!\n"); // getchar(); // 阻塞程序 //下面是定义基本类型 int i = 100; double d = 200; long l = 200;原创 2022-03-30 14:07:06 · 737 阅读 · 0 评论