- 博客(36)
- 资源 (4)
- 收藏
- 关注
原创 RecyclerView嵌套ViewPager的那些问题
记录一下在开发过程中遇到的一些问题在项目中,有一个功能有使用到了RecyclerView嵌套ViewPager实现的。在这个过程中遇到各种酸爽的问题,这里我记录下自己解决的思路。1.ViewPager不显示2.ViewPager只显示一个,后面的没有显示,但是占据了页面空间。3.RecyclerView调用notifyDataChange或notifyItemChange方法时出现...
2020-04-30 09:27:49
1588
原创 MVVM之DataBinding的使用
DataBinding在MVVM框架中的作用:为数据与xml文件实现了双向绑定。即数据的变化可以自动刷新界面,View在一些操作上也会自动的更新数据。减少了Activity的工作量。1.使用DataBinding在build.gradle中添加dataBinding { enabled = true }然后在xml文件的根标签上ALT + 回车键 然后选择...
2020-04-08 18:33:57
651
原创 Okhttp网络访问过程解析
无聊啊无聊!!!本文仅仅记录了网络访问的过程1. 发送请求1.1 Call 接口Call接口对http请求的抽象封装。而它的实现类是RealCallpublic interface Call extends Cloneable { Request request(); //同步执行 Response execute() throws IOException...
2020-04-03 17:42:12
595
原创 RxJava的原理解析
还没有找到工作,闲着也是闲着就记录一下之前学过的知识点。本文分析的大致内容是以下三个部分。关于RxJava的基本使用,不属于本文要点。源码基于RxJava 1.1.9RxJava的基本流程分析 map操作符的分析 线程切换的分析1.RxJava的基本流程分析 Observable.create(object :Observable.OnSubscribe<String&...
2020-04-03 12:37:47
537
原创 RxJava1的使用介绍
1.RxJava是什么?2.观察者模式?3.RxJava中的观察者模式?4.创建观察者。5.创建被观察者。6.Subscribe 订阅。7.变换操作符。8.线程调度。1.RxJava是什么? RxJava是一个可异步处理事件的框架。 在Android中异步一词很重要。Android规定在处理耗时操作时,需要开启一个子线程处理任务,这样会出现子线程和主线程通信的问题。 ...
2019-12-18 11:16:27
291
原创 小程序开发问题之textarea层次问题
小程序提供的textarea用于实现多行文本编辑框。可是在textarea组件和其他组件重叠的时候,会出现其他组件点击事件失效了,textarea会获得焦点弹出软键盘。原因是textarea的层级比其他组件的层级高。而且组件的z-index设置为多少都不如textarea的层级高。解决的办法是:使用cover-view组件。该组件用于覆盖在原生组件之上的文本视图。需要注意的是cover-v...
2019-11-21 17:01:27
284
原创 Android 序列化
a.什么是数据序列化?b.数据序列化有什么作用?c.如何实现序列化?a.什么是数据序列化?序列化是将对象转化为可传输或可存储的数据格式过程。b.数据序列化有什么作用?在Android应用中,intent对象传值,本地数据存储,网络数据传输和进程间通信都需要序列化。c.如何实现序列化?(1)SerializableSerializable...
2019-10-29 14:04:11
217
原创 Android Webview解析
一.Webview简单使用二.Webview中Android方法和 js方法互调三.Webview缓存机制四.Webview优化一.Webview简单使用打开一个urllateinit var web:WebView override fun onCreate(savedInstanceState: Bundle?) { super.onC...
2019-10-28 16:39:16
932
原创 小程序开发问题之自定义tabbar(绝对有用)
系统提供tabbar样式是不是丑得产品经理内分泌失调。还不能调整图片的大小和文字的大小。自定义tabbar的思路是:1.不适用系统提供的tabbar(app.json中相关tabbar的东西都没有)2.创建四个组件作为自定义tabbar对应的页面3.创建一个页面使用上一步创建的组件1.创建order组件:组件类似页面一样,都有wxml,js,json,wxss...
2019-10-16 17:11:58
435
原创 小程序开发问题之swiper高度适应
小程序提供的swiper高度默认是150px。如果子view 高度超过默认高度时会不显示被超过的部分。个人解决的办法是根据子view的高度动态修改swiper的高度。wxml:<swiper class="swiper" style="height:{{cusHeight}}rpx" indicator-dot="false" autoplay="{{play}}" curre...
2019-10-11 16:37:23
300
原创 小程序开发问题之swiper抖动效果
个人的解决方式是不在 bindChange事件回调函数中更新current值,而是在bindanimationfinish(滑动动画结束调用)事件回调函数中更新current值。<swiper class="swiper" bindanimationfinish="swiperAnimationListener" >swiperAnimationListener:f...
2019-10-11 16:22:24
1010
原创 小程序开发问题之自定义swiper指示点
微信官方提供的swiper的指示点是小圆形,位置在swiper中间靠近底部位置。如而产品的要求是需要将指示点方式在右下角,同时是条形。如思路:不显示swiper自带的指示点,根据banner数据集合的长度显示指示点。根据swiper的滑动更新指示点的状态。wxml:<view class="swiper-group"> //创建一个swiper ...
2019-10-11 16:05:59
1243
原创 Android 事件分发机制
1. MotionEvent类MotionEvent类用于记录View的事件。包括MotionEvent.DOWN手指点击屏幕 MotionEvent.UP手指离开屏幕 MotionEvent.Move 手指在屏幕上滑动 MotionEvent.CANCEL 事件取消(非人可控制)。2.View事件的传递规则View事件的传递都是通过三个方...
2019-09-10 16:36:51
100
原创 java垃圾回收机制
1.概述java源文件通过编译为java字节码文件,然后通过类加载器加载文件中各个类字节码,然后通过jvm执行。在这个过程中需要一个空间用于存储程序执行期间需要的数据和信息。这个空间叫做运行时数据区。1.对象存活判定算法1.1 java 引用的四种类型a. 强引用(StrongReference)Object object = new Object()具有强引用的对象不会被...
2019-09-10 16:20:32
124
原创 使用注解解放View的findViewbyId和setOnclickListener
通过注解可以减少很多重复的代码。比如findviewById,seonclickListener等。1.创建BindView注解(用于成员变量,在运行时存在)@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface BindView { int value() def...
2019-09-10 16:10:02
979
原创 Java反射
1.什么是反射?java反射机制就是在运行状态中,通过一个类可以知道该类的方法和属性。通过一个对象,能够调用该对象的方法和属性。jvm类加载机制的第一个过程(一共有7个过程:加载,验证,准备,解析,初始化,使用卸载)在第一个过程 加载中,虚拟机会寻找对应类的Class文件,然后将Class文件描述类的数据加入到内存中。然后生成一个该类对应的java.lang.Class对象,作为方法区这个...
2019-09-10 16:00:34
88
原创 Java注解
1.什么是注解?简单来说注解是一个特殊的标记符,用于修饰java代码,能被编译器解析,也能在运行时被解析出来。2.什么是元注解?元注解就是描述注解的注解。Java提供的元注解有4种@Target@Retention@Documented@Inherited@Target 用于描述注解的使用范围(被描述的注解可以用在什么地方)1.CONSTRUCTOR:用于...
2019-09-10 15:47:04
89
原创 ViewPager + 对象池
前言:之前公司实现了一个在线作业功能,要求是有多种题型,多道题。一看需求的时候,我就确定要使用ViewPager实现。方便快捷顶呱呱,然而~~~问~~~题~~~来~~~了。 测试完后,发现的问题有:(1)在一些机型上出现内存溢出的问题;(2)用起来感觉非常笨重;(3)滑动不是很流畅;先说说我之前实现的方式:根据题目的个数创建出对应的View(也就是说有50道题,就创建50个vie...
2018-06-22 15:08:28
218
1
原创 PopupWindow底部弹出,底部UI被遮盖问题
之前做项目的时候也碰到过PopupWindow从底部弹出,界面底部的UI有一部分被遮盖了。之前碰到这个问题的大多是类似华为手机之类的有虚拟按键的手机。可是这次我用来运行的机子是模拟机,也没有虚拟按键之类的东东。花了一点时间处理了,所以记录一下。 首先:我先试试机子有没有NavigationBar,如果有我就按照以前的方法处理(判断手机是否有物理按钮,有则计算底部的Na...
2018-05-06 15:08:05
3470
1
原创 清晰明了的使用Messenger实现进程间通信
在Android开发中,相信你肯定听说过进程间通信。解决进程间的通信方式,相信你在面试的时候肯定能扯出几种方式:AIDL,Messenger,共享文件 .....blablablabla..... 但是 在Android开发的过程中很少使用到多进程吧。不常使用的东西,学会了过一段时间肯定会忘。正好,公司的一个新功能正好用到了多开一个进程,所以学习学习Messenger,记录一下。...
2018-04-27 16:41:43
222
原创 实现点击推送通知跳到目标Activity
前言:今天接到了一个任务:点击推送过来的消息,跳转到相应的Activity。刚开始的时候也没有什么思路,后来想了想步骤就发觉实现起来还是挺简单的,所以记录一下。 遇到的问题:(1)应用正在运行。(2)应用退出。(3)目标Activity是二级页面。思路: 1.我们检测应用运行状态:前台,后台,退出。当运行状态是前台和后台的时候,直接调到目标Activity;当应用是退出的状态,打开ap...
2018-03-06 14:51:31
958
原创 自定义一个圆形进度控件
在最近的一个项目中,使用到了一个显示完成进度的控件。刚开始是想随便找一个第三方的实现就成了。在github上找了一会儿,都不是我合意的。不是这些项目不够好,只是我只需要一个控件,却要集成一大堆东西。想了想还是自己动手实现一个吧。趁着现在有空,分享给大家。 先贴一张图: 实现的步骤:1. 继承View 重写相关构造方法。2. 实现 onMeasure()方法。注意wra...
2018-02-08 17:29:23
352
原创 组件化开发实现
2017年的时候就想学习学习组件化开发了。当时也看了一些相关文章,只是没有动手实现试试。直到这段时间才静下心来学习,我将自己学习到的东西记录下来,希望对各位感兴趣的同学有所帮助。在学习的过程中,我有一种感觉:学习组件化开发不难,难的是功能的分类。 1.组件化是什么? 组件化开发结构图 普通开发结构图(按自己的理解画的)
2018-01-31 17:40:50
415
原创 常量指针?指针常量?
今天学习C++的时候,遇到了两个问题:常量指针?指针常量?我的天啊看了好些遍书本还是模模糊糊的。在网上找了一些网友写的文章,才恍然大悟。 区别:const int *prt 和 int *const prt。 const int *prt 称为常量指针 (指向常量的指针) int *const prt 称为指针常量 (
2018-01-24 17:06:44
171
原创 AAC文件解码成PCM格式文件
上一篇写到PCM格式文件编码成AAC格式文件,这一步的原因是有利于传输。可以将PCM文件做了很大的压缩力度,使得包变得更小,便于传输。我使用播放器播放了AAC文件听到的是音速明显变快了,声音也变得尖锐了许多,AAC文件变小了很多。 本文主要是讲 AAC文件解码成PCM文件。接收到AAC文件以后,需要还原成PCM文件再播放。 需要用到的类: Me
2018-01-23 08:20:39
8237
1
转载 怎样防止App在后台运行,点击应用桌面图标重新启动?
在项目中,遇到一个问题百思不得其解,那就是:我在app使用过程中,点击了home键,然后去看看微信之类的其他应用,这个时候再点击app桌面的图标,这个时候app是重新启动的,而不是从上次停止的界面开始的。对于上面的情况,我觉得既然我的app已经在后台还运行着,为什么就不能继续重上一个界面继续运行,非得从新运行呢。然后我就去查资料解决了这个问题。首先讲讲这个现象的本质。原因:当点击app桌面图标时,
2018-01-19 10:01:22
477
原创 使用MediaCodec实现PCM文件格式编码(压缩)成AAC格式
在Android4.1以后google就提供了MediaCodec这个类来为用户提供音视频的编码解码功能(虽然支持的格式不是很多)。对于MediaCodec类,我们需要大致介绍一下:官网提供的概述:In broad terms, a codec processes input data to generate output data. It processes data asynchr
2018-01-11 15:22:50
6695
5
原创 2017年个人总结
这个时间点是2017年12月31日9点04分钟,在我打字到这里的时候又过去一分钟了。今天不知道怎么,突然很想做一下即将过去的这一年的总结。本来我想写写自己今年的得与失的。但是想了想还想自己并没有什么可以失去的。就如同我2017年年初说的那样:本来就一无所有,又何必害怕失去呢?这句话改一下就是:本来就一无所有,今年都是“得到”。 今年都是“得到”,这句话说得我有点不自然了。事实上,今年
2017-12-31 23:30:29
877
原创 Android 在线预览文件
在公司最近一个项目中,有一个需求是在线预览文件功能。重点是文件不能外露,也就是只能看,不能下载。当时我的想法有四个:(1)文件下载到本地,使用第三方应用打开,退出后删除该文件。(2)使用TBS(腾讯浏览服务)打开。(3)使用微软提供的预览效果,使用webview打开(4)使用百度云文档服务下面我就来说说这四种方式的缺点:方式一:文件下载到本地,使用第三方应用打开
2017-12-26 10:43:12
10168
1
原创 将WAV格式文件解析成PCM文件
要想解析WAV文件就需要了解WAV文件的结构,我在上一文中简单介绍过这方面的知识点。大家有兴趣可以点击打开链接实现这个功能也挺简单的,具体的步骤:1.读取WAV文件的头部,获取一些重要的信息,比如采样率,声道数,量化精度等等。2.读取WAV文件的数据块,就是PCM数据DataInputStream dataInputStream = null;getWav = n
2017-12-21 08:09:17
3664
原创 将PCM格式存储成WAV格式文件
前言:无论是文字,图像还是声音,都必须以一种特定的格式组织和存储起来,这样才能让显示器或播放器知道以怎样的一种方式去解析这些数据。把PCM格式的数据存储成WAV格式数据的思路:先写头部,再写数据块。WAV格式可以分成两个部分:1.文件头,存储一些重要的参数信息,比如采样率,声道数,量化精度等等。2.数据块,原始的PCM数据。想要了解WAV格式的可以点
2017-12-20 08:11:00
6307
2
转载 android采集视频格式转换算法
//-----------下面是常用的格式转换方法----------------------------- //yv12 转 yuv420p yvu -> yuv,yuv420p就是I420格式,使用极其广泛 private void swapYV12toI420(byte[] yv12bytes, byte[] i420bytes, int width,
2017-12-19 16:13:32
677
原创 使用AudioTrack实现声音播放
这篇文章主要讲的是AudioTrack的用法。AudioTrack 一般用来实现播放原始音频数据(PCM)觉得这个类没有什么好说的,咱就直接上代码吧。步骤一:配置需要的参数,初始化AudioTrack对象。我们需要了解一下这些参数streamType 这个参数表示使用哪种音频管理策略 STREAM_VOCIE_CALL
2017-12-19 08:47:57
4166
原创 使用AudioRecord实现声音采集
前言:在Android开发中,实现录音的功能一般有三种方式:1.调用系统的录音器 2.使用MediaRecord类实现录音功能 3.使用AudioRecord类。在这里我就不讲前两种方式的实现了,大家可以在网上查找相关的内容。这篇文章主要讲的是使用AudioRecord实现声音采集。 如果你不需要对采集到的数据进行处理的话,就可以选择使用前面两种方式。但是如果你需要将采集到的数据
2017-12-18 08:15:21
5791
转载 android中 关于listitem 获得焦点时,改变其背景
其实这个问题一直困扰着我,后来终于解决了。其实很简单看下面的截图,不好意思,截图有点模糊:1、listView控件 Android:id="@+id/contact_listview" android:layout_width="wrap_content" android:layout_height="400dip" android:div
2017-02-06 13:39:36
380
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人