自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编程之美

观千剑而后识器,操千曲而后晓声20130816

  • 博客(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 ListView 实现带标题的列表

React-Native ListView 实现带标题的列表

2017-08-13

RN ScrollView 实现轮播图效果

使用RN 的Scrollview 实现轮播图效果

2017-08-09

React-Native进阶_7.TextInput实现搜索功能

前面使用TabBar 实现了底部tab标签,通过stackNavigator 实现了页面跳转,接下来,使用TextInput 来实现一个搜索功能。 TextInput 属性比较多,不一一介绍,具体可以百度搜索或者结合源码。

2017-08-03

ReactNative 之Navigation路由

react-native-navigation 导航控制器

2017-07-31

React-Native 实现点击Tab标签切换Tab页面

React-Native tabbar 的简单使用

2017-07-29

Android一分钟打900个包

http://blog.csdn.net/u011733020/article/details/51175635 多渠道打包,主要是为了统计不同的渠道上包的下载数量,渠道越多,我们需要打的包数量越多,这个时候,我们没法去使用单纯的手动打包去一个一个的生成不同的渠道包,我们需要更高效的打包方式。

2016-04-20

蓝贝壳儿批量打包

多渠道打包工具,Eclipse 打包插件

2016-04-17

退出Activity

Android 滑动退出Activity

2016-03-08

滑动退出Activity Demo

Android 滑动退出Activity

2016-03-08

微博官方Demo

微博 Android 分享 登录 sdk Demo

2016-01-21

QQ官方Demo

QQ 官方移动开发 sdk demo

2016-01-21

微信官方Demo

微信登录 分享的官方Demo

2016-01-21

Handler机制

分析下Handler的工作原理,争取让我们能对Handler的理解更深刻,透彻。能真正理解Handler的作用、Handler的工作原理。

2015-11-04

Touch事件分发

原文地址:http://blog.csdn.net/u011733020/article/details/49452109 分析 分发机制

2015-10-30

Touch事件分发机制

Android Touch事件的分发响应机制的Demo

2015-10-30

asm手机投影

使用asm.jar将Android手机屏幕投影到电脑

2015-10-21

自ToastDemo

自己定义的toast 类型

2015-10-19

Android 多线程断点下载Demo

Android多线程下载Demo,支持断点下载. 这个是Android Studio 版本!

2015-07-20

Android shape 属性

http://blog.csdn.net/u011733020/article/details/46804817 shape 属性介绍

2015-07-08

直播客户端(类似yy直播)

文章地址:http://blog.csdn.net/u011733020/article/details/46786471 公司项目 是一款综合视频社交应用,类似于 YY 直播客户端,可以聊天也可以 看直播。内含多种支付方式,易宝 支付宝 银联 等等,提供出来 大家一起学习、

2015-07-07

手势识别切换界面(activity)

android 手势 左右滑动实现页面切换 from : http://blog.csdn.net/u011733020/article/details/45922843

2015-05-23

仿惠锁屏 侧滑解锁 屏蔽home按键

项目 分析 :http://blog.csdn.net/u011733020/article/details/41863861 遇到 bug 欢迎指正。3q

2014-12-11

仿微信 滑动 开关

原文地址http://blog.csdn.net/u011733020/article/details/41700175

2014-12-03

android 闹钟实现原理

原文地址 http://blog.csdn.net/u011733020/article/details/41699319 android 闹钟实现原理 AlarmManager

2014-12-03

asmack 源码

asmack 源码包

2014-05-14

网易新闻客户端框架 slidingmenu 侧滑 仿360手机助手

仿照360手机助手,网易新闻客户端 实现 侧滑, 主界面viewpager切换 的 基于slidingmenu的小demo

2014-05-13

MarqueTextView

跑马灯效果MarqueTextView textview 循环 跑马灯效果

2014-05-11

安卓异步httpclient

开源 httpclient 直接封装,更方便,不需要自己创建httpclient 时的繁琐设置参数,post get 都可以

2014-05-07

asmack即时聊天

android 实现 xmpp协议,基于asmack包,简单例子

2014-05-06

Notification80.rar

android 8.0 通知栏Notification适配、

2019-11-06

AspectJ 文档

Aop框架AspectJ 的语法介绍JPoint Pointcut Signature

2019-02-19

Graphics API 示例

自定义组件开发二 Graphics API Graphics是Android SDK 中的一个包含一系列绘图相关的api的包,本文介绍并使用常用的绘图方法。

2018-05-09

MVP模式的理解

MVP模式的理解MVP模式的理解http://blog.csdn.net/u011733020/article/details/78559369

2017-11-17

MVP模式Demo

MVP模式的理解http://blog.csdn.net/u011733020/article/details/78559369

2017-11-17

RN调用 Android 原生Toast 模块

RN调用 Android 原生Toast 模块

2017-08-24

ReactNative Navigation路由传递数据到下一个页面

接着上面 Navigation 继续学习传递数据给下一个页面 onPress={() => this.props.navigation.navigate('Detail',{info:movie.title,movie:movie})} 这样,跳转到详情页,可以传递 电影标题 movie.title 和电影对象 movie 在 MovieDetail 页面中 可以拿到这些数据 this.props.navigation.state.params.movie 就可以拿到  电影对象 movie 接下来拿到电影信息,再去请求数据,展示在电影详情页,这里展示一下电影简介

2017-08-01

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除