自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

疾风剑豪

当一种爱好,变成一种习惯

  • 博客(18)
  • 资源 (42)
  • 收藏
  • 关注

原创 Android Region代码分析

一、Region的定义和合法性检查在Android系统中,定义了Region的概念,它代表屏幕上的一个区域,它是由一个或多个Rect组成的,代码位于frameworks/native/libs/ui/Region.cpp。而Rect则代表屏幕上的一个方形区域,这个区域可能是不可见的,部分可见或者完全不可见的。从代码实现的角度来看Region的实现,它拥有一个私有的数据成员变量:mStorage,它的类型为Vector<Rect>:1.mStorage是一个有序数组,数组元素类型为Rec.

2020-07-31 11:35:42 557

原创 Android JNI 通过C++调用JAVA

1. JNIEnv对象 对于本地函数 JNIEXPORT void JNICALL Java_video1_TestNative_sayHello(JNIEnv * env, jobject obj) { cout<<"Hello Native Test !"<<endl; } JNIEnv类型代表Java环境。通过这个JNIEnv*指针,就可以对Java端的代码进行操作。如,创建Java类得对象...

2020-07-30 20:40:39 255

原创 Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析

从前面Android应用程序窗口(Activity)的绘图表面(Surface)的创建过程分析一文还可以知道,每一个Java层的Surface对象内部都有一块画布,这块画布是通过它的成员变量mCanvas所指向的一个Java层的CompatibleCanvas对象来描述的。so是一个类型为so_t的结构体,它的成员变量canvas描述的是Java层的Surface类的成员变量mCanva在类中的偏移量,因此,通过这个偏移量就可以获得参数clazz所指向的一个Java层的Surface...

2020-07-29 13:16:07 547

原创 Android应用程序窗口(Activity)的绘图表面(Surface)的创建过程分析

ndroid应用程序窗口(Activity)的绘图表面(Surface)的创建过程分析

2020-07-27 21:36:22 670

原创 Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析

Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析

2020-07-26 15:18:31 390

原创 Android应用程序窗口(Activity,Window,View)原理解析

Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析ActivityThreadpublic final class ActivityThread { private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) { activity = mInstrumentation.newActivity( ...

2020-07-23 22:02:34 516

原创 Dalvik虚拟机源码初探

Dalvik虚拟机JNI方法的注册过程分析这些Bridage函数实际上仍然不是直接调用地调用JNI方法的,这是因为Dalvik虚拟机是可以运行在各种不同的平台之上,而每一种平台可能都定义有自己的一套函数调用规范,也就是所谓的ABI(Application Binary Interface),这是一个API(Application Programming Interface)不同的概念。ABI是在二进制级别上定义的一套函数调用规范,例如参数是通过寄存器来传递还是堆栈来传递,而API定义是一个应

2020-07-22 20:59:51 454

原创 hashmap ArrayList LinkedHashMap等原理解析

android的hashmap 原理以及源码探究Android基础-Android中的HashMap浅析

2020-07-20 21:29:27 211

原创 热修复插件化原理分析

插件化原理分析插件化要解决的三个核心问题:类加载、资源加载、组件生命周期管理。类加载:Android中常用的两种类加载器:PathClassLoader和DexClassLoader,它们都继承于BaseDexClassLoader。DexClassLoader的构造函数比PathClassLoader多了一个,optimizedDirectory参数,这个是用来指定dex的优化产物odex的路径,在源码注释中,指出这个参数从API 26后就弃用了。PathClassLoader主要用来加载系统类和

2020-07-15 22:50:10 283

原创 RecyclerView动画源码浅析

RecyclerView动画源码浅析adapter.notifyItemRemoved(1)会回调到 RecyclerViewDataObserver:adapter.notifyItemRemoved RecyclerViewDataObserveronItemRangeRemovedtriggerUpdateProcessormAdapterUpdateDuringMeasureconsumePendingUpdateOperationsdispatchLay...

2020-07-14 22:16:41 240

原创 Android RecyclerView 局部刷新分析

@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) { dispatchLayout(); mFirstLayoutComplete = true;} //2.mInPreLayout 设置为 true 后面有用 mState.mInPreLayout = mState.mRunPredictiveAnimations; //5.保存动画信息相关 ...

2020-07-13 22:24:15 618

原创 属性动画特性,Interpolator,TypeEvaluator ,LinearLayout、RelativeLayout,SharedPreferences原理总结

PropertyValuesHolder void setupSetter(Class targetClass) { Class<?> propertyType = mConverter == null ? mValueType : mConverter.getTargetType(); mSetter = setupSetterOrGetter(targetClass, sSetterPropertyMap, "set", propertyType);...

2020-07-08 09:50:25 204

原创 Binder之Service Manager在探(二)

root@android-virtual-machine:/home/android# cd /root@android-virtual-machine:/# find ./ -name 'binder.c'./work/android-5.0.2/frameworks/native/cmds/servicemanager/binder.c./work/linux-3.0.86/drivers/staging/android/binder.croot@android-virtual-...

2020-07-06 23:18:00 139

原创 JetPack学习总结

JetPackNavigation 之Fragment跳转NavController controller = Navigation.findNavController(v);controller.navigate(R.id.action_testHomeFragment_to_testDetailFragment);Navigation graph中直接设置转换动画,极大减少了工作量。当然如果对自带动画效果不满意,也可以创建Animation资源自己编写xml文件来...

2020-07-06 21:03:33 533

原创 四大组件原理在探

四大组件是什么Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver。四大组件的生命周期和简单用法activity:onCreate() -> onStart() -> onResume() -> onPause() ->onStop() -> onDetroy()Service:service 启动方式有两种,一种是通过startService()方式进行启动,另一种是通..

2020-07-03 13:27:25 351

原创 ANR,OOM,memory leak

ANR产生的原因是什么?ANR即Application Not Responding,顾名思义就是应用程序无响应。在Android中,一般情况下,四大组件均是工作在主线程中的,Android中的Activity Manager和Window Manager会随时监控应用程序的响应情况,如果因为一些耗时操作(网络请求或者IO操作)造成主线程阻塞一定时间(例如造成5s内不能响应用户事件或者BroadcastReceiver的onReceive方法执行时间超过10s),那么系统就会显示ANR对话框提示用户对

2020-07-03 13:24:20 289

原创 RecycledView源码解析

RecyclerView LayoutManager Adapter,ViewHolder,ItemDecoration这些和RecycleView使用息息相关的类到底是什么关系ItemDecoration这些和RecycleView使用息息相关的类到底是什么关系onMeasureonLayout sMinWidthField = View.class.getDeclaredField("mMinWidth"); chooseSiz...

2020-07-02 13:32:26 178

原创 Binder系统初探(一)

虽说阅读Binder的源代码是学习Binder机制的最好的方式,但是也绝不能打无准备之仗,因为Binder的相关源代码是比较枯燥无味而且比较难以理解的,如果能够辅予一些理论知识,那就更好了。闲话少说,网上关于Binder机制的资料还是不少的,这里就不想再详细写一遍了,强烈推荐下面两篇文章:Android深入浅出之Binder机制Android Binder设计与实现 – 设计篇...

2020-07-01 11:55:00 465

尚硅谷Android高级开发技术之JNI和NDK开发

这算是尚硅谷培训学校推出的Android视频教程的高级教程了吧,而本套教程正是在Android开发中的核心重点开发技术(JNI/NDK),我们知道,Android的底层是Linux且Java的性能并不如C/C++好,所以在开发一些需要超高性能的App的时候就需要通过JNI来直接调用Android底层框架所提供的方法了(比如说手机游戏开发或者和系统底层紧密结合的功能开发),本教程照顾了不会C/C++的同学,会讲一些C/C++的基本知识,是一个JNI/NDK开发不可多得的教程。

2018-09-19

基于MVP-Clean + Weex + RxJava2 + Retrofit + Dagger2 + MTRVA的综合应用

项目介绍: 架构采用MVP-Clean,项目简洁、易维护、易测试、高内聚、低耦合 UI风格采用Material Design,清新、简洁和直观 跨端采用Weex,涉及weex页面、自定义Module、自定义Component、自定义Adapter、与原生webview同步(支持返回键拦截) RxJava的操作符巧妙运用 Dagger2与Butterknife实现依赖注解,解耦,方便测试等 Retrofit和Okhttp实现网络架构,实现多种扩展,例如常见的日志规范打印,不用抓包以及缓存配置等等 Glide实现图片加载,配合GlideTransformations实现多种变换,如圆角、遮罩等 MTRVA轻松处理RecyclerViewAdapter的数据,实现多列表效果更佳 大量自定义控件,如Camera、Matrix、贝塞尔曲线、高斯模糊、Behavior、事件拦截、沉浸式、QQ侧滑菜单等等运用 大量动画,如lottie、补间动画、3D动画、属性动画(ObjectAnimator、ValueAnimator、View.animate和PropertyValuesHolder)和转场动画(自定义Transition)运用 视频列表滑动支持小窗口播放,本地保存 支持图片预览、编辑(如裁剪、压缩)和保存本地 支持下载机制,通知栏回显(兼容8.0),下载完成可打开 支持扫码,扫码支持访问链接和下载,界面仿微信,支持本地图片扫码 支持在线更新、在线反馈和Crash监控 webview支持x5及常见用法,例如缓存、预加载、内存优化、增量更新、并行加载、下载等

2018-09-18

android 断点续传(绝壁好用,这个demo我直接添加到项目中了,大文件下载不用担心断网和网络切换)

android 断点续传(绝壁好用,这个demo我直接添加到项目中了,大文件下载不用担心断网和网络切换)。有网就下载,没网停会等会有网继续下载。

2018-09-07

高仿IOS 高仿iOS滚轮实现城市选择器

高仿iOS滚轮实现城市选择器,高仿iOS滚轮实现城市选择器,高仿iOS滚轮实现城市选择器。

2018-07-26

完美得解决listview和edittext抢夺焦点和数据混乱问题

完美得解决listview和edittext抢夺焦点和数据混乱问题

2018-07-22

2018718(最新eclipse 下android开发工具包),集成了sdk,SDKManager,eclipse都是配套的,我一直再用它开发

2018718(最新eclipse 下android开发工具包),集成了sdk,SDKManager,eclipse都是配套的,我一直再用它开发 adt-bundle-windows-x86_64(最新链接,请到我的百度网盘下载: 链接:https://pan.baidu.com/s/1tnUk9IXC7RoSMaxHeWOhIA 密码:j47v)

2018-07-18

视频监控demo

值得学习的视频监控,实时获取,高清,标清,截图,回放

2018-07-09

android在原生代码中使用POSIX通信面向连接的TCP客户端和服务端。

android在原生代码中使用POSIX通信面向连接的TCP客户端和服务端。 android jni下的c++开发,

2018-06-08

android studio cmake android ndk-jni动态库开发

android studio cmake android ndk-jni动态库开发,这个可以在cmake下链接生成多个so库

2018-06-04

android pm2.5分割线自定义横线view(非浸入式)绿,棕,红

根据android大师鸿洋的HorizontalProgressBar改写而来,我这个要更吊一些。android pm2.5分割线自定义横线view(非浸入式)绿,棕,红

2018-05-31

android c++高级编程 ndk示例源码

这个是eclipse下的 android c++高级编程 ndk示例源码,非常全面适合学习开发。

2018-05-25

Android 滚动时间选择器,爱上租时间选择器

Android 滚动时间选择器,爱上租时间选择器,这个是高仿爱上租时间选择器。

2018-05-23

Dagger2 @Component

前很多blog和技术网站,很多文章都在讲Dagger2 的使用,一般都是在Application中生成一个AppComponent,然后其他的功能模块的Component依赖于AppComponent,但是有些文章中使用的方式是@Component(modules = PreseterModule.class, dependencies = AppComponent.class),也有使用@Subcomponent(modules = PreseterModule.class)方式提供Component的,那么两者之间有什么明显区别?本文就来详细解释一下。

2018-05-10

Rxjava2 + retrofit2 + MVP + Dragger2

Android App基本mvp+dagger(dagger2.android)+rxjava2+retrofit+ormdb框架,有效的API+登陆登出完整闭环.Base Activity,Presenter ,View,Model 的抽象封装, http 请求封装&错误统一处理 https://www.jianshu.com/p/04ce0c91e3ee-》这家伙屌了一笔啊。 Rxjava2 + retrofit2 + MVP + Dragger2 + 应该是当前Android 开发主流框架。

2018-05-09

android微信支付(代码请完整带走)保准能用

android微信支付(代码请完整带走)保准能用,不用谢。android微信支付最新sdk接入总结。

2018-03-26

android 高仿微信多图片选择,拍照,兼容android7.0权限配置。超级好用

Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等,

2018-02-11

statusView内容侵入状态栏(非常好用)

statusView内容侵入状态栏(非常好用),内容侵入状态栏,状态栏深色字体,普通状态栏渐变

2017-12-11

android( 2017127_ffmpeg微信小视频录制和快速压缩,这个录制视频和压缩率太高了。

( 2017127_ffmpeg微信小视频录制和快速压缩,这个录制视频和压缩率太高了。

2017-12-07

android kotin+ ftp视频上传+android7.0 语音识别+百度地图+ 图片和拍照

android kotin+ ftp视频上传+android7.0 语音识别+百度地图+ 图片和拍照

2017-12-06

Android UI仿QQ好友列表分组悬浮效果

Android UI仿QQ好友列表分组悬浮效果,并且还有刷新的功能

2017-11-21

flutter_test.rar

附录 本文涉及到相关源码文件 flutter/shell/common/ - vsync_waiter.cc - engine.cc - animator.cc - shell.cc - rasterizer.cc flutter/shell/platform/android/ - vsync_waiter_android.cc - platform_view_android_jni.cc - library_loader.cc - io/flutter/view/VsyncWaiter.java flutter/runtime/runtime_controller.cc flutter/synchronization/pipeline.h flutter/fml/message_loop_impl.cc flutter/lib/ui/window/window.cc flutter/lib/ui/window.dart flutter/lib/ui/hooks.dart lib/src/widgets/framework.dart lib/src/widgets/binding.dart lib/src/scheduler/binding.dart lib/src/semantics/semantics.dart lib/src/rendering/ - binding.dart - object.dart - view.dart

2020-06-21

最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld

Android程序SDL2类库使用说明 简单记录一下Android程序使用SDL2类库的方法。这部分的信息可以参考SDL2源代码目录中的README-android.txt文件。SDL2使用的步骤可以分为以下步骤:

2020-04-01

UVCCamera.rar

业余时间捣鼓了下Android 板子连接多个usb摄像头的方案,一开始使用系统的CameraV1的api,但是取到的摄像头数量一直不对(api: Camera.getNumberOfCameras()),然后又去网上查了方案(传送门:https://blog.csdn.net/xiangzhihong8/article/details/82877901)发现Android P之后原生就支持多摄像头,心里美滋滋,这么快就大结局了,但是果然天不遂人愿,于是改用CameraV2的api,但还是识别不到完整的摄像头列表。没查到具体原因,但是猜测是跟Android板子有关,虽然在软件上已经支持多摄像头,但是底层可能还是限制了最大连接数量。之后去应用市场下了一个usb摄像头app,发现居然是可以正常识别出所有的摄像头,遂反编译之,发现是使用了UVCCamera。这个开源库貌似已经很久没有维护,并且根据之前使用的经验来看也有不少bug(主要是兼容性方面),但是项目中用到的硬件只有一个型号,并不需要做太多设备兼容性的适配,因此还是可以拿来一用。下面就分享一下UVCCamera的接入过程。 。

2020-04-01

AirHockeyTouch1.rar

opengl曲棍球游戏,了解着色器,纹理 1. Shader Shader其实就是一段执行在GPU上的程序,此程序使用OpenGL ES SL语言来编写。它是一个描述顶点或像素特性的简单程序。在opengles中常用的shader有两种:vertex shader和fragment shader。Geometry Shader(几何着色器)是继Vertex Shader和Fragment Shader之后,由Shader Model 4引入的新的着色器。还有一个compute Shader由Shader Model 5引入的提供通用计算能力的着色器。

2020-03-29

MediaCodec编码PCM为aac音频实现边播边录(一).zip

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2020-03-19

MediaCodec编码PCM为aac音频实现边播边录(二).zip

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2020-03-19

FFmpeg解码流程.zip

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2020-03-19

FFmpeg对音频数据重采样生成PCM数据.zip

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2020-03-19

FFmpeg+OpenSL ES 完成音频播放.zip

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2020-03-19

C++多线程解码音频数据.zip

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2020-03-19

C++多线程,生产者和消费者模型以及C++全局调用Java方法.zip

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2020-03-19

C++队列缓存AVpacket.zip

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2020-03-19

UVCCameraDemo.rar

  AndroidUSBCamera基于[saki4510t/UVCCamera](https://github.com/saki4510t/UVCCamera)开发,该项目对USB Camera(UVC设备)的使用和视频数据采集进行了高度封装,能够帮助开发者通过几个简单的API实现USB Camera设备的检测、连接、预览和音视频数据采集,最重要的是手机无需root,只需支持otg功能即可驱动。主要功能包括:   (1)支持USB Camera设备检测,画面实时预览;   (2)支持本地录制mp4格式视频,支持实时获取音视频数据流;   (3)支持jpg格式图片抓拍;   (4)支持获取camera支持的分辨率,和分辨率切换;   (5)支持屏蔽声音,重启Camera;  (6)支持相机自动对焦;   (7)支持调整对比度和亮度 (8) 支持480P、720P、1080P and higher

2019-06-17

websocket源码

这里特别说明下因为WebSocket服务端是公司线上项目所以这里url和具体协议我全部抹去了,但我会尽力给大家讲明白并且demo我都是测试过,还望各位看官见谅 我们先粗犷的讲下流程,掌握个大概的方向,然后在深入讲解细节的实现.这里先解答一个疑惑,为啥我们这要用WebSocket而不是Socket呢,因为WebSocket是一个应用层协议很多东西都规定好了我们直接按他的规定来用就好,而Socket是传输层和应用层的一个抽象层很多东西我们还得自己规定相对来说会比较麻烦,所以这里我们用的WebSocket. 既然WebSocket是一个应用层协议,我们肯定不可能自己去实现,所以第一步是需要找一个实现了该协议的框架,这里我用的nv-websocket-client,api我就不介绍了,库中readme已经详细的介绍了,后面我就直接使用了.

2019-04-25

java增删改查JDBC封装类(泛型封装)

java增删改查JDBC封装类(泛型封装),这个是高度封装化的,增删改查,直接用到我的项目中去的。

2019-02-28

android 自定义dialogfragment全屏对话窗体

android 自定义dialogfragment全屏对话窗体,这个demo还是很棒的。值得学习,直接用在项目里。

2018-12-03

java/android 3mb/s文件下载,大文件快速传输

java/android 3mb/s文件下载,大文件快速传输,非常好用。值得拥有

2018-10-25

DragShadowBuilder(拖拽拼图)

这个DragShadowBuilder(拖拽拼图),相当的屌啊,后续添加拽到某个view上时,该view高亮并放大。

2018-10-19

ContentProvider封装SharedPreferences功能,解决跨进程存取值的问题

ContentProvider封装SharedPreferences功能,解决跨进程存取值的问题, 我之前一直用自己封装的SharePreferences,后来出现跨进程问题;就用这个 ContentProvider,真好用,值得拥有!

2018-10-09

学习Matrix的对图像的处理可分为四类基本变换: Translate平移变换 Rotate 旋转变换 Scale缩放变换 Skew 错切变换 最好的demo

学习Matrix的对图像的处理可分为四类基本变换: Translate平移变换 Rotate 旋转变换 Scale缩放变换 Skew 错切变换 最好的demo

2018-09-27

空空如也

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

TA关注的人

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