- 博客(73)
- 资源 (1)
- 收藏
- 关注
原创 android 解决BottomNavigationView+nav_host_fragment实现tab,fragment重建问题
重建原因:源码FragmentNavigator中对fragment的管理时通过replace实现的,所以会导致每次切换时重建。解决思路:继承FragmentNavigator,把replace的实现方式改为show和hide实现。自定义FragmentNavigator来源解决方案参考来源用法:1.如下:在name中引入自定义的NavHostFragmentHideShow<fragment android:id="@+id/nav_host_fragmen
2022-04-22 13:58:33
3511
原创 Andorid各版本主要更变
andorid各版本主要更变参考自:https://www.jianshu.com/p/85f3059779d06.0新特性(棉花糖)参考自:https://developer.android.google.cn/about/versions/marshmallow/android-6.0-changes.html?hl=zh-cn1.运行时权限对于以android6.0(API级别23)或更高版本为目标平台的应用,请务必在运行时检查和请求权限。要确认您的应用是否已被授予权限,请调用新增的chec
2021-12-27 22:46:25
1687
原创 RecycleView刷新图片闪烁问题
1.在设置setAdapter前设置setHasStableIds(true)如下实例:circleAdapter.setHasStableIds(true);rc_circle.setAdapter(circleAdapter);2.重写adapter的getItemId方法@Overridepublic long getItemId(int position) { return position;}
2021-08-23 17:16:22
306
原创 Recyview内嵌recycleview导致内部itemDecoration重复增加问题
NoTouchRecyclerView rc_view_type = helper.getView(R.id.rc_view_type);LinearLayoutManager layoutManager = new LinearLayoutManager(mContext);layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);rc_view_type.setLayoutManager(layoutManager);//以下为解.
2021-08-19 17:04:36
376
原创 android中的几种动画
1.FrameAnimation(逐帧动画):将多张图片组合起来进行播放。2.TweenAnimation(补间动画):是对某个view进行一系列动作的操作。3.PropertyAnimation(属性动画):通过改变属性值实现动画的操作机制。参考自:https://blog.youkuaiyun.com/geduo_83/article/details/86560896...
2020-08-19 16:44:23
248
原创 view绘制流程
1.view绘制流程:onMeasure()onLayout()onDraw();2.onMeasure()方法的主要实现:待定。3.为什么不在onDraw()方法中创建对象。view的onDraw()方法会被频繁调用,避免在onDraw()方法中创建对象,是为了减少垃圾回收器工作时对绘图性能的影响,因为垃圾回收器工作时会暂停虚拟机中的一切线程。...
2020-08-19 15:20:14
176
原创 activity、windwo与view三者之间的关系
1.activity、windwo与view三者之间的关系参考自:https://www.jianshu.com/p/5297e307a688activity包含了一个PhoneWindow,而phonewindow继承自window,activity通过setContentView()将view设置到phonewindow上,由此可见,activity通过window管理view,window是activity与view建立关系的桥梁。...
2020-08-19 09:03:44
184
原创 Service篇
1.Service:android四大组件之一,不需要与用户交互,但可以在后台长期运行的组件。配置与使用:*写一个类继承自Service,然后覆写onBinder方法。*在清单文件中声明Service类。*通过startService或者bindService启动。...
2020-08-18 18:00:15
772
原创 androidstudio配置打包时apk名字设置
在app下的build.gradle文件中android{下配置//设置打包时 包名 android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "***_${defaultConfig.versionName}.apk" ...
2019-11-06 13:55:35
664
原创 okhttp源码解析
1.okhttp源码解析 流程详解(依赖implementation 'com.squareup.okhttp3:okhttp:3.10.0') 1.创建OkhttpClient对象(用于发送http请求和读取请求返回的数据,创建方式有两种:构建这模式和普通创建 ,构建这模式可以自定义Builder,普通创建使用默认的Builder). 2.创建Call对象:一个call对...
2019-10-15 18:58:02
324
原创 android网络请求日志打印
推荐https://blog.youkuaiyun.com/hyb1234hi/article/details/77444099
2019-08-29 16:04:47
1149
原创 android内存溢出和内存泄漏
参考:https://www.jianshu.com/p/05a83c34a205概念:*内存溢出:系统会给每个App分配内存空间也就是heap size值,当app占用的内存加上申请的内存超过了Dalvik虚拟机的最大内存时就会抛出Out of Memory异常。*内存泄漏:当一个对象不再使用时,被应该被垃圾回收器回收,但这个对象由于被其它正在使用的对象所持有,造成无法被回收...
2019-08-22 21:09:07
165
原创 Davik进程,linux进程,线程之间的区别
Linux 进程:有独立的内核堆栈和独立的存储空间,它是操作系统中资源分配和调度的最小单位。 以进程为单位,分配系统资源,给程序进行调度。 在执行一个程序时,它会创建一个进程,来执行应用程序,并且伴随着资源的分配和释放。(备注:所谓进程,说白了就是应用程序)Davik 进程:Dalvik 虚拟机运行在 Linux 系统之上。 Davik 进程就是 Linux 操作系统中的...
2019-08-15 21:42:08
471
原创 Java线程池
参考ThreadPoolExecutor类讲解*new Thread的弊端:1.每次新建对象性能差。2.线程缺乏统一管理,可能无限制新建线程,相互之间竞争资源,及可能占用过多系统资源导致死机或oom。3.缺乏更多功能,如定时,定期执行,线程中断。*相比new Thread,java提供的四种线程池好处在于:1.重用存在的线程,减少对象创建,消亡的开销,性能佳。2.可有效...
2019-08-15 01:32:09
115
原创 解决scrollview内嵌recycleview滑动顶部卡顿问题
recycle.setHasFixedSize(true);recycle.setNestedScrollingEnabled(false);
2019-05-22 14:17:30
125
原创 工厂方法模式
1.定义 定义一个用于创建对象的接口,让子类决定实例化哪个类。2.使用场景 在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以 完成创建的对象无需使用工厂模式。3.总结 工厂模式主要分为四大模块:抽象工厂(工厂方法模式的核心)、具体工厂(具体的业务逻辑)、抽象 产品、具体产品,由于每次为工厂方法模式添加新的产品时就要...
2019-05-19 22:55:10
95
原创 原型模式
1.原型模式的介绍 原型模式是一个创建型的模式,该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性 一致的对象,这个过程俗称克隆,被复制的实例就是所称的原型,原型可定制。原型模式多用于创建复杂 的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。2.定义 用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象。3.使用...
2019-05-19 17:35:48
109
原创 单例模式
1.定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式的主要关键点: 1>构造函数不能对外开放,一般为private; 2>通过一个静态方法或者枚举返回单例类对象。 3>确保单例类的对象有且只有一个,尤其是在多线程环境下。 4>确保单例类对象在反序列化时不会重新构建对象。2.应用场景:创建一个对象需要...
2019-05-09 20:48:22
111
原创 android实现倒计时
方法一:利用计时器动画ValueAnimatorfinal ValueAnimator valueAnimator=ValueAnimator.ofInt(5,0);valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Override public void onAnimationUp...
2019-05-06 23:40:35
354
原创 面向对象对的六大原则
1.单一职责原则:英文名(Single Responsibility Principle)缩写SRP。 定义:就一个类而言,应该仅有一个引起它变化的原因。(简单来说:一个类中应该是一组相关性很高 的函数、数据的封装。)2.开闭原则:英文名(Open Close Priciple)缩写OCP。 定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,对于修改是封闭的。3...
2019-05-06 22:41:46
117
转载 java线程和线程池
参考1参考2参考3(线程与进程)参考4(线程与进程)参考4(线程池)1.什么是线程:操作系统能够进行运算调度的最小单位,它被包含再进程中,是进程中的实际运作单位。2.什么是进程:操作系统分配资源的基本单位,一般情况下,一个运行的程序就可以说是一个进程。3.为什么使用线程: 1>执行耗时任务。 2>提高CPU的利用率。4.为什么使用多进...
2019-04-29 14:10:50
135
原创 导入依赖与当前版本不兼容解决方法
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { ...
2019-04-26 12:29:36
1304
原创 retrofit2+rxjava图片、视频上传
实例@Multipart@POST("api/upload/image")Observable<BaseResponse<List<String>>> uploadImage( @PartMap Map<String, RequestBody> files);public static Observable<Lis...
2019-04-25 18:45:45
1656
原创 Glide设置缩略图
Glide设置缩略图Glide.with( thi ).load( url ).thumbnail(0.1f).into( imageview ) ;
2019-04-25 00:52:15
2805
转载 android视频文件压缩
视频文件压缩第一步:implementation 'com.iceteck.silicompressorr:silicompressor:2.2.1'第二步:String path= SiliCompressor.with(activity).compressVideo(videopath ,Environment.getExternalStoragePublicDirectory(...
2019-04-24 22:50:31
1153
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人