
android学习笔记
旅行蜗牛
这个作者很懒,什么都没留下…
展开
-
webstorm 创建第一个cordova项目
1.下载webstorm打开,创建cordova项目创建的时候可能会提示没安装node或者没有cordova因为我之前创建vue项目的时候自动下载了npm,nodejs所以只要在环境变量配置一下path这里就可以自动检测了安装cordova npm install -g cordova 官网说明2.创建之后项目之后需要添加平台cordova platform add android3.cordova build 会报错 没有安装gradle需要下载gradle ...原创 2021-02-03 11:06:21 · 386 阅读 · 0 评论 -
C++中的&和&&
瞎扯淡:最近抽空看了一下有关Android 进阶方面的书,大概可以分为两个方向:1.应用层(框架源码阅读分析、设计模式分析)其实就是对java 各个数据结构的把握(数组、队列、栈、集合),比如glide 各级缓存的原理,就是说各级缓存的通过java的数据结构实现了各级缓存,之前一直跟着别人怼源码,但并没什么用,源码调用太长太多三遍甚至10遍根本记不住,但是如果你知道各级缓存用的是什么实现的,业务逻辑你自己也可以实现了。2.偏向底层的:linux 内核层,硬件抽象层,c++/c nativelib原创 2020-09-01 18:36:10 · 520 阅读 · 0 评论 -
NullPointerException: androidx.fragment.app.FragmentManagerImpl.isDestroyed()
ft.replace(R.id.main_frame_layout, fragment, flag);项目升级到AndroidX之后切换fragment的时候突然报错NullPointerException: androidx.fragment.app.FragmentManagerImpl.isDestroyed()改成hide和show 都没问题,网上找到的资料说是androidx版本低于 某个版本会出现这个bug,为了解决这个bug 项目的baseFragment里面添加了下面的代码..原创 2020-08-11 17:13:42 · 1097 阅读 · 1 评论 -
Android事件分发mFirstTouchTarget的思考
1.ViewGroup 1)dispatchTouchEvent如果决定拦截那么会回调super.dispatch,即是把自己当作View来处理事件。问题1.如果viewgroupe 拦截了事件,子view还能接收到事件吗?思考:上面的代码里面如果拦截了不会去遍历子view触发子view的dispatch事件,而是会遍历mFirstTouchTarget,而mFirstTouchTarget是在没有拦截的时候遍历子view赋值的,所以如果Down事件拦截了,那么mFirs..原创 2020-07-29 10:36:24 · 2251 阅读 · 3 评论 -
将AndroidStudio 里面的repository 替换为阿里云
allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' name 'replace jcenter() and mavenCentral()' } maven { ...原创 2020-01-17 15:35:08 · 1997 阅读 · 0 评论 -
android 5.0 之后禁止使用隐式Intent
最近在研究android 四大组件的源码在两个程序使用aidl IPC 调试断点的时候发现,bindService 永远是false,一开始以为是 intent 设置的不对,趴了半天!解决办法public static Intent getExplicitIntent(Context context, Intent implicitIntent) { // Retri...转载 2019-06-26 17:23:06 · 463 阅读 · 0 评论 -
frament 是否对用户可见
项目中引用了他人写的lazyloadfragment,博客上写的很牛逼,用起来却真的不咋地。主要的方法:就是在oncreateView 里面调用它 private void isCanLoadData() { if (!isInit) { return; } if (getUserVisibleHint()) ...原创 2019-07-08 11:38:28 · 128 阅读 · 0 评论 -
android 隐藏虚拟按键
private void hideNavigarionBar() { if (Build.VERSION.SDK_INT < 19) { View v = getWindow().getDecorView(); v.setSystemUiVisibility(View.GONE); } else if (Bui...原创 2019-07-08 17:57:42 · 3141 阅读 · 0 评论 -
Binder - 向ServiceManager注册服务 和 获取服务
1.注册服务 SM(ServiceManager)SystemServiceRegistry 这个类在加载的时候注册了n多服务 registerService(Context.ACTIVITY_SERVICE, ActivityManager.class, new CachedServiceFetcher<ActivityManager>()...原创 2019-07-05 11:48:40 · 1160 阅读 · 1 评论 -
android layer-list 实现的背景图
昨天UI 写了个注册界面,里面的背景没有切图的(是横屏显示的),说是为了省内存!这是你UI 该考虑的事嘛?他才不会考虑这些,说白了就是懒!随便找了个借口!最开始的想法是自定义view 然后画出来,最里面一个渐变色,外面画三个椭圆,应该没什么难度。动手写之后,又觉得一个背景色而已 ,用layer-list 也许也能实现<?xml version="1.0" encoding="u...原创 2019-07-18 11:05:16 · 2274 阅读 · 0 评论 -
android spinner dropdown horizontaloffset 设置无效
为了对齐spinner 真的是难,网上找了好多,基本无解,有的说是theme 的问题,试过之后发现使用推荐的theme 也没什么用,其他的基本是扯淡。只能去看一下源码 /** * Set a horizontal offset in pixels for the spinner's popup window of choices. * Only valid in ...原创 2019-07-19 10:52:41 · 2473 阅读 · 2 评论 -
windows 利用 cygwin 编译 ffmpeg 生成.so
1.老泪纵横,终于编译出.so 文件了。遇到了非常多的坑,好在坚持下来了,虽然资料不是很多但是还是有一些可以查到的。1)windows 下 执行.sh 脚本,网上有很多其他的,但是我用的cygwin ,不用全部下载下来。安装cygwin:https://www.cnblogs.com/CharlesGrant/p/4763571.html我只选了这里面列出的项目,里面匹配不精确的我把相关的...原创 2019-05-05 17:05:51 · 1149 阅读 · 1 评论 -
jni 学习-hello from ffmpeg
1.新建项目 勾选c++ support然后新建jni 文件夹2.配置build.gradle3.将ffmpeg生成的so文件和头文件拷贝进项目4.同步一下,报错,说不支持armbi 架构(ndk 17 以后没有这个架构了),但是现在很多so文件就只支持armbi,所以将ndk 的路径切换到155.编写cmakelist 文件,这里写完之后可能会报错,绝大部分...原创 2019-05-06 11:21:32 · 194 阅读 · 0 评论 -
jni 学习FFmpeg-learning 笔记
没有找到比helloworld稍微复杂一点点的jni学习相关资料,但是找到ffmpeg 相关的demo,看起来还挺难的。项目地址:https://github.com/whenSunSet/FFmpeg-learning/tree/master/app他的简书:https://www.jianshu.com/u/45661204c0d6这个项目是别的博主的源码地址,也在他自己的博客里...原创 2019-04-30 17:38:18 · 295 阅读 · 0 评论 -
深入理解android 卷1->学习笔记第二天
一、java 层调用jni 层的方法,注册之后可以直接使用1.前几天学了jni 注册的两种方式1)静态注册,头文件注册:通过包名+方法名称特殊的组合将java native 方法映射到 jni 层方法 2)动态注册:1.在system.loadLibrary 之后会回调JNI_O...原创 2019-05-15 14:34:22 · 184 阅读 · 0 评论 -
jni 学习-ffmpeg simpleDecoder
ffmpeg 简单的解码器:1.新建java 类public class SimpleDecoder { static { System.loadLibrary("avcodec"); System.loadLibrary("avdevice"); System.loadLibrary("avfilter"); S...原创 2019-05-07 16:33:10 · 368 阅读 · 0 评论 -
关于Activity singleInstance 启动模式
网上流传的信息:singleInstance适合需要与程序分离的页面,例如闹铃提醒,将闹铃提醒与闹铃设置分离,singleInstance不要用于中间页面,如果用于中间页面,跳转会有问题,比如;A->B(singleInstance)->C,完全退出后,再次启动,首先打开的是B.google 了一下Activity 的启动模式,排名前几个的内容几乎是一模一样的,其他的没什么说的,但...原创 2019-05-13 11:13:16 · 637 阅读 · 0 评论 -
快速实现 Parcelable
最近在研究通过annotationprocessor 自动添加代码,找到一个autoparser 自动实现序列化的库,原理是通过javapoet 在注解处理器处理注解的时候生成代码,我暂时这样理解的。但是生成的代码是在一个新的class里面还是在原class 里面?又是怎么关联的?还没弄明白,javapoet 生成class 就像是在文本里面写代码一样,所以感觉如果不是要生成的代码经常用的话自己通...原创 2019-05-24 10:02:38 · 773 阅读 · 0 评论 -
annotationProcessor
1.annotationProcessor 注解处理器,就是在编译阶段处理注解用的。可以通过它在编译的时候自动生成一些需要的代码,好像都是这么用的。ButterKnife1.bind 就是找到Unbinder 实例的构造方法,然后创建一个Unbinder 实例 @NonNull @UiThread public static Unbinder bind(@NonNull Act...原创 2019-05-24 11:39:35 · 1418 阅读 · 0 评论