![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 70
王先生技术栈
这个作者很懒,什么都没留下…
展开
-
JetpackCompose快速实现底部导航栏,BottomNavigation使用
首先放上一个效果,这里需要特别鸣谢@扔物线大佬,因为我这边使用的颜色,图片都是从大佬的项目中直接拿过来的。原谅我是个白嫖怪~在@扔物线大佬的WeCompose项目中,对于底部导航栏的实现是使用Row + Column组合的方式实现的。但是我今天在阅读android developer文件的jetpack compose 指南的时候,发现官方个实现了Material Design的BottomNavigation效果,大致看了下文档,发现使用也是很简单。对于熟悉Flutter#BottomNavigati.原创 2021-12-24 01:43:57 · 7410 阅读 · 0 评论 -
彻底搞懂RecyclerView,告别职业焦虑emo(上篇)
持续学习,告别职业焦虑~每次一个告别emo小技巧,今天带来RecyclerView#LayoutManager。相信大家对于LayoutManager的使用肯定都非常熟悉了,如果还不熟悉或者不知道这个是干啥的,本篇文章可能也就不适合你了。...原创 2021-11-17 20:31:45 · 447 阅读 · 0 评论 -
为ViewGroup添加入场动画,LayoutAnimation使用概述
本篇文章来一点好玩的效果。还记得之前的视图动画效果吗?之前我们控制的效果,都是针对单个视图,如果想要对一组视图使用相同的动画效果,这个时候,就需要使用到。为了让大家看的时候更清晰效果,所以视频做了慢放处理,可以看到是有回弹会效果的,还是比较炫酷的。方式,我们可能希望沿着对角线方向实现动画效果,而不是一个个来。则需要进行自定义动画的执行方向。使用上和之前使用没有任何区别。动画执行顺序还是区别很明显的。可以看到动画的执行顺序是顺序执行的,中,都是顺序执行的,但是如果现在是。实现对角线方向动画效果的代码。原创 2021-11-09 00:00:49 · 2484 阅读 · 0 评论 -
使用ViewDragHelper实现平滑拖动动画
使用十分简单,基本上就是固定的使用套路。因为是一个拖动、移动的辅助类,一般情况下,我们会使用在自定义之中。使用方法创建一个对象在中的事件拦截使用的方法进行*事件接管*。重写方法,在其中处理刷新实现的方法,进行逻辑处理操作。下面介绍下常用的方法。原创 2021-11-08 23:21:44 · 1778 阅读 · 0 评论 -
使用scrollTo、scrollBy、Scroller实现滚动动画
在上一节讲解了layout、offset、的使用,本节说明scrollTo、scrollBy、Scroller。原创 2021-11-01 21:33:25 · 5639 阅读 · 2 评论 -
插值器和估值器概述与使用
接下来我们实现一个如下的曲线下面是实现代码,从上面系统的实现,基本上可以知道,核心就是要实现接口。在中书写计算算法。其实上面的图上,算法已经列出来了,只需要写到这个方法即可。0F -> {介绍几个很好用的辅助网站,可以帮我们实现事半功倍的效果。插值器在线查看效果网站曲线效果在线演示网站贝塞尔曲线在线调试easings是一个开源的插值器算法网站,涵盖了各种各样的插值器算法,绝大部分的物理场景都能找到。原创 2021-10-31 19:31:27 · 1740 阅读 · 0 评论 -
视图动画进阶:对Animation进行定义扩展
矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义 [1]。一般单指矩阵乘积时,指的便是一般矩阵乘积。设A为 的矩阵,B为 的矩阵,那么称 的矩阵C为矩阵A与B的乘积,记作 ,其中矩阵C中的第 行第 列元素可以表示为: [1]如下所示:举个例子🌰大家可以思考下下面这个结果是怎么出来的。其实根据上面的公式(A的行xB的列)就不难得到好了,相信矩阵乘法你搞懂了。原创 2021-10-29 23:09:21 · 230 阅读 · 0 评论 -
可能你的EventBus使用并不正确,是时候真正搞懂EventBus了(下)
在上一篇文章中可能你的EventBus使用并不正确,是时候真正搞懂EventBus了(上),我们说了使用apt方式进行优化使用eventbus,并对EventBus#register和EventBus#unRegister方法进行了说明。对这块内容不熟悉的,可以先看下在继续看下面的内容。本节内容将讲解剩下的内容,包括了EventBus#post、粘性事件等。1、EventBus#post(Object event)之前说了,register的时候,会将查找到的添加的注解的方法进行查找,并保存。这节将讲原创 2021-10-25 21:26:42 · 645 阅读 · 0 评论 -
在Android中使用Netty进行通讯,附带服务端代码
NettyNetty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke’s Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebook 和 Instagram 以及流行 开源项目如 Infinispan, HornetQ, Vert.x, Apach原创 2021-10-19 22:24:05 · 1614 阅读 · 6 评论 -
TextView 输入内容中文过滤,InputFilter使用和简单说明
写这篇文章完全是因为同事下午实现的一个功能,功能描述如下:输入框内容如果为空,则不能输入0开始,否则是可以正常输入0,删除0之前的内容之后,0是可以正常展示的。同事使用TextWatcher实现,貌似后面实现了这个功能,但是看了下代码很复杂。之前在阅读TextView源码的时候,看到一个长度过滤LengthInputFilter,于是乎就想到了用InputFilter实现岂不是非常简单。所以就有了下面的两行代码了。inputSearch.filters = arrayOf(InputFilter原创 2021-10-18 20:26:42 · 597 阅读 · 0 评论 -
Android中使用Rabbitmq小记
最近项目中需要使用的小工具,牵扯到后台需要前后台做消息通信,和web端同事简单比较了下,决定使用MQ进行通讯,之前App项目中使用MQTT比较多,对于Rabbitmq只是简单的知道是一个后台经常用到的异步操作队列,当然既然要用,咱也不虚,简单了解了下,很快实现了功能,用起来挺方便的,这里简单作一下笔记。望后端大佬勿喷!~MQ文档地址: https://www.rabbitmq.com/tutorials/tutorial-one-java.htmlAndroid项目中引入Rabbitmq引入项目还是原创 2021-08-25 22:41:41 · 2535 阅读 · 1 评论 -
视图动画概述与使用
scale标签和ScaleAnimation用来实现缩放视图动画属性名称描述控件动画开始时候,在x轴缩放比例,1.0表示自身无变化,0.5表示缩小了1倍,2表示扩大了一倍动画结束时候,相对于控件自身的缩放比例动画开始时候,在y轴相对控件自身的缩放比例动画结束时候,在y轴相对控件自身的缩放比例缩放起始点x轴坐标,支持数值、百分数、百分数p三种格式。(具体介绍见下面介绍)缩放起始点y轴坐标,支持数值、百分数、百分数p三种格式。原创 2021-05-18 00:34:02 · 1303 阅读 · 6 评论 -
实现一个横向无限循环滚动的单行弹幕效果
本期将带领大家实现一个这样的效果,支持无限循环的单行弹幕效果。实现思路分析要实现上面的效果,我们先拆分下实现要素:1、弹幕布局是从屏幕的右侧向左侧滚动,单个弹幕之间的间距是固定的(设计要求)2、弹幕要支持无限滚动,出于性能要求,如果不在屏幕内的,应该移除,不能无限追加到内存里面。拆分完需求要素之后,针对上面的需求要素,做一下思路解答:1、对于滚动和超出屏幕后移除,可以使用动画来实现,动画从屏幕右边开始移动到屏幕左边,监听如果已经动画结束,则remove掉布局。2、无限循环效果,可以.原创 2021-05-13 23:14:26 · 1377 阅读 · 10 评论 -
canvas.drawText理解和FontMetrics文字测量
在ui开发开发中,label文本标签是最长用到的。android中提供了TextView帮我们用来展示文本文字。而android的Canvas也提供了drawText用于帮助我们在自定义view的时候绘制展示文本。先简单看一下这段代码private val paint = Paint(Paint.ANTI_ALIAS_FLAG)init { paint.textSize = 150F paint.style = Paint.Style.FILL_AND_STROKE pain原创 2021-02-18 15:25:55 · 662 阅读 · 0 评论 -
spannablestring和spannablestringbuilder的使用,实现文字高亮、可点击
TextView除了自身的简单文字展示之外,是可以使用Spanned和Html实现很多个性化的功能的,比如一段文字使用中部分文字颜色高亮、支持点击事件。就可以使用Spanned的方式实现。SpannableString一个最基本的用来封装Spanned的封装类,可以用来使用setSpan增加不同的span状态。spannableString.setSpan( ClickSpan(it.content, it.color, it.clickEvent), 0, spannableStrin原创 2021-02-06 19:01:08 · 725 阅读 · 0 评论 -
TextView使用Html适配文字颜色(color:““)、文字大小(font-size:14px)、文字权重(font-weight:500)
TextView使用Html适配文字颜色(color:"")、文字大小(font-size:14px)、文字权重(font-weight:500)TextView中提供了Html类,专门用来方便TextView展示Html格式的内容展示,对于常见的标签都做了简单的适配。目前Html中支持解析如下标签:br 换行p 文本段落标签ul 列表标签,一般和li标签一起使用li 列表标签,一般和ul标签一起使用div 用来区分一块区域span 文本标签,用于处理文本样式strong原创 2021-02-05 16:39:16 · 2087 阅读 · 4 评论 -
获取手机上安装的所有浏览器
获取手机上所有安装的浏览器private fun getBrowserList(context: Context): List<ResolveInfo> { val packageManager = context.packageManager val intent = Intent(Intent.ACTION_VIEW) intent.addCategory(Intent.CATEGORY_BROWSABLE) intent.data = Uri.parse原创 2021-01-22 09:24:10 · 232 阅读 · 0 评论 -
Android动画深入分析
Android的动画可以分为三种: View动画、帧动画、属性动画。其实帧动画也属于View动画,只不过它和平移、旋转等常见的View动画在表现形式上略有不同而已。View动画通过对场景里的对象的不断做图像变换(平移、缩放、旋转、透明度)从而产生动画效果,它是一种渐进式动画,并且View动画支持自定义。帧动画通过顺序播放一系类图像从而产生动画效果,可以简单理解为图片切换动画,很显然,如果图片过多过大原创 2017-09-19 14:27:14 · 425 阅读 · 0 评论 -
Android的线程和线程池
Android中线程按照用途分为主线程和子线程,主线程负责处理和界面相关的事情,子线程则用于执行耗时操作。1、主线程和子线程主线程:主线程是指进程所拥有的线程,在Java中默认情况下一个进程只有一个线程,这个线程就是主线程。主线程只要处理界面交互相关的逻辑。子线程:因为主线程在任何时候都必须有较高的相应速度,否则就会产生一种界面卡顿的感觉,为了保持比较高的相应速度,这就要求主线程中不能执行耗时的任务原创 2017-09-14 19:08:25 · 262 阅读 · 0 评论 -
View的工作原理
1、ViewRoot和DecorViewViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和Decor原创 2017-09-13 16:32:59 · 249 阅读 · 0 评论 -
Http协议通信
文章目录1-1、url组成1-2、tcp三次握手1-3、http特点1-4、常用的状态码1-5、osi七层模型1-6、http1.0与1.1比较1-7、http1.1与http2比较http协议是超文本传输协议,定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。可以一句话简述为:客户端发送请求,服务器返回响应。1-1、url组成protocol 协议,常...原创 2019-02-09 14:01:55 · 3486 阅读 · 0 评论 -
android图片优化
文章目录1-1、什么是oom?1-2、图片oom问题产生1-3、图片占用内存计算1-3-1、尺寸压缩1-3-2、质量压缩1-4、bitmap的内存管理1-1、什么是oom?android系统的进程(app级别)有最大内存限制,超过这个限制系统就会抛出oom错误。1-2、图片oom问题产生一个页面一次性加载过多的图片加载大图片没有进行压缩(尺寸压缩和质量压缩)android列表加载大量...原创 2019-02-09 19:10:31 · 358 阅读 · 0 评论 -
Android开发小知识点汇总 2019\03\04
文章目录1、直接打开qq聊天2、webview打开网页空白或者资源加载问题,以及https处理方案3、toolbar返回按钮以及点击事件1、直接打开qq聊天String url = "mqqwpa://im/chat?chat_type=wpa&uin=你的qq号码";startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url...原创 2019-03-04 23:18:46 · 167 阅读 · 0 评论 -
NestedScrollView + RecyclerView 嵌套产生卡顿处理
在使用NestedScrollView + RecyclerView 嵌套的时候,会出现卡顿情况,大致布局如下,在网上找了处理方式,在此记录下<android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent"...原创 2019-05-06 17:27:50 · 5303 阅读 · 16 评论 -
仿微信多人音视频通话界面
package com.dnaer.android.telephone.widgets;import android.content.Context;import android.os.Build;import android.support.annotation.RequiresApi;import android.util.AttributeSet;import android.u...原创 2019-06-22 22:05:30 · 8488 阅读 · 7 评论 -
Flutter开发中问题汇总贴(持续更新中)
Flutter开发中问题汇总贴(持续更新中)1、网络相关1-1、Android webview出现 ERR_CLEARTEXT_NOT_PERMITTED2、状态刷新相关(state)2-1、 改变dialog内容的状态1、网络相关1-1、Android webview出现 ERR_CLEARTEXT_NOT_PERMITTED解决方案:在Android 的mainfest.xml中的a...原创 2019-06-22 21:52:52 · 239 阅读 · 0 评论 -
android6.0+权限管理
6.0+授权管理,工作中一直在用,但是大部分是直接使用RxPermission, XXPermission等第三方的github三方库,也偷懒没有了解原生实现,今天翻了下文档,发现原生实现也是异常简单,这里mark下,做个备忘部分引用自 《在运行时请求权限》,做了精简,只取了关键解释内容,可以使用下面地址查看原文,自备梯子https://developer.android.com/train...原创 2019-07-16 22:29:29 · 214 阅读 · 0 评论 -
自定义view实现TextView方形输入框
先奉上最终效果图实现思路分析:1、 使用一个LinearLayout用来填充每一个小方格,通过动态添加,实现出需要数量的输入框2、 在LinearLayout上覆盖一层大小和LinearLayout大小完全一致的EditText,用来接口输入信息,设置EditText输入背景和文字为透明,并设置不展示光标,3、 监听EditText的内容变化,和LinearLayout的内容绑定,实现...原创 2019-07-21 11:57:04 · 1703 阅读 · 0 评论 -
自定义方形输入框后续扩展
在之前的文章中有提到自定义自定义方形输入框,效果图可以直接点击进去查看,但是突然设计师觉得方形不好看,灵机一动,修改成了如下这样:当看到这个效果的时候,第一感觉是可以把textview进行一下自定义,但是一想这样岂不是不利于扩展。转念一想,这不是和edittext的效果很像吗?于是乎,翻了下edittext源码,edittext继承自textview,仔细看edittext源码发现,并没有做多...原创 2019-09-19 23:20:08 · 163 阅读 · 0 评论