- 博客(130)
- 资源 (5)
- 论坛 (2)
- 收藏
- 关注
原创 十五、Android常用控件使用指南(持续更新)
Shape圆角矩形shape:<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!-- rectangle表示为矩形 --> <!-- 填充的颜色 --> <solid android:color="#FAFAFA" /> <!-- 边框的颜色和粗细 -->
2021-01-07 23:52:06
28
原创 二、自定义垂直ViewGroup如何设置margin
ViewGroup设置margin累计分为三步:1.获取margin2.onMeasure里面加上margin3.onLayout布局设置margin获取margin首先呢,ViewGroup是自带的MarginLayoutParams的,但是在addView时,查看源码: public void addView(View child, int index) { if (child == null) { throw new IllegalArgu.
2020-12-19 06:01:45
85
1
原创 一、自定义一个竖直Layout
垂直Layout我们想到的第一直觉肯定是ViewGroup,自定义一个ViewGroup通常包含onMeasure(测量),onLayout(布局)。onMeasureonMeasure是一个父往子依次measure的过程。当我们要画一个竖直的Layout.我们应该得到下图:父控件的高度是子控件的高度和。设自定义viewgroup有三个EditText<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android
2020-12-18 21:18:26
41
原创 十三、Android如何使用SystemTrace
SystemTrace解决的问题分析api耗时,解决应用程序卡顿的问题如何使用现在代码中埋点: Trace.beginSection("app onCreate");//开始点 Trace.endSection();//结束点python systrace.py -t 5 -o ~/Trace/mytrace3.html -a packagename需要说明的是位于android sdk/platform-tools文件夹里面,python版本为2.7需要安装的python插件pip
2020-11-17 14:37:14
33
原创 十二、Android的沉浸与动态沉浸
Window的各种效果默认的效果导航栏显示,内容处于导航键上方style <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <it
2020-11-06 19:00:12
57
1
转载 十一、Android坐标系
前言Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系、View的滑动、View的事件分发等文章来逐步介绍Android View体系。1.View简介View是Android所有控件的基类,同时ViewGroup也是继承自View,看下面这张图我们就会有一个直观的了解:知道了View的层级关系有助于对View的理解...
2020-04-04 21:17:28
119
原创 粒子效果
粒子效果1.基本概念:Duration:粒子发射器,发射粒子的时间。单位为S(秒)。Looping:是否开启。如果开启了循环,Duration值只要大于最小值0.10即可。Prewarm:是否开启预热。只有在开启的循环的时候,预热才有效果,粒子量相似发射了一个粒子周期。Start Delay:预热延迟。游戏开始多长时间后,预热开启。单位为S。Start Lifetime:粒子从发射器...
2020-03-11 14:44:37
133
原创 1.Unity 2D背景图轮换
2D游戏中,背景图轮换是一个非常常用的场景,轮换的方式现在有两种,一种是两张图片不断改变坐标另一种是使用shader,原理相同,同样都是坐标轮换方式一:两张图片不断改变坐标,当第二张到达第一张图片图片的位置,两个交换循环:布局如图代码绑定在BG上,代码如下:using System.Collections;using System.Collections.Generic;using...
2020-02-21 11:15:38
476
原创 一、图片灰度算法
文章目录灰度算法简介一.opencv灰度实现二.灰度算法手动实现灰度算法简介在计算机领域中,灰度(Gray scale)数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以是任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑白两种颜色,灰度图像在黑色与白色之间还有许多级的颜色...
2019-07-03 19:44:45
2835
原创 五、选择排序
文章目录原理原理每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法package exercise.array;import java.util.Arrays;public class SelectSort {...
2019-02-13 12:59:27
670
原创 九、Python的可变参数
写在前面的话传递参数的行为对于现在编程语言来说,再寻常不过的概念参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。 - 来自 wikipedia先来看一个例子:# 来源于 https://docs.python.org/2/library/itertools.htmldef chain(*iterables): for...
2018-11-27 21:28:57
718
4
原创 四、常用的ffmpeg指令
1.抽取音频ffmpeg -i dummy1.mp4 -vn -y -acodec copy dummy1.aacffmpeg -i dummy1.mp4 -vn -y -acodec copy dummy1.m4a2.抽取视频ffmpeg -i dummy1.mkv -vcodec copy –an dummy1.mp43.音视频合成ffmpeg -i video1.av...
2018-11-26 23:46:52
446
原创 三、ffmpeg获取视频信息
获取信息是视频编解码的基础,ffmpeg提供了非常方便的获取信息的方式,代码也比较简单.我就直接贴出来了import ffmpegimport sys# 执行probe执行probe = ffmpeg.probe("dummy1.mp4")video_stream = next((stream for stream in probe['streams'] if stream['code...
2018-11-26 08:52:12
5815
8
原创 二、ffmpeg输入输出
这里我们使用Python作为编程语言,非常方便实验,搭配anaconda.可以实现跨平台的效果.1.环境配置:1.下载anaconda:https://www.anaconda.com/download2.下载pycharm(编辑器)3.打开安装anaconda.然后使用anaconda指令conda install ffmpeg2.第一个实例程序.输入输出import ffm...
2018-11-26 08:26:49
1236
原创 一、ffmpeg合并视频
一.Mac安装ffmpeg:brew install ffmpeg二.合并,当所有的格式都一样时:编写批量处理文件filelist.txtfile 'video1.mp4'file 'video2.mp4'file 'video3.mp4'执行指令,生成output.mp4$ ffmpeg -f concat -i filelist.txt -c copy output.mp4...
2018-11-25 22:04:58
943
1
原创 六.opencv ndk环境搭建(cmake方式)
opencv全称open source compute vision,开源的视觉库一.准备工作导入opencv的步骤还是相对简单,准备步骤分为以下三步:下载opencv android sdk https://opencv.org/releases.html将OpenCV-android-sdk/sdk/native/libs拷贝到工程的jniLibs将OpenCV-android...
2018-10-04 16:57:11
719
原创 五.NDK调用so库
NDK调用so库,和原生.h和.cpp的方式大同小异,调用so库实际是将so库当成cpp使用一.添加要被调用的so库二.CMakeLists.txt添加链接# 指定cmke版本cmake_minimum_required(VERSION 3.4.1)include_directories(src/main/cpp/include) #添加头文件的位置#编译CPP到call-lib...
2018-10-04 00:05:23
1152
原创 四.NDK处理Bitmap灰度
Bitmap的处理,是NDK知识中很重要的一部分,本篇文章将讲解一些常用的NDK如何处理bitmap一.编写BitmapUtilBitmapUti.h#ifndef PRACTICLE_BITMAPUTIL_H#define PRACTICLE_BITMAPUTIL_H#include &amp;lt;jni.h&amp;gt;#include &amp;lt;android/bitmap.h&amp;gt;
2018-10-02 21:55:33
557
原创 三.NDK类型转换
NDK的基本类型转换,是NDK使用的基础,本文先讲基本的数据类型.一定程度上,基本数据类型可以直接强转一.Java to C Convert先看看Java2CConvert.h,实现的功能有三个jint 转 c intjlong 转 c longjstring 转 c const char *#ifndef PRACTICLE_JAVACONVERTC_H#define P...
2018-10-02 19:46:49
556
原创 二.extern "C"
extern关键字xtern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定一.extern "C"的作用当它与"C"一起连用时,如:extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的
2018-10-02 13:00:15
577
原创 一.Andrid NDK环境搭建
本文使用将Cmake来集成和演示一.给新建的普通工程加上cmake支持在app/build.gradleandroid{ defaultConfig{ .... externalNativeBuild { cmake { cppFlags "" //暂不了解具体用途 } ...
2018-09-30 19:54:53
230
原创 6.4 堆排序
引用地址:https://www.cnblogs.com/MOBIN/p/5374217.htmlpublic class HeapSort { private static void heapSort(int[] arr) { int len = arr.length -1; for(int i = len/2 - 1; i >=0; i --)...
2018-08-09 16:16:49
131
原创 4.1 最大子数组问题(分治法)
public class MaxSubArray { //暴力求解 int maxSubArray1(int arr[]) { int max = 0; for (int i = 0; i < arr.length; i++) { int curMax = arr[i]; for (int j =...
2018-08-06 18:49:42
152
原创 2.3.1 归并排序(分治法)
public class MergeSort { public void printArr(int arr[]){ for (int i = 0; i &amp;lt; arr.length; i++) { System.out.printf(arr[i]+&quot;\t&quot;); } System.out.println(); ...
2018-08-06 15:38:47
133
原创 2.1插入算法
public void insertSort(int arr[]){ for (int i = 1; i &amp;lt; arr.length; i++) { int curValue = arr[i]; int curPos = i-1; while (curPos&amp;gt;=0&amp;amp;&amp;amp;curVa...
2018-08-03 17:35:32
206
原创 十、Material Design记录(待更)
CoordinatorLayout控制协调子viewTabLayouttabMode:fixed //固定tabMode:scrollable //可横向滑动适用于较多tab页面
2017-12-16 23:42:52
185
原创 九、Android混淆
Android混淆没什么特别的.就是能让显得牛逼一点.让破解你软件的人痛苦很多.接下来给大家讲讲混淆的基本概念,Android混淆主要分为四个阶段压缩(Shrink): 侦测并移除代码中无用的类、字段、方法、和特性(Attribute)。优化(Optimize): 分析和优化字节码。混淆(Obfuscate): 使用a、b、c、d这样简短而无意义的名称,对类、字段和方法进行重命名。 前...
2017-10-24 11:01:59
366
原创 八、Handler机制源码解析
Handler机制的主要对象有Handler、Looper、MessageQueue、Thread、ThreadLocal.下面我按照咱们使用Handler程序执行的思路.来给大家捋一下.1.在子线程使用Handler[]() 可以看到.这个new Handler的时候.主要是获取Looper里面的MessageQueue引用.然后给mCallback 和mAsynchronous 赋值.构造函数
2017-09-18 13:52:06
322
原创 七、顺序队列
序言结构示意图顺序队列结构顺序队列常用操作顺序队列实现序言 顺序队列是通过链表的方式来实现结构示意图顺序队列结构typedef struct QUEUE_LIST { Node *pFront; Node *pTail;} *PQUEUE_LIST, QUEUE_LIST;顺序队列常用操作void init_queue_list(PQUEUE_LIST *pqu
2017-06-04 16:26:25
650
原创 六、线性队列
序言结构图队列结构队列常用操作队列的实现序言 线性队列是用数组实现的队列.队列遵循的原则FIFO(first in first out),通常我们说的线性队列,为了节省数组的空间使用,都是循环队列结构图队列结构typedef struct QueueArr { ELEMENT *base; int front; int rear;} QueueArr, *PQ
2017-06-04 15:54:12
326
原创 五、顺序栈
序言栈的结构图栈的结构栈的基本操作序言 用链表实现的栈结构,遵循先进后出栈的结构图栈的结构typedef struct STACK_LIST { Node *pFront; Node *pTail;} *PSTACK_LIST, STACK_LIST;栈的基本操作void init_stack_list(PSTACK_LIST *pstack_list) {
2017-06-04 15:29:11
273
原创 四、线性栈
序言栈的结构图如下栈的结构栈的基本操作实现序言 线性栈是使用线性结构数组直线的栈.栈的结构图如下栈的结构.#define MAX_STACK_ARRAY_SIZE 15typedef struct STACK_ARRAY { ELEMENT *stack; int top; int size;} *PSTACK_ARRAY, STACK_ARRAY;栈的
2017-06-04 15:24:05
511
原创 七、多线程(未完.待更)
序言Java多线程两种方式synchronized的两种种用法序言 指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个执行绪,进而提升整体处理性能Java多线程两种方式:继承Thread实现Runnablesynchronized的两种种用法锁对象.当所有的线程都访问这个对象的同一个方法.锁public void test()
2017-05-24 18:37:46
257
原创 三、双链表
序言双链表表示初始化获取指定节点添加删除销毁序言 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。 所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。双链表表示typedef struct DNode { struct DNode *next; struct DNode *pre;
2017-05-19 22:07:39
227
原创 二、线性表
序言结构如下插入逻辑图解code删除图解code链表反转图解code函数一览序言 单向链表(单链表)是线性表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。结构如下插入逻辑图解code//add to list endbool insert_element_slist(Node *pHead, int pos, ELEMENT data)
2017-05-07 08:33:58
263
原创 一、顺序表
序言c实现github序言 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。c实现//// Created by Eavawu on 30/04/2017.//#include "array.h"#include <math.h>void init_arr(struct Array *array) { array->d
2017-05-01 10:13:45
401
原创 四、快速排序
序言图解排序过程:快排code先找pivot将比pivot小的放在左边,比pivot大的放在右边,递归code地址引用序言 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。 步骤为: 从数列中挑出一个元素,称为”基准”(pivot), 重新排序数...
2017-04-30 14:50:16
353
原创 三、希尔排序
序言标准实现图解实例标准代码输入运行结果改良输入运行结果其他code地址引用:序言 希尔排序算法是按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布,是插入排序的一种更高效的改进版本。它的作法不是每次一个元素挨一个元素的比较。而是初期选用大跨步(增量较大)间隔比较,使记录跳跃式接近它的排序位置;然后增量缩小;...
2017-04-30 09:00:34
295
原创 二、插入排序
序言图解插入排序code输入运行结果code地址序言 英语:Insertion Sort)是一种简单直观的排序算法。 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。图解将arr[i]与arr[x],x取值0<=x<i-1 ,进行比较,如果遇到比i小的或者到达0位...
2017-04-29 16:58:51
364
原创 一、冒泡排序演进
序言基础版本测试运行结果改良版本改良版本code测试运行结果代码地址序言冒泡排序相信都知道.恩.对,那我说那么多废话干么.其实我想说的是.我并没有实际掌握每一个细节.抱着空杯心态.我把冒泡重新写了一下.每个交换和标志位都弄了一下.这才算心安基础版本:基础版本的冒泡原理是:因为每一次交换.都会产生一个最大值.通过len次交换.所有的值都依次排好序void bubble_sort(Elm
2017-04-29 14:25:53
319
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝