Android
文章平均质量分 73
KWMax
Android/跨端/iOS
展开
-
Webview+AppbarLayout上下滑动冲突
当AppBarLayout和Webview共同使用时,会出现一个问题,AppBarLayout无法折叠了,Webview只能在较小的固定区域内上下滑动,可以理解为两者上下滑动冲突了。原创 2022-09-03 16:27:48 · 1314 阅读 · 1 评论 -
Webview+Viewpager左右滑动冲突
在开发场景中,经常需要Viewpager+Fragment嵌套滑动页面。然而若某个Fragment为webview,且webview中存在轮播图或者其他滑动控件,则会出现Webview内容无法左右滑动的问题。原创 2022-09-03 15:35:13 · 2038 阅读 · 2 评论 -
Android TextView显示不全问题
场景在写布局UI的时候,LinearLayout下水平方向有ImageView和Textview。ImageView固定尺寸,TextView设置了maxLines和ellipsize属性。运行发现,textview内容较多时,会有显示不全的问题。原因分析LinearLayout父容器下,左侧的ImageVIew控件设置了高度,xml默认情况下一行。此时图片控件高度较高,视图绘制时就固定了该父布局的高度。当页面加载数据时,文字超出一行,LinearLayout不会重新绘制把高度变大,所以原创 2021-06-24 11:59:01 · 5210 阅读 · 0 评论 -
Android进阶:RecyclerView中DiffUtil的使用
一、概述DiffUtil是support-v7:24.2.0中的新工具类,它用来比较两个数据集,寻找出旧数据集-》新数据集的最小变化量。说到数据集,相信大家知道它是和谁相关的了,就是我的最爱,RecyclerView。就我使用的这几天来看,它最大的用处就是在RecyclerView刷新时,不再无脑mAdapter.notifyDataSetChanged()。以前无脑mAdapter.notifyDataSetChanged()有两个缺点:不会触发RecyclerView的动画(删除、新增、位移转载 2021-05-23 00:39:43 · 3662 阅读 · 1 评论 -
Android进阶:Protocol Buffer协议的使用
一、背景说起数据交互协议,相信大家最熟悉的就是xml和json了,尤其是json,广泛应用于web项目和移动端项目中。其实,还有一种协议,Protocol Buffer,简称Protobuf,得益于它的一些特性,越来越多的公司在开发中使用Protobuf代替json。二、简介1、概念Protobuf,在官网(https://developers.google.com/protocol-buffers)上的定义描述是:Protocol buffers are Google’s language-n原创 2021-05-22 14:09:32 · 1189 阅读 · 2 评论 -
Android:富文本中ReplacementSpan绘制隐藏bug
概述近日碰到一个有趣的bug。具体情况是:通过HTML.fromHtml的方式给TextView设置富文本内容。通过TagHandler.handleTag方法,处理自定义标签。在文本中插入一个自定义ReplacementSpan。然而,当我的自定义span的宽度变化时,存在一个临界值,会使得该自定义ReplacementSpan有时绘制不出来。(正常应该如第二个图所示)原因我在tagHandler中使用了空格占位,替换自定义spanoutput.append(" ");output.se原创 2020-12-20 13:35:07 · 712 阅读 · 0 评论 -
Android:软键盘
软键盘显示1、WindowSoftInputMode九种状态(6+3)(控制软键盘显示还是隐藏)stateUnspecified:默认状态。不指定软键盘显示还是隐藏,将由系统选择合适的状态。stateUnchanged:保留状态。当前界面的软键盘状态,取决于上一个界面的软键盘状态。stateHidden:隐藏状态。向前导航到当前页面时隐藏软键盘。stateVisible:显示软键盘。向前导航到当前页面时显示软键盘。上个页面返回时不显示。stateAlwaysHidden:始终隐藏软键盘 。向前原创 2020-10-12 20:17:06 · 710 阅读 · 1 评论 -
Android Aop编程
一、OOP与AOP作为Android开发者,相信大家对OOP(面向对象编程)不陌生。OOP面向对象编程思想,更习惯于将业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而AOP,面向切面编程则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。举个栗子,在日常开发中,我们经常需要判断手机网络...原创 2019-09-22 21:23:30 · 149 阅读 · 0 评论 -
Android Handler全使用
一、前言在开发中,我们常常使用 Handler 处理线程间异步通信。子线程无法更新UI,可以通过handler讲UI更新切换到主线程中执行。什么是handler呢?handler是一套Android异步通信机制,或者说消息传递机制。它的主要作用便是在多线程场景中,实现工作线程对UI的更新操作,从而实现异步通信。为什么要用handler呢?因为在android开发中,只有主线...原创 2019-09-10 22:18:44 · 224 阅读 · 0 评论 -
Android 接入微信分享
一、准备工作微信开放平台注册账号 ->微信开放平台创建应用,按要求填写应用信息(这里注意应用包签名,用debug包签名得到的appid只能debug包使用,release同理)通过审核后拿到appID:二、集成1、build.gradle文件中添加依赖android{ ... buildTypes{ debug{ ...原创 2019-05-08 19:03:02 · 2153 阅读 · 2 评论 -
Android 极光推送快速接入
一、关于极光推送官网:极光推送JPush 是一个大规模 App 推送平台,开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台,同时支持多种消息形式:通知,自定义消息,富媒体和本地通知。二、创建应用注册账号,在 控制台 按...原创 2019-06-02 00:22:13 · 2640 阅读 · 0 评论 -
Android Genymotion使用中文输入法
最近使用genymotion需要输入中文,发现genymotion本身是不支持中文输入法的。这里给出一种解决方案:1、本地下载好 必应搜索输入法的apk文件(其他的谷歌拼音、搜狗输入法等会出现无法安装或使用的情况,必应输入法亲测可用)(下载链接:https://dl.pconline.com.cn/download/356394.html)2、启动模拟器,直接将上面下载好的apk文件拖...原创 2019-07-27 16:45:02 · 853 阅读 · 2 评论 -
Android 接入Fabric
一、前言应用版本迭代过程中,经常需要收集应用的使用信息。异常记录和崩溃日志呢,可以接入bugly,解决你大部分需要。不过,在下面两个问题上,bugly就稍显不足了:App本身经常需要混淆加固,导致上传的bug信息都是混淆之后的,无法清晰定位问题所在。 不发生异常崩溃时无日志。而除去异常信息收集,应用一般都一些业务的埋点需要,需要收集某些使用过程的日志。而这,fabric能满足...原创 2019-08-24 23:33:42 · 1026 阅读 · 0 评论 -
ConstraintLayout约束布局详解
最近,看了郭神和鸿神关于ConstrainLayout的博客,写得很优秀,故模仿着也写下了这篇。一、ConstraintLayout概述ConstraintLayout, 即约束布局, 是Google在去年的I/O大会上重点宣传的一个功能。从支持力度而言, 将成为主流布局样式, 代替其他布局, 减少布局的层级, 优化渲染性能. 在新版Android Studio中, ConstraintLayou...原创 2018-07-04 16:53:05 · 12386 阅读 · 0 评论 -
Android开发之传感器(加速度传感器、方向传感器)
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(Bas...原创 2018-07-16 10:57:06 · 11054 阅读 · 0 评论 -
Android 获取activity栈中activity
方法1:<!--获取Activity任务栈 权限--><uses-permission android:name="android.permission.GET_TASKS" />// 获取activity任务栈ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIV...转载 2018-08-31 11:00:55 · 16316 阅读 · 0 评论 -
Android开发:关闭某个指定activity
转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0629/8124.html前言最近项目中涉及需要在一个Activity中关闭另一个Activity或者在一个Activity中关闭多个Activity的需求,不涉及到应用的退出。自己首先想了一些方案,同时也查了一些方案,就各个方案比较下优劣。方案一:广播这个...转载 2018-08-31 18:44:02 · 8333 阅读 · 1 评论 -
Android常见内存问题及优化
一、内存泄漏1、单例导致内存泄漏单例模式在Android开发中会经常用到,但是如果使用不当就会导致内存泄露。因为单例的静态特性使得它的生命周期同应用的生命周期一样长,如果一个对象已经没有用处了,但是单例还持有它的引用,那么在整个应用程序的生命周期它都不能正常被回收,从而导致内存泄露。public class AppSettings { private static AppS...转载 2018-09-03 19:04:14 · 970 阅读 · 0 评论 -
Android 字体设置
转自:https://www.cnblogs.com/bluestorm/p/3654626.html 1.android Typeface使用TTF字体文件设置字体我们可以在程序中放入ttf字体文件,在程序中使用Typeface设置字体。第一步,在assets目录下新建fonts目录,把ttf字体文件放到这。第二步,程序中调用:AssetManager mgr=getAss...转载 2018-12-04 15:45:05 · 523 阅读 · 0 评论 -
Android 蓝牙连接
一、概述蓝牙是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换。最多可以同时和7个其它蓝牙设备建立连接,进行通信。蓝牙可分为两大类:传统蓝牙(蓝牙3.0规范之前),低功耗蓝牙(蓝牙4.0规范之后)。Android 从4.3版本(API Level 18)开始支持低功耗蓝牙Bluetooth Low Energy(BLE)通信。Android提供了相应的 API,...原创 2019-05-01 18:06:32 · 13654 阅读 · 2 评论 -
Android 蓝牙打印指令
一、概述目前打印打印机支持的无线打印方式一般为wifi和蓝牙。蓝牙打印关于蓝牙连接部分请查看上篇文章 ->Android 蓝牙连接,本篇文章讨论Android中蓝牙打印的指令实现。蓝牙打印机的种类繁多,支持的打印格式也不尽相同。按照指令集划分,主要可分为:ESC指令集、CPCL指令集。大部分热敏打印机使用的ESC指令集。部分支持CPCL指令集。二、ESC指令指令一...原创 2019-05-04 02:44:19 · 5548 阅读 · 3 评论 -
Android 反射
一、什么是反射反射,即Reflection,通常是指程序可以访问、检测和修改它本身状态或行为的一种能力。具体说来,是在运行状态时,对于任意一个类或对象,能够知道和操作它的任意方法和属性。需要注意的是,反射是一种非常规手段,反射有风险,应用需谨慎。二、为什么要用反射为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念:静态编译:在编译时确定类型,...原创 2019-08-24 18:46:33 · 678 阅读 · 0 评论 -
FlexboxLayout使用和各属性说明
一、FlexboxLayout简介FlexboxLayout 是Github上针对 Android 平台的,实现类似 Flexbox 布局方案的一个开源项目。地址:开源地址:https://github.com/google/flexbox-layout 特点是灵活,可以简单、快捷的实现复杂布局。二、使用方式项目中添加依赖:implementation 'com.google.android:fl...原创 2018-07-03 15:55:37 · 5327 阅读 · 0 评论