自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

顾修忠的博客

我想要简单的生活,生活却不让我简单。

  • 博客(102)
  • 资源 (12)
  • 收藏
  • 关注

原创 Android音视频【十三】OpenSL ES介绍&基于OpenSL ES实现音频采集

人间观察勿再别人的心中修行自己,勿再自己的心中强求别人。前言最近写文章有点偷懒了,离上次写文章大概一个月了。一般Android音频的采集在java层使用AudioRecord类进行采集。但是为什么要学OpenSL呢?除了C/C++的性能优势(不过其实java的效率也不低)之外,最主要是你如果使用java层的接口,还需要通过一层JNI,比较复杂,性能消耗也大。如果用OpenSL的话就能直接在C/C++里面把事情都处理了。所以有时候为了开发更加高效的 Android 音频应用需要在底层直接进行录.

2021-06-07 10:00:14 2466 3

原创 知命不惧,日日自新

人间观察知命不惧,日日自新。今天不写技术文章,闲谈总结下2020年10月1号左右到2021年4月30号这半年的个人的一些收获和工作之余的学习和生活吧。不是矫情,不是吐槽,只为哪一天可以拿出来回忆一下。2020年国庆节之前我觉得自己一直是24岁,总以为自己还年轻,但这一刻好像都不是了。工作之余的学习文章文章输出二十四篇,其中《Android jni开发系列》十二篇,《Android音视频开发系列》十二篇,当然后续还会继续写。目前在简书和csdn,期间搞了个微信公众号,为什么玩意啊,写完md还.

2021-04-30 23:30:51 599 2

原创 Android音视频【十二】使用opensles和audiotrack进行播放pcm

人间观察年龄到了,有些事就妥协了,这个世界上没有人可以随心所欲,生活会逼着你选择答案……最困难的是你什么都改变不了……介绍播放pcm的两种方式本节我们学习下如何播放pcm数据,在Android中有两种方法:一种是使用java层的AudioTrack方法,一种是使用底层的OpenSLES直接在jni层调用系统的OpenSLES的c方法实现。使用场景两种使用场景不一样:AudioTrack 一般用于 比如本地播放一个pcm文件/流,又或者播放解码后的音频的pcm流,API较简单。OpenSL

2021-04-24 14:22:58 1907 1

原创 Android音视频【十一】视频混音

人间观察其实人这一辈子 真的遇不到几个真心对你好爱你的人 如果有幸能牵手 那就别并肩 好好的 别老是冷冰冰 说反话简介短视频的编辑功能有很多,比如:添加背景音乐,剪切,拼接视频/音频,特效,贴纸等等。本文介绍为MP4视频增加背景音乐(或者控制视频原始的音量大小),其中涉及到音视频的解码,视频和音频的指定时长的提取,音频视频的分离,混合视频音频生成mp4,音频混音,音量调节以及一些音频处理细节和注意的地方等技术。采用的是Android的硬编解码MediaCodec+ MediaExtractor+

2021-03-28 00:28:28 897

原创 android音视频【十】音频mp3剪切

人间观察为了等你,我错过了等我的人。介绍Android中在一些短视频的制作app软件上,会有给视频增加背景音乐的功能,而背景音乐/歌曲(一般是mp3)是从服务器上下载后,然后本地解码,往往用户会选择一首歌曲的部分的时间段。所以实现方案就是:下载mp3->解码部分mp3为pcm->其它操作(比如文件,pcm处理)。所以此篇主要介绍解码部分的mp3为pcm,可以理解为mp3的剪切。后续会介绍如何给视频增加背景音&视频的剪切等上篇介绍过mp3的解码,这里主要介绍的是对其进行部分.

2021-03-07 15:36:55 2082 5

原创 android音视频【九】音频硬编解码pcm&aac&wav

人间观察时间的流逝总是悄无声息的这篇看下音频的硬编解码(MediaCodec),主要内容包含AudioRecord采集pcm硬编码为aacmp3硬解码为pcmpcm转为wav格式为什么介绍这些呢? 因为在直播中音频基本上都是aac格式的,在短视频中比如:添加背景音进行混音,替换背景音乐,视频文件提取音频,剪切音频,插入音频等等都会涉及。所以比较重要,当然也有软编码,后续介绍。因工作中用不到kotlin,示例代码我采用kotlin进行,顺便练习下AudioRecord采集pcm硬编.

2021-02-14 20:15:33 3290

原创 Android音视频【八】音频基础

人间观察今年应该不回家过年了,长这么大还真是一个人第一次在外过年,前些文章讲了视频,我们开始音频。音频的基础概念开始介绍前,先看一个声音的波形图:横轴是时间,纵轴为振幅,两个图像分别代表左右声道。由于声音频率较大,所以在图像中的信号不是“正弦”,而是实心的。声音是一种波声音是一种压力波,当敲击键盘或者撞击物体时,它们的震动会引起空气的震动,使空气产生疏密变化,由此就形成了一种声波。声波的三要素声波的三要素是频率、振幅、和波形,频率代表音阶的高低,振幅代表响度,波形代表音色。频率.

2021-01-31 13:53:14 573 1

原创 Android音视频【七】H265硬编解码&视频通话

人间观察我该如何去表达呢前面介绍了H265的一些知识,本篇实现利用camera采集进行H265硬编码,利用WebSocket来传输H265裸流,接收到H265的码流后进行H265解码渲染到surfaceview上,从而实现简易的视频通话。主要有:摄像头如何处理,如何拿到摄像头的yuv数据,yuv数据怎么处理,实现Android H265硬编码和硬解码,vps,sps,pps怎么处理以及如何在网络上传输。1 .这里用哪种协议不是本文的重点,本文采用java封装好websocket协议的组件,在真.

2021-01-26 09:43:26 3868 1

原创 Android音视频【六】视频数据存储方式YUV

人间观察这个社会很浮躁,千万不要考验人性在视频中的数据保存和传输都是YUV数据格式。主要是为了降低数据大小,如果用argb格式的数据,1px可能需要4个字节,而用YUV可能就需要1.5个字节。YUV简介与RGB类似,YUV也是一种颜色编码方法,主要用于视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,比如这样的设计解决了彩色电视机与黑白电视的兼容问题。YUV,分为三个分量,“Y”表示的是明亮度(Luminance或Luma),也就是灰度值;.

2021-01-08 23:23:31 681 1

原创 Android音视频【五】H265/HEVC&码流结构

人间观察我好像还什么都没有准备好,就到了而立之年的年纪,不是吃一个糖就能开心的年纪了。前面我们了解了H264/AVC的一些知识。今天我们看H265 , 只有了解了这些基础的,什么协议(flv等)啦,什么封装格式(mp4等)啦,网络传输啦等都是很有帮助的。背景知识H265 又被叫做HEVC(全称叫做 Hight Efficiency Video Coding,高效率视频编码),它同H264一样也是ITU-T和ISO两个组织共同制定的视频压缩标准,是H264/AVC标准的继承者。H265/HEVC.

2021-01-02 16:21:10 3564 2

原创 Android音视频【四】H264硬编码

人间观察你什么时候觉得自己好孤独这篇我们介绍如何在Android中实现硬编码为H264,用camera或者其它数据来源也行,我们先不用camera,camera还是蛮复杂的(比如前后置摄像头预览,yuv数据转换,camera2等等)。本篇采用录屏(录制手机屏幕)然后编码h264到文件。如果你看了上篇文章了解了硬编码和h264,这篇就很简单了。代码用kotlin实现,学kotlin中,练练手。。。录屏Android中的录屏功能是在Android 5.0 API 21 上新增的,不需要roo.

2020-12-30 19:58:12 4870 9

原创 Android音视频【三】硬解码播放H264

人间观察穷人家的孩子真的是在社会上瞎混遥远的2020年马上就过去了,天呐!!!前两篇介绍了下H264的知识和码流结构,本篇就拿上篇从抖音/快手抽离的h264文件实现在Android中进行解码播放&以及介绍所涉及的知识。本文代码用kotlin来写,最近在学习ing,加油吧,打工人,你要悄悄打工。视频效果文章搞不了视频,贴个图吧。软硬编解码在介绍前我们需要知道什么是软硬编解码?1.软编解码:是利用软件本身或者说是使用CPU对原视频进行编解码的方式。优点:兼容性好。缺点:C.

2020-12-26 13:31:15 5590 5

原创 Android音视频【二】 H264码流结构

人间观察因为穷,人会放弃体面: 个人形象的体面,工作的体面,社交的体面,尊严的体面。在分析H.264码流前,我们得得先获取一个H.264的码流,两种方法获取:一是自己写个代码编码为h264的码流(后续介绍),二是是直接从视频文件里抽取。我们这里采用方法二。当然也有其它方法。快手抖音的短视频/直播,毫无疑问采取的编码方式肯定是H.264和AAC生成的MP4封装格式的视频,我们下载一个mp4(可以看一下文件的简介中的编解码器是否是H.264,AAC),用如下ffmpeg命令抽取h264和aac://.

2020-12-19 13:05:00 2321 3

原创 Android音视频【一】H264编码基础

音视频编码解码就是指通过特定的压缩/解压技术,将某个音视频格式的数据转换为另一种音视频格式数据。目前在Android中的音视频用的最多的就是H264+aac的方式进行编码和解码,其实不止Android,H264在整个音视频领域都是使用最广泛的编码方式。H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输。当然还有比H264更好的H265编码,H265是基于H264优化的。1.H264标准的演进国际上主流制定视频编解码技术的组织有两个,一个是国际电联(ITU-T),它制定的标准有H.261

2020-12-12 15:48:10 4062 8

原创 Android-JNI开发系列《十二》总结JNI知识体系

人间观察人啊不能读太多的书不能用圣人的话看这个世道不然会看走了眼本篇对jni知识体系的进行总结,本来是写完Android平台下的对mp3编解码后总结的,但是我想了下mp3编解码后续单独文章介绍会更好。大家平时可能都有一种体验,就是接受的知识都是被动的,经常是被看公众号,文章,视频,但都很杂且不成体系,看了就忘。或者压根就没有太多时间特别是工作996大小周的,导致自己完全被日常业务代码所困而没有太多的技术体系和深度和新技术的学习了解。所以我们要建立自己的知识体系才行,所谓知识体系就是给你一个.

2020-12-03 17:52:42 224

原创 Android-JNI开发系列《十一》实践-利用Android C源码实现GIF图片的播放

人间观察人往往都是多面性的,一个人的时候是一个样子,一群人的时候是另一个样子。声明此篇文章只为记录和学习JNI以及了解GIF的解码原理。借鉴了网上的有关gif文章介绍和代码。如果是自己学习,建议自己边敲一遍jni的代码,不要眼高手低。建议如果在项目中使用实现GIF的播放的功能,建议java版本glide的解码GIF或者c版本的https://github.com/koral–/android-gif-drawable为什么呢? 因为我测试了下多个gif文件用glide或者android-g.

2020-11-27 23:05:58 2399 2

原创 Android-JNI开发系列《十》实践利用libjpeg-turbo完美压缩图片不失真

人间观察步入社会后,你会发现,老人说的话都是对的。前面讲了些Android的jni知识和bitmap的实践,接下来几篇应该都是Android中jni的一些实践。这篇我们对Android中图片在jni层利用libjpeg-turbo进行大小压缩,并且压缩后不失真,清晰度和原图基本无差别。背景libjpeg开源的JPEG图像库,它使用非常广泛,Android也依赖libjpeg来压缩图片,但是Android不是直接使用libjpeg,而是基于一个叫Skia的开源项目来作为的图像处理引擎,Skia对l.

2020-11-21 10:18:14 3575 7

原创 Android-JNI开发系列《九》实战-Bitmap处理实现底片灰度化黑白化暖冷色调等效果

人间观察当你喜欢一个人的时候,总是小心翼翼的,笨笨的,傻傻的,生怕做错了什么,又怕不做什么~到此,Android中基本的JNI基础知识以及常见的基本操作差不多就基本讲完了。我们来实践一下,本文实现的是对Android Bitmap的处理: 对一张图片进行处理,照片底片效果,黑白化,灰度化,左右翻转,暖色,冷色,高斯模糊等等,市场上有很多这种处理图片的app,就看谁的算法足够厉害强大。效果图如下在Android中JNI层操作bitmap的需要链接系统的动态库nigraphics 图像库.

2020-11-07 16:49:32 698

原创 Android-JNI开发系列《八》CMakeLists.txt语法&使用

人间观察你说命重要还是钱重要,如果想不明白,去趟医院吧!技术在永远在不断的更新升级,Android也一样。目前在Android中的JNI开发都是采用的CMake进行编译c,c++代码构建项目,早期都是Android.mk、Application.mk文件来构建项目的。那CMake是啥呢?简单的说它是一个跨平台的编译工具,它可以用简单的配置文件就可以生成编译的中间产物(Makefile 或者 project 文件),然后用make生成可执行的文件。CMake官网地址 CMake官网在Andro.

2020-11-01 16:45:42 1436

原创 Android-JNI开发系列《七》补充jni与java的数据类型的对应关系和数据类型描述符

人间观察人只有不为生存而烦恼的时候,才会追求真正想要的东西。在前面的几篇文章中有涉及到Java和JNI的通信,比如异常回调,Java和JNI的互相调用等。其中都免不了在通信过程中需要知道Java基本数据类型,引用类型和JNI的对应关系以及基本数据类型,引用类型的类型描述符,才能够通信和使用。这个是很重要的,是基础,有必要单独来记录下。在 JNI 开发中,Java 的数据类型并不是直接在 JNI 里使用的,例如 int 就在JNI中是使用 jint 来表示的。数据类型对应基本数据类型:Jav.

2020-10-30 19:56:08 349 2

原创 Android-JNI开发系列《六》jni与java的交互

人间观察1024-程序员节愿各位程序员历尽千帆,归来仍是少年。这片文章本来不打算写的,因为在前面的文章多多少少的提到了jni和java的交互,但是为了让知识体系更健全写,还是梳理下,算是jni和java的在交互上的一个总结吧。两者的交互归纳起来主要就是两种。java调用jni。比如:传递基本数据,复杂对象等jni调用java。比如回调,异常,调用java方法/成员变量,构造java对象等等java调用jni-传到复杂对象到jni中我们新建一个java的对象,然后传递到jni中,在jn.

2020-10-24 14:43:55 1258 4

原创 Android-JNI开发系列《五》局部引用&全局引用&全局弱引用&缓存策略

人间观察好像什么都来得及,又好像什么都来不及。本篇文章主要介绍在jni开发中常见的三种引用的使用方法和注意事项以及jni和java交互的缓存策略。我们知道Java是一门纯面象对象的语言,除了基本数据类型外,其它任何类型所创建的对象的内存都存在堆空间中。内存由JVM 的GC(Garbage Collection)垃圾回收进行管理。但是对于c,c++中以及用c/c++编写的jni来说同样需要手动管理和处理内存,特别是引用类型的对象。malloc,realloc,free ,delete ,不像jav.

2020-10-17 17:03:15 2143 6

原创 Android-JNI开发系列《四》Native-Crash定位

人间观察你有多久没有十点之前睡过觉了。假期ing~~~在Android中进行JNI的开发的当然也会发生crash,而发生crash后比较难定位。因为jni是使用C/C++来进行开发的,熟悉C/C++语言的同学都知道,指针和内存申请的使用时需要自己申请和释放的,它不像java那样有jvm有垃圾回收管理机制gc,稍微管理不当就会导致问题。比如:内存地址访问错误、堆栈溢出、指针使用错误等等,最后都会导致程序崩溃。幸好Android NDK提供了一些工具来帮助精确定位到出问题的代码。我们模拟一下cr.

2020-10-10 09:50:46 1170

原创 Android-JNI开发系列《三》-异常处理

人间观察做个俗人,得之坦然,失之淡然,顺其自然吧!假期ing,~~~今天我们讲Android JNI下的异常处理,在java中有异常处理机制,在jni中也一样。回顾java异常我们知道在java中分为运行期异常和编译期异常。运行期异常时是程序在执行期间发生的异常,如果没有捕获可能导致程序不正常(轻者可能功能不正常,重则程序直接crash )。编译期异常是代码编译期间必须显示捕获的异常。throws Exception {} ,try{} catch{} finally{}今天我们不讲这.

2020-10-03 11:28:47 831 1

原创 Android-JNI开发系列《二》-在jni层的线程中回调到java层

人间观察忽有故人心上头,回首山河已是秋。马上国庆+中秋了。万千的风景也比不上回家的美丽~~~今天我们看一个比较常见的场景:在java中处理一个高含量机密的代码/处理较复杂/耗时的数据(比如bitmap的特效处理),这时候就需要用c/c++实现。当在c/c++处理完后需要异步回调/通知到java中,这样代码看起来才很优雅有气质。如果你知道这个知识那就return吧。~~在Android中你可以用Thread+Handler很容易的来实现,我相信你闭着眼都能写了。但在jni层中不是这么简单的,我.

2020-09-26 11:15:00 2279

原创 Android-JNI开发系列《一》-动态库的函数注册

JNI-动态库的函数注册时光荏苒,距离上次的文章已经3年多了。那这3年干啥了呢?平凡生活,在人间凑数。来吧,展示!show me you code在Linux平台下so库分为动态库和静态库。表现形式以.so为后缀动态库和.a为后缀的静态库。关于这2个的有关知识这里不过多介绍,不是我们今天的重点。在动态库里函数注册分为2种:静态注册和动态注册。静态注册静态注册,你工作如果是与jni打交道。我们平时写的,写一个jni方法和它对应的头文件(方法名,参数进行对应)。调用的时候,这个调用的过程就是静态注册

2020-09-22 13:59:15 404

原创 Android面试总结

Android面试总结前提时间过的真是快啊,到16年底毕业马上就快3.5年了。先来说下我的经历吧, 毕业后进入一家小公司,因为农村出身当时没有多想就是希望在北京有一份工作。就找了一家面试就成功了。当时就是希望技术能够很快的提升钱多钱少真的不重要,没有太多的想法。当时老板说期望多少月薪我就说了3k(税前),每月所剩无几啊!没想到到年底公司倒闭了。当时老板好像是华为的销售出来创业的,感觉创业的钱都花在

2017-05-14 16:27:04 4531 2

原创 Android视频点播-边播边缓存-方案

Android视频点播-边播边缓存-方案简述一些知名的视频app客户端(优酷,爱奇艺)播放视频的时候都有一些缓存进度(二级进度缓存),qq,微信有关的小视频,还有一些短视频app,都有边播边缓的处理。还有就是当文件缓存完毕了再次播放的话就不再请求网络了直接播放本地文件了。既节省了流程又提高了加载速度。 今天我们就是来研究讨论实现这个边播边缓存的框架,因为它不和任何的业务逻辑耦合。开源的项目目前比较

2017-05-08 19:24:49 23993 6

原创 android高仿微信视频编辑页-视频多张图片提取

android高仿微信视频编辑页-视频多张图片提取上一篇中介绍了有关视频提取图片的知识点,如果对这个不太了解 建议看下android提取视频多张图片和视频信息之前这篇. 这里实现的是仿微信的视频编辑页面,主要是播放视频和显示该视频的一系列图片,可以滑动图片的列表,视频也跟着动(seekto),然后可以拖动滑块实现视频的seekto。最后会进行视频的剪切操作,就是剪切2个滑块之前的区域,视频重复播放

2017-04-15 23:02:39 12803 12

原创 android提取视频多张图片和视频信息

android提取视频多张图片和视频信息(一)话说2016年的直播比较火,2017年短视频又火了。但对于开发者来说隐藏在这背后的技术才是我们所关心的,毕竟我们是靠技术吃饭的。 现在在安卓中多媒体服务比较强大,而与视频有关的视频基本处理技术有必要学习一下。我前段时间也在做有关视频的一些需求,当然也涉及本文的标题内容。 经测试和研究发现在android中提取视频图片的方法只有MediaMetadat

2017-04-04 23:03:15 12406 14

原创 android 内存泄漏总结

android 内存泄漏总结前言内存泄漏很危险。轻则卡顿,重则oom。 这种东西写代码的时候注意一下就能避免90%的内存泄漏, 只要写代码的时候遇到想一下你就可以避免了,免得后面为了找内存泄漏各种排查,得不尝试!! 最后会总结一下常见的内存泄漏。导致内存泄漏的原因总结来说就是: 本该被jvm回收的生命周期短对象却被生命生命周期长的对象直接或间接的所持有导致短对象无法释放。有种藕断丝连的感觉,

2017-04-04 12:36:56 1763 1

原创 浅析HandlerThread

浅析HandlerThread背景首先呢?HandlerThread面试的时候有的会问,但是面试官不直接问你是否知道HandlerThread以及用途和实现?面试官会问你:面试必问的一个题目: handler的消息机制等一系列问题,如果你说的还算可以,那么问题来了? 接下来会问你假如在一个子线程(工作线程)中怎么使用handler?嘻嘻 ,如果你知道handler的消息机制,那么这个问题很好回答

2017-02-16 21:22:29 4081

原创 深入理解ButterKnife源码并掌握原理(五)

前面四篇是自己参考有关知识和分析ButterKnife源码后些的,如果有不对的地方,还望指导下。 这一篇是实践篇。我们的目的是学会原理来变为自己的知识。 这个demo所使用的原理就是ButterKnife的原理支持的注解实现BindView,OnClick(多id),BindLayout BindLayout注解为:@Retention(RetentionPolicy.CLASS)@Ta

2016-09-10 22:35:53 2797 1

原创 深入理解ButterKnife源码并掌握原理(四)

到此我们整个的流程算分析完了。 最后我们看下对外提供的APIbind 方法那么还差一步,什么时候都要我们生成的java文件呢?答案是: ButterKnife.bind(this);方法。 我们看一下ButterKnife对外提供的API /** * BindView annotated fields and methods in the specified {@link

2016-09-10 22:33:57 3667 1

原创 深入理解ButterKnife源码并掌握原理(三)

上两篇我们分析完了处理器的process方法的findAndParseTargets方法来获取了一个集合,该集合包含了你使用注解的类的TypeElement和这个类中的注解的实例BindingClass。 我们再看下处理器的核心方法 process方法 @Override public boolean process(Set<? extends TypeElement> elements, Rou

2016-09-10 22:26:46 5963

原创 深入理解ButterKnife源码并掌握原理(二)

好,我们接着parseBindView的步骤3 ,忘记了在哪里了,咦。 可以看下上一篇,哈哈。 步骤3 BindingClass bindingClass = targetClassMap.get(enclosingElement); if (bindingClass != null) { ViewBindings viewBindings = bindingClas

2016-09-10 22:20:50 7999

原创 深入理解ButterKnife源码并掌握原理(一)

前言话说在android这座大山里,有一座庙(方块公司-square),庙里住着一个神-jake(我是这么叫的嘻嘻)。 不要小看这个小jake,这个神可是为android应用开发们提供了强有力的帮助。比如流行的开源库okhttp,eventbus系列 ,retrofit,butterknife 等等都是出于他之手。小弟佩服的不要不要的…,可以说是为android的应用开发效率和耦合性提高了一个台阶

2016-09-10 22:06:13 19201 7

原创 android 自定义view 水波纹进度球

如果你是老司机,一看标题就会就return吧,嘻嘻。 在我们的日常开发中自定义控件还是用的挺多的,设计师或者产品为了更好的漂亮,美观,交互都会做一些牛逼的ui效果图,但是最后实现的还是我们程序员啊。 所以说 自定义view你还是得会的。 要开车了哦,请刷卡… 滴,老司机卡 滴,学生卡 滴,… 今天我们要实现的没有太多交互性的view,所以就继承view。 自定义view的套路,套

2016-08-18 23:11:14 7257 5

原创 android多Modle统一配置Gradle

android多Modle统一配置Gradle目前as使用gradle来配置项目工程,一般的项目为了模块话或者结构的清晰。 都会或多或少的使用多library(model)的方式。 so,问题来了。。。我想升级下项目的支持的最小版本,编译版本等(下面的代码),要改很多处,怎么办呢? compileSdkVersion 23 buildToolsVersion "23.0.2" de

2016-08-12 19:18:44 5716

原创 RecycleView的左滑实现

RecycleView的左滑实现最终的效果图是这样的 要实现这样的一个效果,用到的关键技术: 自定义view的基本知识+事件处理+其它知识一.右边的操作view1.数据的组装我们可以把右边的操作选项抽象出来数据对象即可,对于老司机的你们一看就懂。public class SwipeMenuItem { private static final int TITLE_SIZE = 2

2016-07-14 14:30:38 9873 24

Android高级模糊技术

Android高级模糊技术,图片模糊处理,修复了github上有些手机崩溃的问题 并增加了一个处理整个图片的Fragment

2015-05-02

Android-导航栏特效-文字缩放-颜色渐变

Android-导航栏特效-文字缩放-颜色渐变 比今日头条,网易效果效果还要多

2015-03-29

android音乐播放器V2.0

1.优化列表的显示,提高运行效率。 2.修改来去电机制,解决了来电bug。 3.增加桌面歌词显示和滚动的功能。 4.优化和美化程序启动界面。 5.修复一些其它小bug。

2013-06-26

文件管理器 Android文件管理器

该软件是一个文件管理器,它能帮助你更好的管理手机上的文件。 1.实现了对文件或文件夹的创建,重命名,删除,复制,移动等功能。 2.长按列表项弹出包含重命名,移动,复制,详细信息等列表项的对话框。 3.按Menu键显示新建文件或文件夹,退出,刷新,帮助信息等。 4.可以点击任何文件来用相应的软件来启动。比如:点击歌曲自动到音乐播放器中播放 点击图片自动到图片浏览器中浏览等。当然你可以自行选择。 5.显示当前的各种目录。 5.界面清新自然美观。

2013-05-17

Android音乐播放器

时尚,新潮,不可少的Android音乐播放器 1.该音乐播放器有关图片来源于网络,如有侵权,将做修改 2.该音乐播放器实现了播放器的基本功能. 3.该音乐播放器实现了甩歌功能,将手机摇一摇即可换歌. 4.该音乐播放器实现了歌词同步功能. 5.该音乐播放器实现了来电话自动暂停播放,通话结束自动播放功能. 6.该音乐播放器实现了歌词字体颜色大小控制的功能. 7.界面清新时尚,其它一些功能.... 8.该音乐播放器可能会有Bug以后会修正更新. --------没有最好,只有更好!

2013-04-08

二叉树的链式存储结构-二叉链表

数据结构-二叉树的基本操作。 二叉树的链式存储结构-二叉链表 各种操作都有。 二叉树使用链表能避免顺序储存浪费空间的问题,算法和结构相对简单。

2012-11-09

SQlite Android SQLite的应用 简易的学生成绩管理系统

SQlite Android SQLite的应用 简易的学生成绩管理系统 1.用到类似表单的界面。界面美观清晰。 2.搭建ListView WIdget组件。单击列表项即可对其删除修改。 3.实现了对学生信息的增,删,改,查。

2012-07-20

Android 数据库 SQlite 范例 SQLiteOpenHelper

对Android数据库SQlite的基本操作,打开或新建数据库,增,删,改,查。 SQLiteOpenHelper类的运用。 ListView的运用和适配器的使用。 Menu键的使用。

2012-07-20

Linux系统高级编程实例详解

1.这本书中详细介绍了Linux高级编程的知识,并且伴有很多的例题。 对于初学者和在学者会很有帮助。 2.这本书市团队编写,因此每个章节会很详细的介绍。 3.如有任何问题请联系书中的作者。

2012-06-12

Linux聊天程序源代码 基于socket的TCP聊天程序

暂时实现的功能有: 1.群聊 2.私聊 3.登陆验证 4.注册 5.所用的在线用户 6.退出 7.管理员踢出某用户 8.管理员禁止某用户聊天 9.管理员提升某用户为管理员 10.管理员把某用户降为普通用户

2012-05-23

27世纪人工智能系统

java 自己在网上看到的一张动态图片,觉得很有意思。就把它用代码实现了 自己觉得写得不错 用到的知识有: 增加系统托盘函数 线程和文件读取,各种布局组件的灵活使用等 大家顶一下啊

2012-04-13

Android记忆卡片源代码

此游戏的目标是在有限的时间内找到完全相同的图片; 翻转一个图块以显示该图片,然后尝试找到其配对; 该款游戏代码实现了卡片翻动的动画效果,非常好听的背景音乐,点击音乐,音乐在每关中可开,中途可以选择退出游戏或程序开始或暂停游戏, 记录所得分数,时间限制,显示当前所得分数,显示排名和所有的记录等各种功能; 每关随机改变背景,卡片等不一样的等功能;给用户不一样的视觉冲击。

2012-04-11

空空如也

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

TA关注的人

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