- 博客(34)
- 收藏
- 关注
原创 图片/视频获取缩略图的几种方式
1. 通过Exif获取图片缩略图:拿到了图片的path之后我们从exif信息中获取缩略图: public static Bitmap fromExif(final String filePath, final int width, final int height) { if (filePath == null) { return null; } ExifInterface exifIF; try {
2021-09-10 09:56:29
2899
转载 C++基础(五)————提高编程
C++提高编程本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用1 模板1.1 模板的概念模板就是建立通用的模具,大大提高复用性例如生活中的模板一寸照片模板:PPT模板:模板的特点:模板不可以直接使用,它只是一个框架模板的通用并不是万能的1.2 函数模板C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板C++提供两种模板机制:函数模板和类模板1.2.1 函数模板语法函数模板作用:建立一个通用函数,其函数返回值类型和形
2021-04-22 21:19:16
225
原创 C++基础(四)————核心编程实战之职工管理系统
职工管理系统1、管理系统需求职工管理系统可以用来管理公司内所有员工的信息本教程主要利用C++来实现一个基于多态的职工管理系统公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责普通员工职责:完成经理交给的任务经理职责:完成老板交给的任务,并下发任务给员工老板职责:管理公司所有事务管理系统中需要实现的功能如下:退出管理程序:退出当前管理系统增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号显示
2021-04-22 16:36:38
223
转载 C++基础(三)————核心编程
C++核心编程本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程1.1 程序运行前 在程序编译后,生成了ex
2021-04-22 16:11:59
260
转载 C++基础(二)————基础入门实战之通讯录管理系统
通讯录管理系统1、系统需求通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人查找联系人:按照姓名查看指定联系人信息修改联系人:按照姓名重新修改指定联系人清空联系人:清空通讯录中所有信息退出通讯录:退出当前使用的通讯录2、创建项目创建项目步骤如下:
2021-04-22 16:09:20
109
转载 C++基础(一)————基础入门
C++基础入门1 C++初识1.1 第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1 创建项目 Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开!1.1.2 创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添加即可。1.1.3 编写代码#include<iostream>using namespace std;int main() { cout &
2021-04-07 10:14:15
324
原创 ubuntu 20.04安装visual studio code并配置C++编译环境
1.下载安装visual studio code我的系统是Ubuntu20.04,首先是下载安装包。进入官网,直接下载压缩包。https://code.visualstudio.com/Download下载完成后双击安装即可。2.C++运行环境配置插件的安装汉化:过于简单,直接按照教程操作:https://jingyan.baidu.com/article/7e44095377c9d12fc1e2ef5b.html3.新建项目并运行:我在主目录建了一个新的文件夹.
2021-02-24 15:45:38
4754
2
原创 Android OpenGL 从0开始搭建
后面补充,先上代码:MainActvity:public class MainActivity extends AppCompatActivity { private GLSurfaceView glSurfaceView; private ActivityManager am; private boolean rendererSet; @O...
2020-04-06 21:11:12
259
原创 linux环境下ffmpeg交叉编译android库
FFmpegFFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。FFmpeg 是一个多媒体视频处理工具,有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。由C代码编写而成,功能多,代码量大。在Android平台使用需要先编译,后使用,编译可以通过MakeFile语法来进行编译。编译流程:1. 编写build for An...
2020-02-18 20:51:19
635
原创 冒泡、选择、插入排序及其应用场景
1.冒泡排序冒泡排序是最简单的排序方法,分为内外两层for循环。外层循序代表的是总共要跑的趟数,2个数据比较一趟。3个数据比较两趟,以此类推,n个数据就跑n-1趟。内层循环是真正比价数据大小的。每次比较都会讲大的数据放到后面。代码如下: private static void bubbleSort(int datas[]) { int temp; f...
2020-01-12 22:57:54
2900
原创 巨图加载之BitmapRegionDecoder,防止OOM
先看下效果图实现原理思路就是利用BitmapRegionDecoder加载巨图的部分,不全部加载整张巨图,然后对拖动,缩放,双击等进行处理,更改BitmapRegionDecoder所需要的Rect的大小,就搞定了。代码实现在构造函数里进行初始化,创建手势识别器等 private void init() { mOptions = new Bitmap...
2019-12-29 23:34:54
693
1
原创 Bitmap之1.动态高斯模糊 2.水印添加
主要记录两件事,1.高斯模糊毛玻璃效果;2.图片水印的添加1.高斯模糊什么是高斯模糊,高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照...
2019-12-26 22:53:00
605
原创 AIDL打造双进程通讯 模拟跳转三方APK登录Demo
AIDL 意思即 Android Interface Definition Language,翻译过来就是Android接口定义语言,是用于定义服务器和客户端通信接口的一种描述语言,可以拿来生成用于IPC的代码。从某种意义上说AIDL其实是一个模板,因为在使用过程中,实际起作用的并不是AIDL文件,而是据此而生成的一个IInterface的实例代码,AIDL其实是为了避免我们重复编写代码而出现的一...
2019-12-08 23:02:05
368
原创 MVVM与DataBinding基础(下)
接着上一篇继续(https://blog.csdn.net/zb987570437/article/details/103357030)5.结合RecyclerViewData Binding 除了在 Activity 中使用之外,还可以在 ListView 和 RecyclerView 中使用。<?xml version="1.0" encoding="utf-8...
2019-12-03 23:45:40
159
原创 MVVM与DataBinding基础(上)
1 扯淡在DataBinding之前,我们不可避免地要编写大量诸如 findViewById、setText和setOnClickListener等代码。通过 Data Binding,我们可以通过声明式布局以精简的代码来绑定应用程序逻辑和布局,这样就不用编写大量的模板代码了。在DataBinding和MVVM架构的配合下,代码显得更加的简洁。MVVM和MVP相比没有太多的搭建框架代码,MV...
2019-12-02 23:10:57
227
原创 从0搭建MVP架构的简易Demo
一、扯淡MVP是在MVC架构的基础上演化来的一种架构,在MVC中Activity属于C,因此业务逻辑也都是在Activity中实现,造成Activity十分臃肿,而且使用不当容易造成内存泄漏,比如在Activity中有线程在执行耗时操作,然后点back键,销毁Activity,此时因为有线程存在,线程依然持有Activity的引用,造成Activity无法正常销毁,从而内存泄漏,MVP的主要优...
2019-12-01 00:31:28
262
原创 自定义View之网易云音乐听歌识曲水波纹动画
先上效果图点击中间的按钮后,像外发散水波纹,再次点击水波纹消失。实现原理当点击按钮后,我们隔一段时间执行一个RippleCircleView的动画,动画包括扩大和透明度,通过PropertyValuesHolder将动画封装到一起,核心就是动画的实现代码实现首先是RippleCircleView,RippleCircleView啥也不干,就画一个圆,这个圆也是水波纹的...
2019-11-21 23:57:53
1794
原创 PathMeasure实现自定义圆形ProgressBar
先上效果图实现原理其实这种不规则的动画,以及支付宝的支付成功动画,实现原理都差不多,首先就是利用Path画出完成的图案路径,然后利用PathMeasure测量出路径的长度,然后PathMeasure截取出Path的片段,再结合属性动画,截取出时间上连续的Path路径,然后绘制出path就完成了,代码很简单,主要是这种思想,可以实现各种各样的炫酷的小动画。代码实现public ...
2019-11-21 23:55:30
149
原创 使用Vlayout打造淘宝首页
先上效果图 淘宝首页是从上到下是各种不同的样式,最上面是搜索,其次是一个轮播图,再下来是10个圆角的菜单,等等,我们可以采用一个recyclerView实现,但是实现起来的复杂程度是比较高的,如果使用阿里开源的VLayout控件,实现起来则简单多了,Vlayout就适用于这种多种item的布局。官方文档 详细的介绍可以参考官网文档,中文版:https://github...
2019-11-12 22:29:35
661
2
原创 Android动画0基础学习、复习、体系化知识框架学习路线
动画一遍一遍又一遍,忘了又看,看了又忘,尤其是碎片化严重,决定整理下动画的复习流程,也方便后期自己复习,动画的学习形成体系也是在启舰大佬的自定义《Android自定义控件开发入门与实战》中形成的。现在借助大佬CSDN,整理下动画的复习流程。自定义控件三部曲之动画篇(一)——alpha、scale、translate、rotate、set的xml属性及用法https://blog.csdn.ne...
2019-11-06 00:23:52
181
原创 自定义View之SVG矢量图实现不规则图像及点击事件
先上效果图,利用SVG中国地图实现不规则图形,点击各省的不规则图像,让省份颜色变红。原理解析svg矢量图是一种体积小,放大后都不会模糊的图片格式,适用于纯色或者简单的图案,svg矢量图其实也可以看成类似xml的文件,使用文本编辑器就可以打开,svg都有一个path,类似于java中的path,我们可以利用DocumentBuilderFactory对svg进行解析,从而拿到svg的pa...
2019-10-29 23:15:49
1421
原创 RecyclerView实现顶部悬浮栏
在recyclerview的顶部固定一个悬浮栏,悬浮栏是根据当前展示的第一个item决定的,先开看效果原理原理其实很简单,我们在将recyclerView和顶部的悬浮栏放在一个FrameLayout里面,悬浮栏在recycler上一层,然后默认让悬浮栏读取position为0的位置的数据,然后监听recyclerView的滑动,当展示的第一个item改变时,我们改变悬浮栏的数值即可。...
2019-10-15 22:20:23
693
原创 刘海屏适配
基于安卓9.0对于刘海屏的适配做下简单的总结,当前前提是应用是沉浸式的体验效果,如果无需做到沉浸式的体验效果,则可忽略,因为一般情况下刘海的区域和高度刚好和系统导航栏一样高,可以不考虑刘海,本片主要整理沉浸式体验的刘海屏适配梳理。1.设置全屏代码很简单,放在setContentView之前就行,运行后导航栏不显示,然后内容区域也不会到刘海区域,没有刘海的手机默认就到屏幕顶部了,这里的模拟器...
2019-10-11 00:09:00
294
原创 屏幕适配之修改系统density(今日头条屏幕适配方案)
屏幕适配好几种,目前主流且成本最低的还是修改系统density的方案。概念像素:屏幕的最小单位,单位为px。分辨率:整个屏幕一共有多少个点,也就是像素。例如分辨率1920*1080就是指屏幕横向和纵向分别是1920和1080个像素组成。像素密度(dpi):每英寸中的像素数。假如设备分辨率为320*240,屏幕长2英寸宽1.5英寸,dpi=320/2 = 240/1.5 =160。对...
2019-09-24 22:41:29
1744
原创 自定义Inflater实现系统View自定义属性,实现小红书Parallax平行动画
效果图:实现思路整个滑动页面是个ViewPager,Viewpager中填充多个的Fragment,手指从右向左滑的时候,当前的Fragment为出去的Fragment,当前Fragment右边相邻的Fragment为进入的Fragment,平行动画其实就是进入的Fragment中的各个子View按住手指滑动的不同倍数平移的,考虑到每个Fragment的子View大多都是系统的View...
2019-09-22 23:25:01
194
原创 Android Path进阶之Path路径实现QQ拖拽气泡效果
先上效果图先将这个过程分状态(阶段): 1.静止状态,小球的默认状态,由红色的气泡和中间的文本组成; 2.连接状态(拖拽半径短),拖拽过程中由随着手指一定的气泡和中间不断缩小的小气泡组成; 3.分离状态(拖拽半径长),中间的小气泡消失,连接的中间线也消失; 4.回弹或隐藏状态,当从连接状态松手,移动的气泡会回弹到中心,从分离状态松手,移动的气泡爆炸,...
2019-09-09 21:30:57
263
原创 Android Path进阶之Path常用API
Path的使用自定义PathView继承View,在构造函数中初始化画笔和path,代码简单,如下public class PathView extends View { private Paint mPaint; private Path mPath; public PathView(Context context) { this(conte...
2019-09-08 19:55:18
492
原创 Android Canvas进阶之自定义View实现Splash的旋转、扩散聚合、水波纹特效
先上效果图动画可以分割为3阶段,第一阶段是6个小圆的旋转,第二阶段是6个小圆的扩散和收缩,第三部分是水波纹特效,动画的实现也是按照这三个阶段进行实现的。1.初始化自定义FlashView继承View,然后在构造方法中对画笔初始化,初始化2支画笔,一个是画小圆的,另一个是第三阶段画水波纹的 private void init() { setBackgro...
2019-09-07 23:57:12
493
原创 Android Canvas进阶之自定义View实现粒子爆炸效果
话不多少,先上效果图,觉得简单的请轻喷。老婆爆炸。。。哦不,是图片爆炸后是多个粒子移动,因此每个粒子都是一个对象,首先定义粒子对象,粒子是圆形的,首先是粒子的颜色,,然后是粒子的圆心坐标和粒子半径,这就已经能够确定一个粒子,然后爆炸后粒子需要有速度和加速度,上码public class Ball { public int color; //图片像素点颜色值 publi...
2019-09-07 17:28:07
595
原创 Android Canvas进阶常用API
一、canvas位置变换自定义一个TransformView继承自view,在构造方法中初始化画笔(paint):public class TransformView extends View { private Paint mPaint; public TransformView(Context context) { this(context, nu...
2019-09-05 22:38:46
349
1
原创 Android Paint 进阶之滤镜效果(ColorFilter)
上一节整理了图层混合模式(Xfermode),这一节主要整理滤镜(ColorFilter)的使用。分类 滤镜ColorFilter有三个子类,分别是LightingColorFilter、PorterDuffColorFilter和ColorMatrixColorFilter。使用1.LightingColorFilter 首先看下构造函数LightingC...
2019-09-04 22:40:44
960
原创 Android Paint 进阶之 图层混合模式(Xfermode)
上一节概述了Paint进阶需要掌握的API,这一节针对图层混合模式进行讲解,主要是Xfermode的使用。1.概念 图层混合模式是将所绘制的像素与canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,最终更新canvas中最终显示的像素值。2.使用场景 图层混合模式使用的三种场景:1.ComposeShader(混合渲染);2.画笔的Paint.se...
2019-09-04 00:06:42
3150
原创 Android Paint 进阶常用API梳理
Paint还是比较复杂的,这里只是一些常见的API举例。代码结构很简单,自定义一个GradientLayout继承自View,MainActivity的setContentView(new GradientLayout(this))。核心的API全部在GradientLayout中。1.首先是GradientLayout的构造函数,相信各位老司机一看就懂:public Gradien...
2019-09-02 23:45:26
207
原创 mm编译报错:AndroidManifest.xml', needed by 'out/target/product/RealtekATV/obj/APPS/TVTestInput_intermedi
在Android源码中mm编译tv App的时候一直报错,如下:ninja: error: 'packages/apps/TV/tests/AndroidManifest.xml', needed by 'out/target/product/RealtekATV/obj/APPS/TVTestInput_intermediates/package.apk', missing and no kno...
2018-07-05 17:27:51
5242
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人