
Android
parade岁月
parade岁月
展开
-
Rxjava之concatDelayError的正确使用方法
在项目中使用rxjava遇到需要合并请求的时候,很多时候会需要使用有关delayError操作符,(concatDelayError,mergeDelayError)concatDelayError可以保证顺序。二者都可以保证观察者可以接收到所有的成功事件,即使某一个被观察者发送了error事件。正常情况下,如果没有使用切换线程操作符,自然支持这种效果。但是如果观察者和被观察者不在同一个线程,则需要使用observeOn的重载方法,如下。...原创 2022-08-17 22:34:18 · 745 阅读 · 0 评论 -
Flutter 学习知识点累积
flutter中的单位:字体默认是sp,其他默认是dpFlutter中如何开启界面绘制边界线Flutter Provider的使用AndroidStudio中Flutter打包APK原创 2021-07-12 17:46:16 · 284 阅读 · 0 评论 -
记一次manifestPlaceholders的值是纯数字时打包后的bug
Android中在使用第三方sdk时,经常需要在AndroidManifest.xml里配置一些元数据,比如<meta-data android:name="DEMO_CHANNEL" android:value="${CHANNEL_VALUE}"/>一般情况下CHANNEL_VALUE都是在gradle里的manifestPlaceholders配置的变量,比如:manifestPlaceholders = [ CHAN原创 2021-07-08 16:47:10 · 671 阅读 · 2 评论 -
Android打开第三方地图定位(百度,高德)
最近遇到一个需求,要打开手机里的第三方地图进行定位(只有地址信息,没有经纬度),网上查了一下,也查了相关Api,百度地图没啥说的,就照着官方文档来,so easy。高德就有点麻烦了,必须的传经纬度。下面就介绍一个百度和高德各自的调用百度地图参考 官方API-2.2.4地址解析,这里就不做过多介绍,代码如下Intent().setData(Uri.parse("baidumap://map/geocoder?src=com.jianqi.wuye&address=${地址}")) .原创 2021-05-09 23:07:49 · 1280 阅读 · 0 评论 -
Java exception was raised during method invocation
在使用webview和js交互的时候遇到一个错误,Java exception was raised during method invocation,网上查找的原因都说是执行的线程不对,我的不是这个原因。我的原因是在activity的onResume里允许了js执行,而在onStop声明周期里设置里不允许js执行,js调用原生的方法是要调用activity的finish方法,而finish之前调用了onStop,所以导致抛出了异常(根本原因是js与Android交互需要webview允许执行js’)原创 2021-02-07 20:57:23 · 5167 阅读 · 1 评论 -
Kotlin Any,Unit,Nothing,null
A parameter is a named variable passed into a function. … Note the difference between parameters and arguments: Function parameters are the names listed in the function’s definition. Function arguments are the real values passed to the functionAnyAny是kot原创 2020-11-20 21:35:46 · 936 阅读 · 0 评论 -
kotlin闭包
什么是闭包一段程序代码通常由变量,常量,表达式组成,然后使用一堆"{}"来闭合,并包裹这些代码,由这对花括号包裹着的代码就是闭包。函数,Lambda,if语句,when语句都可以称之为闭包,但通常情况下我们所说的闭包就是Lambda简单的闭包fun main() { test//yes}val test = if (5 > 3) { println("yes")} else { println("no")}为什么会设计闭包这种结构变量的作用域无非就..原创 2020-10-23 16:14:18 · 1307 阅读 · 0 评论 -
发布开源项目到Jcenter从0到1,自身经历
把自己的依赖放到JCenter 首先需要注册Bintray ,因为Bintray 是 JCenter 库的运营商。首先你要有一个项目,准确的说应该有一个Android moudle并把项目上传到GitHub注册 :网址https://bintray.com/signup/oss,这里注册一定要注册个人账号Add New RepositoryRepository添加成功后会跳转到Repository首页,接下来需要Add a Packagepackage添加成功后去pa原创 2020-06-02 16:41:45 · 352 阅读 · 0 评论 -
Rxjava使用,没有理论只有实战
线程切换->subscribeOn和observeOnObservable.just(1,2,3,4) .doOnNext { println("parade订阅observeOn${Thread.currentThread().name}") //当subscribeOn在Schedulers.io()时 打印parade订阅observeOnRxCachedThreadScheduler-1 //当subscribeOn在Androi..原创 2020-06-02 09:52:31 · 326 阅读 · 0 评论 -
Kotlin之Flow由浅入深,对比Rxjava
原文链接sequencesequence又被称为惰性合计操作,下面举例说明fun main() { val sequence = sequenceOf(1, 2, 3, 4) val result: Sequence<Int> = sequence.map { i -> println("Map $i") i * 2 }.filter { i -> println("Filter $i")翻译 2020-05-21 12:10:09 · 2653 阅读 · 0 评论 -
Kotlin 协程由浅入深
任何UI框架都有自己的主线程来进行渲染界面和观察触摸事件,这个线程绝对是你应该关注的最重要的线程,用户永远不知道你是否使用了AsyncTask或者Coroutine来编写你的代码,但是用户却可以感受到你的应用的响应速度,因此要如何组织应用所要执行的任务是你要最应该了解的事情之一HelloWorld如果你有一个网络请求,耗时很久,那么它必须不能在主线程执行。如果你在Android应用里这样做,将会导致你的应用崩溃。最常见的一种解决方案是在后台线程执行网络请求,然后再回调里返回结果供UI更新(比如Re.翻译 2020-05-21 00:30:01 · 211 阅读 · 0 评论 -
Spannale的flags的真正含义,有图有真相
当你第一眼看到Spannable标志的EXCLUSIVE和INCLUSIVE时,我以为他们只是代表着各种样式span是否包含SpannableString中指定的开始和结束的索引位置,但事实证明这种想法是错误的,我们可以用下面的例子证明它val myString = "01234"val start = 1val end = 3val spanFlag = Spannable.SPAN_EXCLUSIVE_INCLUSIVEval spannableString = SpannableString原创 2020-05-14 23:15:36 · 311 阅读 · 0 评论 -
Android布局优化,没有理论,只有实践
Android布局优化是一个课题,本文仅从实际中的使用介绍一些优化的技巧。平常的项目中使用的一些布局,第一眼看上去像是多个空间搭建出来的,但其实只需要一个原生控件就可以。个人中心的设置布局优化之前的布局可以使用一个LinearLayout或者RelativeLayout加两个个ImageView,但是其实只需要一个TextView即可,下面是使用方式<TextView android:id="@+id/tvExit" android:layout_width="match_原创 2020-05-14 16:26:59 · 184 阅读 · 0 评论 -
Android中webview的使用,重点处理图片和附件下载
webview基本使用://加载网页链接webView.loadUrl("http://keithxiaoy.com");//加载本地assets目录下的网页webView.loadUrl("file:///android_asset/keithxiaoy.html");//加载手机本地的html页面webView.loadUrl("content://com.android.ht...原创 2020-05-02 00:28:08 · 1789 阅读 · 0 评论 -
Android Studio中调试Java代码
在写Android项目的时候,经常需要验证一些Java功能,但是直接在项目里写,还得重启项目,非常不方便。其实Android Studio提供了在项目之外调试代码的功能。...原创 2020-04-06 10:41:54 · 1391 阅读 · 0 评论 -
AndroidStudio配置bebug和release密钥文件,生成签名
开发中我们经常需要在测试版本和正式版本之间来回切换,而测试版本和发布版本默认情况下是不能同时安装的(根本原因是签名不同),使用AndroidStudio运行的时候,AndroidStudio会自动帮我们生成签名。不管是debug运行的时候还是直接run的时候,生成的签名都一样。而我们的应用需要上架的时候就必须再生成签名。当然我们也可以配置同时在手机安装测试版本和发布版本;还有一个问题就是我们使用...原创 2020-04-02 22:31:23 · 1201 阅读 · 0 评论 -
android百度地图自定义marker,使用网络图片
由于提供的基础marker只提供icon,所以如果marker需要显示更多信息,就需要自定义View使用网络图片标记marker,需要等图片加载完毕再添加markerfor (GridPoint gridPoint : pointList) { //这个是自定义marker 视图,和普通视图一样 View inflate = LayoutInflater.from(MapGri...原创 2020-03-28 14:24:35 · 1241 阅读 · 0 评论 -
AndroidStudio修改工程名称和包名称
修改工程名称关闭AndroidStudio,复制一份新的项目,修改项目文件夹名称删除.idea文件夹和.iml文件夹(有可能是隐藏的,需要设置显示)最后重新打开项目修改包名称打开清单文件AndroidManifest.xml修改applicationId位新的包名...原创 2020-03-24 11:48:13 · 352 阅读 · 0 评论 -
android通讯录(任意层级树形列表和字母列表切换)
参考文章Android使用RecycleView实现魅族手机通讯录界面Android微信通讯录滑动快速定位实现其中recyclerview部分参考第一篇文章,侧边栏参考第二篇文章关键点:判断是否分组的开始ItemDecorationgetItemOffsets为绘制分组头部字母和分割线预留空间onDraw绘制分组头部字母onDrawOver绘制悬停字母侧边...原创 2020-02-11 12:10:52 · 945 阅读 · 1 评论 -
android简单封底部导航栏(自定义item布局)
实现功能很普通,只需要item的布局自己写,传入标题,选中的和未选中的图标数组。然后配合ViewPager用法如下fragmentList = new ArrayList<>();mTitleList = new String[]{"首页", "发现", "我的"};mUnSelectedIcon = new int[]{R.mipmap.home_icon, R.mipmap...原创 2020-02-11 11:34:10 · 843 阅读 · 0 评论 -
android吸顶布局(动态添加和移除view)
参考文章[五种方式实现Android吸顶效果]( https://www.jianshu.com/p/23b8820f1549我的效果吸顶关键点:根据滑动距离动态改变tabLayout的父容器根据滑动距离动态改变悬浮tab的背景色锚点切换关键点参考另一篇文章android锚点优化关键点代码:if (y >= headerH) { //滑动的距离大于头部布局的高度,...原创 2020-02-03 09:50:52 · 1724 阅读 · 0 评论 -
android锚点优化
首先看效果先说关键点tabLayout选中的时候滑动到指定锚点由scrollview主动引起的滑动,滑动的指定区域,选中那个指定tabLayout由于上述两个步骤会引起相互调用,所以要判断scrollview滑动是主动引起的还是点击tabLayout引起的,涉及到利用反射给tabLayout的tab添加onClick点击监听项目中的LinearLayout的子元素之间的分隔符用到了...原创 2020-02-02 15:03:23 · 417 阅读 · 0 评论 -
时下流行布局,布局深入到状态栏,滑动标题栏渐变和状态栏字体颜色改变
首先感谢博主的这篇文章高仿美团APP页面滑动标题栏渐变效果在这先放一下我的效果这里收一下我和博主的不同这里我用了nestScrollView代替了scrollView增加了仿网易云音乐歌单界面的布局增加了改变标题栏和状态栏字体颜色这里使用了腾讯团队开源的QMUI源代码已经上传了github–点击跳转代码注释比较详细//1、设置状态栏透明,是内容区域可以渗透到状态栏下(首...原创 2020-01-22 14:09:29 · 820 阅读 · 0 评论 -
android retrofit请求 结合postman测试
post请求body传参//接口@POST("case")Observable<ReportModel> addOrUpdateCaseInfo(@Body ReportVo reportVo);postman测试请求原创 2020-01-14 10:38:01 · 754 阅读 · 0 评论 -
使用retrofit请求添加拦截器打印日志
使用retrofit请求添加拦截器打印日志public class MyInterceptor implements Interceptor { private static final String TAG = "MyInterceptor"; @Override public Response intercept(Chain chain) throws IOExcep...原创 2020-01-12 15:08:37 · 1033 阅读 · 0 评论 -
android studio快捷键
作用快捷键复制到下一行ctrl + D抽取字符串为常量ctrl+alt+c快速生成findViewByIdfbc 需要改变设置才能实现在任何地方搜索Double Shift替换Ctrl + R在当前工程查找Ctrl + Shift + F快速抽出公用方法Ctrl + Alt + M格式化代码快捷键Ctrl+ALT+L...原创 2020-01-11 19:18:22 · 312 阅读 · 0 评论 -
google官方权限申请库EasyPermissions使用方法
去github上引入最新的库 地址重写onRequestPermissionsResult,将请求结果转发到EasyPermisson库@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) ...原创 2020-01-11 18:16:09 · 3215 阅读 · 0 评论 -
viewpager根据每一个fragment高度自适应
使用tablayout+viewpager时,根据viewpager自适应fragment里面页面的高度,某一个fragment数据很多,页面很长,viewpager就很长,某一个fragment数据很少,页面很短,viewpager就很短,关键是viewpager,下面是自适应高度的viewpager代码public class AutoHeightViewPager extends View...原创 2020-01-08 22:34:38 · 2597 阅读 · 5 评论 -
TextWatcher
TextWatcher/** * 在View改变之前执行,好比你输入了字符,系统先统计你输入的信息,在这里可以提前获取你的动机。 * @param s 控件改变之前的字符 刚开始就是空字符串 * @param start 输入前光标所在位置或删除后光标所在位置,刚开始0,增加字符是(改变之前的位置) --删除字符是改变之后的位置 * @param count 删除的字符的长度,增加的时候...原创 2020-01-07 13:31:16 · 394 阅读 · 0 评论 -
tabLayout详解,自定义布局
<!--tabMinWidth 可以指定一个最小值,来达到tab宽度自适应文字的效果tabContentStart设置整个布局的左侧外边距相当于margin tabIndicatorFullWidth=false可以让指示器的宽度匹配文字的宽度app:tabBackground=""设置tab像的背景样式,可以改变选中后的背景样式--><android.support.de...原创 2019-04-11 23:41:13 · 3312 阅读 · 2 评论 -
当Retrofit2+RxJava2遇到为null的返回结果
前言更新RxJava2之后,就不能在onNext里面发送null值了。但是项目中有些接口,例如更新用户密码的接口(我就遇到了),后台没有返回数据(也就是null),于是修改密码成功,但是活动crash(没有走onNext方法,而是走onError方法,但是异常对象也是null,提示Null is not a valid element),在网上找到了一片文章当Retrofit2+RxJava2遇...原创 2019-03-22 13:24:11 · 6238 阅读 · 0 评论 -
BottomNavigationView+Fragment实现主页面布局,并解决fragment重叠和数据保存的问题
实现底部导航,有很多种方式,我比较喜欢用android的design提供的BottomNavigationView,实现起来非常方便先看效果主页布局如下<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"...原创 2019-02-27 11:01:49 · 4894 阅读 · 0 评论 -
Android学习中遇到的优秀文章的总结(持续更新)
项目练习通用的Android练习模版设置,此文章介绍了怎么提高练习项目的效率,我从中学到了学习建立公共库,让工程中的其它module都使用共同库的依赖,避免重复导入第三方依赖...原创 2019-09-17 22:47:05 · 2503 阅读 · 2 评论 -
Could not find manifest-merger.jar (com.android.tools.build:manifest-merger:26.0.1)
之前从github上clone的项目编译一直没问题,突然出现了这个问题,只需要修改maven仓库的顺序即可原创 2019-02-25 17:00:08 · 2382 阅读 · 1 评论 -
focusable和focusableInTouchMode属性
如果页面上有EditText控件,开发者又没做其他处理,那么用户打开该页面时往往会自动弹出输入法。这是以为编辑框会默认获得焦点,即默认模拟用户的点击操作,于是输入法的软键盘就弹出来了,想要避免这种情况,就得阻止编辑框默认获得焦点。比较常见的做法是给该页面的根节点设置focusable和focusableInTouchMode属性,通过将这两个属性设置为true可以强制让根节点获得焦点,从而避免输入...原创 2019-01-09 16:07:14 · 3514 阅读 · 3 评论 -
一个activity里有多个gridview时的布局问题
如果一个activity里有两个GridView时,可能每个GridView只能显示一行,如下图效果。其中两个GridView,每个都至少有两行数据,但是这里都只显示了一行数据,而且不能滑动经过百度后说重写GridView可以解决这个问题,GridView可以根据内容自适应高度,上下两个GridView作为整体一起滑动重写代码如下,然后在布局里用这个重写的GridView代替原有的Gr...转载 2019-01-14 22:44:25 · 450 阅读 · 2 评论 -
android页面全屏及状态栏和导航栏的(沉浸式)
先介绍两篇博客1、关于Activity和AppCompatActivity的区别,可以参考博客 https://blog.youkuaiyun.com/today_work/article/details/793001812、Android沉浸式状态栏完全解析,参考https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650236820&...原创 2019-01-08 01:14:19 · 2797 阅读 · 0 评论 -
项目中使用viewpagerindicator的简单步骤,包括修改样式
上一篇文章中介绍了查看viewpagerindicator的demo以及项目中关联viewpagerindicator的库,这一篇介绍如何使用他1、修改布局文件,在viewpager的上方使用<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android...原创 2019-01-01 20:26:00 · 3377 阅读 · 1 评论 -
android事件机制
首先说明一个概念:正常情况下android中的事件,是必须要先经过传递流程然后再经过处理流程的,要记住这个先后顺序在ViewGroup中,有下面3个方法:dispatchTouchEvent 该方法用来分发事件,一般不会重写这个方法onInterceptTouchEvent 该方法用来拦截事件onTouchEvent 该方法用来处理事件在View中,只有2个方法:...原创 2019-08-04 23:38:57 · 272 阅读 · 0 评论 -
ViewPager+Fragment使用动态修改每个fragment的状态栏颜色以及Fragment的懒加载
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2019-09-17 07:08:19 · 895 阅读 · 1 评论