- 博客(199)
- 资源 (36)
- 问答 (3)
- 收藏
- 关注
转载 小程序中e.target与e.currentTarget区别详解
在小程序中,e.target与e.currentTarget是非常重要的,尤其是涉及到页面传值时!本节只说两者的区别,关于传值下一节再详细讲解>https://blog.csdn.net/Syleapn/article/details/81290133#comments~下面开始正文啦!!先来大概梳理下逻辑,以便引申与更一步了解target与curentTarget。在小程序中,事件分为2种,冒泡与非冒泡。这不是重点!由于是要理清e.target和e.currentTarget的区别,所以下面
2020-08-14 19:34:40 759
原创 微信小程序事件对象中e.target和e.currentTarget的区别
官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html什么是事件事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如 id, dataset, touches。在小程序的事件回调触发时,会接收一个事件对象,事件对象的参数中包含一个target和currentT
2020-08-14 17:18:53 2008
转载 微信小程序 bindtap与catchtap的区别
1、什么是事件(1) 事件是视图层到逻辑层的通讯方式。(2) 事件可以将用户的行为反馈到逻辑层进行处理。(3) 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。(4) 事件对象可以携带额外信息,如 id,dataset,touches2、如何使用事件(1) 简单来说就是将事件绑定到组件上面,bindtap和catchtap都属于点击事件,绑定了之后点击组件可以触发这个函数。(2) 函数tapName会接受一个参数event,event里面存储了一些函数调用的上下
2020-08-11 15:05:59 1000
原创 Recylerview notifyDataSetChanged 界面图片一闪
Recylerview的item,当数据改变时,我们会调用 notifyDataSetChanged,这个时候列表会刷新,图片会一闪,为了使 url 没变的 ImageView 不重新加载,我们可以用setHasStableIds(true);使用这个,相当于给ImageView加了一个tag,tag不变的话,不用重新加载图片。但是加了这句话,会使得 列表的 数据项 重复!! 我们需要在我们的Adapter里面重写 getItemId就好了。@Overridepublic long getItem
2020-07-07 14:25:09 801
原创 学习String相关知识点的一些总结
**String str1 = new String("A"+"B") ; 会创建多少个对象? String str2 = new String("ABC") + "ABC" ; 会创建多少个对象?**由...
2020-01-15 16:28:41 1647 1
转载 Android内存泄漏分析
内存泄漏指的是程序中不再使用的对象对象由于某些原因无法被正常GC回收。对象没有及时释放,就会占据宝贵的内存空间,因而导致后续分配内存的时候,内存空间不足出现OOM。如果无用对象占据的控件越大,那么可分配的空闲空间就越小,GC会更容易被处罚,而GC时会短暂停止其他线程,因而可能引起卡顿等现象。Java内存分配策略JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线...
2020-01-06 17:32:32 714
转载 64匹马,8个赛道,找出跑得最快的4匹马(面试题详解)
首先,可以将马分为8组,每组各跑一次,然后淘汰掉后四名,这里淘汰后四名是因为只需要跑的最快的四匹马。然后取8次跑的第一名进行比赛,然后淘汰掉后四名所在的组的所有马,因为,后四名所在的组的第一名没有跑过前四名的马,所以可以直接淘汰。这时候还剩下16匹马,此时黄色部分是剩余的马,在这里其实可以继续淘汰,因为D1是第九次的第四名,但D1又是它3所在组的第一名,那么对应的D2,D3,D4都可以继续...
2020-01-02 16:45:55 6114 2
原创 OPPO 设备报错 android.content.res.AssetManager.finalize() timed out after 120 seconds
这是从后台看到的一个错误日志,在一些OPPO 机型会报错 ,如 R9 等。可以看到出错的设备基本是OPPO 的一些设备,推测应该是极光的SDK在部分OPPO设备导致,在极光论坛搜索该错误能找到很多帖子。那么这类问题是怎么出现的呢?有什么解决办法呢?这篇文章为将探索 finalize() timeout 的原因和解决方案,分享我们的踩坑经验,希望对遇到此类问题的开发者有所帮助。在一些大型安...
2019-12-31 10:50:29 2310 1
原创 androidstudio library Module 依赖aar 在主app中提示找不到
在lib module 的 build.gradle 中添加路径repositories { jcenter() flatDir {// dirs 'libs', "../woMaiPush/libs/" // aar目录 dirs 'libs' // aar目录 }然后在主Module 的 build.gradle 中添加...
2019-12-26 16:56:31 1679
原创 OkHttp Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19
Android OkHttp实现HTTPS访问,支持Android 4.X系统HTTPS访问看到这个错误信息Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19,应该是版本的问题,去okhttp查了一下原来是自己没仔细看介绍okhttp的fix分支3.12.x版本,而我项目...
2019-12-23 18:19:06 4038
原创 Base64编码原理
base64Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高...
2019-12-23 17:57:53 708
原创 高性能屏幕适配解决方案
思路:通过计算设计稿上UI的 宽高与实际设备上的宽高,按比例缩放。float scaleX = deviceWidth/standWidth;float scaleY = deviceHeight/standHeight;步骤:1.自定义ViewGroup 重写 onMeasure方法,根据scale比例,重新缩放childview。2. 缩放margin、padding。3. 使用自...
2019-12-09 10:59:07 379
转载 开发中有遇到卡顿问题如何处理?
面试官又来了:你的app卡顿过吗?卡顿是由于主线程有耗时操作,导致View绘制掉帧,屏幕每16毫秒会刷新一次,也就是每秒会刷新60次,人眼能感觉到卡顿的帧率是每秒24帧。所以解决卡顿的办法就是:耗时操作放到子线程、View的层级不能太多、要合理使用include、ViewStub标签等等这些,来保证每秒画24帧以上。卡顿的底层原理是什么?如何理解16毫秒刷新一次?假如界面没有更新操作,Vi...
2019-10-31 11:35:29 1961 1
原创 PermissionsDispatcher使用详解
PermissionsDispatcher是一个基于注解、帮助开发者简单处理Android 6.0系统中的运行时权限的开源库。避免了开发者编写大量繁琐的样板代码。开源地址:https://github.com/permissions-dispatcher/PermissionsDispatcher文档介绍:http://hotchemi.github.io/PermissionsDispatc...
2019-10-12 16:22:29 1116
转载 Android-禁用系统字体缩放
设计师辛辛苦苦做出设计稿,开发人员辛辛苦苦把UI调好了,但是在Android用户修改系统的默认字体大小,原先的设计很容易失效,变得非常难看,考虑你的用户人群,又不想因为用户变更默认字体大小导致app的样式走样,我们可以这么做:1.字体使用dp/dip代替spdp/dip(device independent pixels):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px...
2019-10-12 10:22:51 1672
转载 一种极低成本的Android屏幕适配方式
有些知识可以结合之前的 Android布局和图片使用规范在Android开发中,由于Android碎片化严重,屏幕分辨率千奇百怪,而想要在各种分辨率的设备上显示基本一致的效果,适配成本越来越高。虽然Android官方提供了dp单位来适配,但其在各种奇怪分辨率下表现却不尽如人意,因此下面探索一种简单且低侵入的适配方式。 传统dp适配方式的缺点...
2019-10-11 16:51:57 1057
原创 Android基于DexClassLoader实现热修复
本文简单介绍 热修复的一种实现,插件化原理也可以参考。Android系统中的类加载器Android系统屏蔽了ClassLoader的findClass加载方法,那么它自己的类加载时通过什么样的方式实现的呢?Android系统中有两个类加载器分别为PathClassLoader和DexclassLoader。PathClassLoader和DexClassLoader都是继承与B...
2019-09-26 21:41:28 825 1
原创 Multidex Android DEX手动拆包
分析下tinker 热修复的原理,这里先熟悉一些基本分包的配置如何将你的程序分包?1.在App所属的build.gradle里面android {......defaultConfig {multiDexEnabled true......}}2.在你自定义的Application(这个一般项目里面都有)MultiDex.install(this);//初始化ok.这两...
2019-09-26 11:11:01 763
原创 Android.mk、 Application.mk 、CMakeLists.txt
Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_ARM_MODE := armLOCAL_MODULE := vcLOCAL_SRC_FILES := VideoChat.cpp \ VideoChat_jni.cpp \ ...
2019-09-24 16:03:25 891
转载 Android NDK Cmakelist.txt与Android.mk、Application.mk Makefile 编译配置开发
CMake基本配置与注意事项在android studio 2.2及以上,构建原生库的默认工具是 CMake。CMake的脚本名默认是CMakeLists.txt,cmake最低版本:cmake_minimum_required(VERSION 3.6.0)现在到android studio中使用cmakelist NDK中已经有一部分预构建库 ndk库已经是被配置为cmake搜索路径的一...
2019-09-24 16:00:04 1071
原创 Android NDK开发 Android.mk 转化 CMakeList.txt
编译使用jni有两种构建方式,:CMake:Android studio新的构建方式,Project Path需要选择CMakeList.txt文件路径,jni会按照这个脚本来进行编译,具体脚本的编写看下面。ndk-build:老eclipse的构建方式,也就是Android.mk的形式。编写CMakeList.txt,以及跟Android.mk的对比1.设置需要设置构建jni所需...
2019-09-24 15:47:22 1623
转载 NDK_PROJECT_PATH = null问题分析
之前在运行我的project时并没有出现这个问题,之后突然就在昨天下午运行编译时爆出此类编译错误,让我顿时摸不着头脑。但是经验告诉我遇到Error不要慌,慢慢来。我先仔细阅读它的报错信息,是由NDK_PROJECT_PATH=null引起的ndk编译错误, 我先点击Error:(115) *** Android NDK: Aborting . Stop.这一行,as自动切换到setup-app...
2019-09-24 11:33:37 2596
转载 Android编译libjpeg-turbo so高效压缩图片
首先 建立一个项目 吧那个C++啥的勾上 然后当前Moudlegradle配置apply plugin: 'com.android.application' android {compileSdkVersion 28defaultConfig { applicationId "com.example.a15735.test" minSdkVersion 15 ta...
2019-09-23 16:02:35 2198
转载 Android中图片压缩分析(下)
上篇我们详细介绍了图片质量压缩的相关内容和算法,接下来的下篇给大家介绍一下图片的尺寸压缩和常用的几种尺寸压缩算法。一、Android 尺寸压缩逻辑针对图片尺寸的修改其实就是一个图像重新采样的过程,放大图像称为上采样(upsamping),缩小图像称为下采样(downsampling),这里我们重点讨论下采样。在 Android 中图片重采样提供了两种方法,一种叫做邻近采样(Nearest N...
2019-09-18 11:05:36 527
转载 Android中图片压缩分析(上)
一、前言在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是下采样压缩。前者是在不改变图片尺寸的情况下,改变图片的存储体积,而后者则是降低图像尺寸,达到相同目的。由于本文的篇幅问题,分为上下两篇发布。二、Android 质量压缩逻辑在Android中,对图片进行质量压缩,通常我们的实现方式如下所示:ByteArrayOutputStrea...
2019-09-17 11:44:15 378
原创 cmake学习笔记之add_library、target_link_libraries和link_directories
cmake是Linux(这里默认是Ubuntu系统)下常使用的编译C++的工具,而使用cmake就需要先在CmakeLists.txt文件中对编译规则进行。这里介绍常用的三种指令add_library、target_link_libraries和link_directories,该笔记主要参考了cmake官网给的教程,如有需要请访问以下网址:https://cmake.org/cmake/hel...
2019-09-16 15:58:22 3956
原创 java反射实例化调用
一般当我们无法直接拿到 目标对象,或者方法的时候,可以通过反射来实现调用 //也可以通过反射来调用目标方法 try { Class<?> clazz = Class.forName("com.womai.push.WMPushReceiverUtils"); Method onNotificationOpen...
2019-08-29 15:08:43 749 1
转载 解决华为推送通知栏点击事件onEvent方法不回调的问题
在确认照官方文档配置无误后,仍然收不到onEvent回调的,请看这里:这里有两个Receiver(官方文档只有一个,另一个没有给名字,说什么不建议,但不建议,onPushMsg又不会调用,真是狗血!)。第一个用于接收透传、Token。第二个用于接收通知栏的点击事件。为什么这样设计,我看不懂!(xxx 是包名) <receiver android:name="xxx....
2019-08-28 18:00:01 3290
转载 Android BroadcastReceiver详解
通过广播的方式进行消息传递,其本质是一个全局的监听器,可以监听到各种广播,可以用来实现不同组件之间的通信。广播最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的,通过这样的形式来达到接、收双方的完全解耦合。类别普通广播(Normal Broadcast)有序广播(Ordered Broadcast)粘性广播(Sticky Broadcast)系统广播(Syst...
2019-08-28 17:57:55 684
转载 Android发送权限受限的广播,指定接受方!
本文实践代码是在Android7.1上的系统级源码上验证通过的。1.首先是发送方:在frameworks\base\core\res\AndroidManifest.xml中定义权限<protected-broadcast android:name="intent.action.LOW_MEMORY" /><uses-permission android:name="c...
2019-08-28 17:53:56 1158
转载 Android动态广播添加权限
第一步:自己定义权限,并且使用自定义权限<uses-permission android:name="com.cn.customview.permissions.MY_BROADCAST" /><permission android:name="com.cn.customview.permissions.MY_BROADCAST" android:prote...
2019-08-28 17:50:53 2906 1
原创 简单实现领取进度圆环
/** * 领取进度 * @author * @date 2019-3-5 * * 1先初始化 2setNewColor 3setStaticProgressNum/setDynamicProgressNum 设置进度 */public class CircleBarView extends View { /** * 绘制前景圆弧的画笔 */ ...
2019-08-20 18:02:12 379 1
原创 用Path简单实现圆角ImageView
public class RooundImageView extends android.support.v7.widget.AppCompatImageView { private Paint paint; private int radius = 5; private Paint paint2; public RooundImageView(Context ...
2019-08-20 16:44:07 2578
转载 Path常用方法
Path类中提供了一套xxxTo方法,其作用是从起点到终点移动path画笔并绘制线(moveTo方法只移动path画笔不绘制线),线有直线和曲线。方法汇总如下表所示:lineTo(float x, float y)绘制直线x:终点x坐标值y:终点y坐标值moveTo(float x, float y)移动画笔x:终点x坐标值y:终点y坐标值arcTo(RectF oval,...
2019-08-20 11:19:40 3280
转载 Android热修复技术原理详解(最新最全版本)
https://www.cnblogs.com/popfisher/p/8543973.html本文框架什么是热修复?热修复框架分类热修复框架分类技术原理及特点Tinker框架解析各框架对比图总结什么是热修复正常开发流程热修复开发流程热修复优势修复什么?二、热修复框架分类简单分类更合理的分类三、技术原理及特点3.1 阿里Dexposed – n...
2019-08-16 10:52:16 271
原创 Android Runtime (ART) 和 Dalvik
Android Runtime (ART) 是 Android 上的应用和部分系统服务使用的托管式运行时。ART 及其前身 Dalvik 最初是专为 Android 项目打造的。作为运行时的 ART 可执行 Dalvik 可执行文件并遵循 Dex 字节码规范。ART 和 Dalvik 是运行 Dex 字节码的兼容运行时,因此针对 Dalvik 开发的应用也能在 ART 环境中运作。不过,Dalv...
2019-08-13 10:48:41 1121
原创 Java中的序列化和反序列化
对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;从字节流创建对象的相反的过程称为反序列化。而创建的字节流是与平台无关的,在一个平台上序列化的对象可以在不同的平台上反序列化。如何使Java类可序列化?通过实现java.io.Serializable接口,可以在Java类中启用可序列化。它是一个标记接口,意味着它不包含任何方法或字段,仅用于标...
2019-08-12 14:13:54 464 1
原创 ArrayList中elementData为什么被transient修饰
https://blog.csdn.net/zero__007/article/details/52166306Java的ArrayList中,定义了一个数组elementData用来装载对象的,具体定义如下:/** * The array buffer into which the elements of the ArrayList are stored. * The capacity ...
2019-08-08 17:30:56 1148
原创 java正则表达式的忽略大小写的匹配
java正则表达式的忽略大小写(?i)abc 表示abc都忽略大小写a(?i)bc 表示bc忽略大小写a((?i)b)c 表示只有b忽略大小写“要匹配的内容”.matches("(?i)匹配规则")
2019-08-05 14:16:43 5018
原创 OkHttp系列——使用教程
OkHttp是一个默认高效的HTTP客户端: - HTTP/2支持允许对同一主机的所有请求共享一个套接字。 - 连接池减少了请求延迟。 - 透明GZIP压缩下载大小。 - 响应缓存完全避免了网络重复请求。
2019-07-04 09:20:28 2941
React-Native进阶_7.TextInput实现搜索功能
2017-08-03
Android一分钟打900个包
2016-04-20
直播客户端(类似yy直播)
2015-07-07
手势识别切换界面(activity)
2015-05-23
仿惠锁屏 侧滑解锁 屏蔽home按键
2014-12-11
android 闹钟实现原理
2014-12-03
网易新闻客户端框架 slidingmenu 侧滑 仿360手机助手
2014-05-13
Graphics API 示例
2018-05-09
ReactNative Navigation路由传递数据到下一个页面
2017-08-01
ys studio 中.gradle如何配置相对路径
2016-08-22
ys studio 中.gradle如何配置相对路径
2016-08-22
导入 Glide工程 报错如下
2016-06-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人