自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Flutter跨平台方案的选择

1.Flutter是什么?官方给的解释是Flutter is Google’sUI toolkit for building beautiful,natively compiled applications for mobile, web,anddesktop from a single codebase.翻译:Flutter 是谷歌的 UI 工具包,用于构建美观、本机编译的移动、网络和应用程序来自单个代码库的桌面。2.flutter的特点美观、快速、高效、开放。2.1 美观:使用Flutt

2021-10-24 16:43:16 2312

原创 RN项目笔记(四)使用react-native-sound,IOS声音出不来

使用react-native-sound插件,在ios上运行声音出不来,但在android上却能正常出声音,

2021-09-18 09:36:37 716

原创 RN项目笔记(三)滑块验证码的实现

这篇文章承接着上一篇文章,要实现的效果如下:

2021-08-11 19:04:33 732

原创 RN项目笔记(二)ImageEditor裁剪base64图片填坑

一.需求分析现在很多APP都有这样一个需求:在一个大图片里拖动小滑块,使小滑块能填充吻合到大图上去。为了减少一个图片的HTTP请求,往往会把图片编码成base64的格式,(将一张图片数据编码成一串字符串,使用该字符串代替图片地址)。为了增加安全性,于是请求服务器时返回来的是一张打乱了的base64格式的图片,前端自己重组图片。于是我想到的重组思路:1.1 先将大图片(200100)剪裁成20等分的小图片(2050);1.2 根据后台提供的规则进行重组。二.遇到问题在做项目过程中,遇到了一个问题——

2021-07-10 19:59:24 673

原创 React Native项目笔记(一)

入职一家新的公司,上班第一天就是把开发环境搭建好,然后给SVN地址把RN项目获取下来。代码下载后很可能报各种错,运行不起来。要么跟环境配置有关,要么是还需要进行一些初始化配置。下面记录的是我的RN项目,希望对大家有帮助。一、RN(0.60.4版本)项目运行步骤:1.如果获取下来的代码,存在node_modules文件夹,那么先删除旧的node_modules文件夹;打开终端(选择对应项目),项目根目录下输入:npm install2.不需要npm link了!因为0.60+以上的版本会自动link

2021-05-13 18:36:54 344 4

原创 Android Handler引起的内存泄漏+汇总

1.Handler 引起的内存泄漏Handler是Andorid给我们提供的一套UI更新机制,同时它也是一套消息处理机制。使用Handler消息处理机制在多个线程并发更新UI的同时 ,可以保证线程安全。先看看下图:出现了一大片黄色警告,what?怎么回事的。黄色警告的大概意思:Handler可能会内存泄漏,推荐使用静态内部类+实例化弱引用。在使用Handler时如果直接使用匿名内部类的方式创建Handler对象ide会发出警告,提示内存泄漏风险。上图的Handler正是通过内部类创建的,它可能会

2021-02-01 12:04:08 779 2

原创 Android 沉浸式状态栏及View滑动渐变效果与启发

先看看Demo效果图:如Demo所示,当向上滑动列表时,顶部的View颜色发生了渐变,从半透明变成了不透明,以及顶部View的布局与状态栏融合在了一起。要实现上面的这个效果大致是:1.设置状态栏透明或者半透明 。2.监听列表的滑动距离来控制View背景色的渐变。1.沉浸式状态栏(状态栏透明设置)1.1 第一种方法:可以通过直接修改状态栏的属性,必须在Android5.0以上才支持,也就是api21,所以要创建一个资源文件夹,命名为:values-v21,然后在该文件夹下新建styles.xml文件,

2021-01-02 16:50:07 2959 8

原创 Android 中MVC,MVP,MVVM三者框架对比介绍

1.什么是MVC应用框架MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。1.1数据关系(1) View 接受用户交互请求(2) View 将请求转交给Controller(3) Controller 操作Model进行数据更新(4) 数据更新之后Model通知View更新

2020-12-16 11:51:17 4156 18

原创 Android 详解自定义简洁大方的Dialog

在android开发中常常会出现用户手机系统版本不同,导致默认的弹窗样式也会不同;或者是系统弹窗跟UI设计的界面风格不搭的现象,这时候就需要我们自定义弹窗风格样式,才能做到弹窗统一,画风和谐效果。现在我们就来学习如何自定义Dialog弹窗。先看看自定义Dialog的效果图:如何实现简洁大方Dialog?1.新建一个dialog_layout.xml布局,如下图:可以看到Button按钮的背景是白色的并带有圆角,这个效果可以让美工提供背景图片,也可以用shape绘制。1.1在drawable下新

2020-12-10 11:24:30 444 5

原创 Android如何与H5的混合开发实战篇

现在的开发趋势都是混合开发,整个APP界面不只是用安卓原生代码来搭建,还用到了网页,绝大多数的电商类APP比如:淘宝,美团,京东等等。商品列表页用安卓原生代码写的,详情页用网页 ,安卓代码就要跟网页的JavaScript代码进行交互。像这样原生嵌套网页,彼此间传递数据就是属于混合开发。安卓代码如何与网页的JavaScript代码进行通信为了更直观,更生动的演示效果。先做点准备工作。1.安装Tmocat服务器用于模拟网络请求,获取服务端数据,以及部署网页让APP去加载该网页1.1登录Apache T

2020-11-27 14:12:58 3162 4

原创 Android 实现HTTPS自签名证书(非常详细)

1.HTTP协议与HTTPS协议简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。区别主要如下:1.https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。Https的优点:1.认证用户和服务器,确保数据发送到正确的客户机和服务器 。(验证证书)2.加密

2020-11-12 14:42:48 12614 21

原创 Android 集成支付的四部曲

下图是支付宝支付的四个步骤,其他的第三方平台支付流程大同小异下图调起支付宝支付的android代码:今天的分享结束了,再见~

2020-11-06 00:03:20 1845 5

原创 Android 中的热修复

什么热修复?就是已经发布的APP发现有bug,需要修复(资源修复,代码修复,so库修复),但又不想重新发布安装包,通过让用户下载补丁文件的方式解决。热修复的优势无需重新发布安装包;用户无感知修复,无需下载最新的应用,节省用户流量;修复成功率高,避免线上bug带来的业务损失,把损失降到最低。热修复中的不足所有的热修复框架不能保证100%修复成功,只能说bug的修复是相对的,如下图的四个热修复框架都各有所长各有不足:比如阿里的AndFix不支持资源文件的替换(包括xml布局,图片,清单文件等),

2020-10-29 01:20:25 1736 8

原创 Android 如何实现增量更新

什么是增量更新?现在的APP安装包体积越来越大,几百兆甚至上G的,当版本更新时不再是消耗大量的流量下载一个完整安装包,而是消耗相对很少的流量下载一个增量包(差分包),采用谷歌Smart App Updates更新机制,就能实现APP的更新了。用户手机上已经安装着某个APP,然后只需下载一个增量包,手机上的APP和增量包合并生成完整的新APP,并引导用户安装,这个过程就是增量更新。很多APP都采用了谷歌Smart App Updates更新机制,例如 :微信,支付宝,Play商店,豌豆荚等等。谷歌官方称

2020-10-22 00:41:46 3587 5

原创 了解Android Studio中的Gradle

Gradle是啥?gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。所谓的构建过程就是:编译,测试,依赖管理,打包,部署。以前我们开发是手动导入jar包的,类似于面向过程,一步一步来,缺什么包就导什么包,很麻烦,容易出错,jar包版本还不统一,需要关心jar包与jar包之间的依赖。通过采用gradle的构建方式,只需通过complie xxxxx引入一个jar包,然后这个jar包所依赖的其他jar包gradle会自动帮引入,无需关心jar包与jar包之间的依赖

2020-10-13 00:54:55 2694 11

原创 Android EventBus以及观察者模式

观察者模式简单介绍观察者模式又被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。这种模式应用广泛,例如在Android中:1.Android系统内容提供者 ,内容观察者就采用了这种观察者模式。2.RecyClerView和ListView的 Adapter就采用了观察者模式。3. 当两个界面想同时观察下载进度的话,可以采用观察者模式来解耦。实现步骤1.定义一个观察者接口

2020-10-10 01:01:28 1090

原创 App Store与苹果签名

App Store:是苹果应用商店,是下载苹果应用最正规的渠道,打开App Store里面有大量的免费与付费软件可供下载。苹果签名:开发了ipa包,发现不能在ios系统上安装使用,那是因为还没签名,未经过审核,是不允许安装的,想安装就需要苹果签名。苹果签名分三种:个人签名、开发者账号、企业签名。想要ios的ipa包能像android的apk包一样,能在任意一台安卓手机上都能按装运行,方法一:提交你的.ipa到App Store,填写相关的上架资料,苹果商店那边会审核,通过审核了,才算上架成功。任何一

2020-09-30 13:03:44 4055 3

原创 Android DataBinding 高级用法总结

DataBinding快速上手,布局细节:1.< data>…< /data>标签内可以有多个 import 标签。你可以在布局文件中像使用 Java 一样导入引用。2.当类名发生冲突时,可以使用 alias,像这样:< data><import type=“com.wenzhibin.View”alias=“myView”/>< /data>3.< data>…< /data>标签内可以有任意数量的 var

2020-09-28 03:55:25 2071

原创 Android DataBinding 快速上手

Data Binding顾名思义就是数据绑定,2015年谷歌I/O大会上发布了DataBinding,它是一个数据绑定框架,是一种对MVVM的实现,MVVM模式就相当于把 MVC模式中的 C 层换成了VM也就是 ViewModel 层。ViewModel紧紧用来显示数据的,对于复杂的数据业务逻辑不处理,所以更偏向于View。Data Binding中使用到了ViewModel,它会把ViewModel绑定到 XML文件中,保证View中的数值来源都是来自ViewModel,降低布局和逻辑的耦合性,使代码逻辑

2020-09-19 00:40:21 2524

原创 IOS快速打包的配置流程

前提:准备好已经付费的苹果开发者账号(一般情况下公司会提供好给你)1.前往开发者中心添加链接描述 登录.2.打开mac电脑的钥匙串 生成证书签名请求文件 保存到桌面3.创建证书点击继续,选择文件,把刚创建好的证书签名请求上传点击继续,上传完成后,下载证书,并双击安装4.下载个PP助手,插入苹果手机复制设备标识5.添加设备(最多添加100台),填入刚复制好的设备标识,方便进行真机调式6.打开xcode,添加开发者账户先点击1,再点击2,xcode会去下载,同步证书,

2020-09-12 23:56:41 554

原创 未付费的/已付费的 苹果开发者申请iOS证书打包介绍

抽空整理一下,方便你我他,哈哈哈哈!先认识下开发者账号类型功能,如下图:上面都是付费的,那么开发者账号能不能打出IPA包上传到App Store呢?答案是可以的!要下载安装iOS上架辅助软件Appuploader。上架App Store审核分7步进行。1、安装iOS上架辅助软件Appuploader2、申请iOS发布证书(p12)3、申请iOS发布描述文件(mobileprovision)4、打包ipa5、上传ipa到iTunes Connect6、TestFlight方式安装到苹果手机

2020-09-10 14:26:36 891 4

原创 带你通俗理解HTTPS

https:指的是在http层又加了一个SSL/TLS协议,要求服务器端跟客户端在传递数据的时候必须是加密后的数据,而且加密算法要绝对的安全。https传输速度要比http慢,但是为了数据安全考虑,必须牺牲一些性能。https是采用非对称加密跟对称加密混合的方式。第一步:先去证书颁发机构获取公钥(证书),根据公钥生成对应私钥(证书),私钥放在服务器,客户端向服务器发起请求时会先获取公钥回来,这一步就是非对称加密;第二步:客户端产生随机秘钥,公钥对随机秘钥进行对称加密(RSA),把用公钥加密后的随机密钥

2020-09-09 00:59:52 1992

原创 Android 抽象类、抽象方法、接口以及Kotlin中的抽象类、抽象方法、接口

一、Android 抽象类、抽象方法抽象方法:类的成员方法,只有声明,没有实现,把实现交给子类。抽象类:含有抽象方法的类。1.有抽象方法的类一定是抽象类,但抽象类里可以没有抽象方法(当然也可以抽象方法+一般方法);2.抽象类里可以构造方法,但当其他类继承(extends)时,子类必须用super() 继承父类的构造方法;3.抽象类一旦被继承,抽象方法在子类必须全部实现(没有abstract修饰),但是当子类也为抽象类时,父类的抽象方法可以不用实现或者部分实现;4.抽象类不能被实例(new 对象

2020-09-06 00:49:54 789

原创 Android 正则表达式的用法

正则表达式及应用一、 正则表达式(一)、概念:正则表达式(regular expression)就是由普通字符(例如a到z)以及特殊字符(称为元字符)组成的一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。(二)、正则表达式中主要元字符:【其中常用的元字符用红色标出,红色的元字符必须掌握。难点用蓝色标出,难点在一般的应用中并不常用】\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,‘n’

2020-09-04 01:39:50 2503

原创 Android Bitmap二次采样

Bitmap二次采样一、二次采样:(一)、意义或目的:1、用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更少的内存空间来存储。BitmapFactory.decodeFile(imageFile);2、BitmapFactory.Options.inSampleSize:设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误。3、BitmapFactory.Options提供了另一个成员inJ

2020-09-03 00:53:08 343 1

原创 Android中常用英文单词

Android常用英文词汇ANR (Application Not Response )bundle 捆,entire 整个的,完整的lifetime 生命周期entire lifetime 完整生命周期visible lifetime 可见生命周期foreground lifetime 前沿生命周期initiate 开始,创建,初始化 vtSerializable 序列化, 可串行化的adj.serialize 连载,使连续 vtschedule 安排,计划vt 时间表n

2020-09-02 00:10:27 1763

原创 Android IOS 视频直播利用第三方SDK实现

SDK服务选择目前有很多做直播云的服务平台:腾讯云、阿里云、网易云信、七牛云、金山云、声网、即构科技,总的来说,腾讯云直播,七牛云,金山云更偏向于娱乐性的直播,网易云信是基于他的IM系统,而阿里云偏向服务器CDN,声网更擅长多对多音视频聊天,即构科技连麦技术最强大。可以根据自己的需要做选择。直播基本原理Push推流也就是直播端,用于采集视频信息上传,处理等。Pull拉流用户实时播放直播的视频源服务端提供视频的存储,码流的处理,压缩等。一般使用用第三方的服务。下面将以阿里云为例阿里云播

2020-09-01 00:42:41 4461

原创 Android 百度地图的简单使用

百度地图一、基本概念:(一)、百度地图:百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据, 构建功能丰富、交互性强的地图类应用程序。百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制。您需申请密钥(key)后, 才可使用百度地图Android SDK。(二)、LBS:(Location based Ser

2020-08-31 01:30:25 1349

原创 IOS Xcode中Assets.xcassets的使用和优缺点

Xcode中Assets.xcassets是干嘛用的?简单来说,Assets.xcassets是Xcode提供的一个图像资源管理工具。1.方便app图标和启动页图片设置2.展现1X,2X,3X图片简练3.支持多种图片格式(PS: APP图标和启动图只支持png,其他地方支持多种格式;读取图片时不需要写后缀,直接写图片名)4.支持PDF格式的矢量图5.图片只支持[UIImage imageNamed]的方式实例化,但是不能从Bundle中加载6.不能根据路径读取图片,因为图片会被打包在Asse

2020-08-30 16:01:49 1730

原创 Android 自定义View与ViewGroup

自定义View与ViewGroup一、概述:(一)、View和ViewGroup的职责1、ViewGroup的职责是什么?ViewGroup相当于一个放置View的容器,在写布局xml的时候,会告诉容器(凡是以layout开头的属性,都是为用于告诉容器),容器宽度(layout_width)、高度(layout_height)、对齐方式(layout_gravity),还有margin等。因此ViewGroup的职能为:给childView计算出建议的宽和高和测量模式 ,决定childView的位置

2020-08-30 05:51:36 332

原创 Android 事件的分发和消费机制

一、简介 :  Activity或View类的onTouchEvent()回调函数会接收到touch事件。一个完整的手势是从ACTION_DOWN开始,到ACTION_UP结束。简单的情况下,我们只需要在onTouchEvent()中写个switch case语句,处理各种事件(Touch Down、 Touch Move、 Touch Up等),但是比较复杂的动作就需要更多的处理了。ViewGroup作为一个parent是可以截获传向它的child的touch事件的。如果一个ViewGroup

2020-08-29 18:04:38 388

原创 IOS AFN一套操作网络的第三方框架

AFN框架的特点:NSURLConnection iOS2.0之后就有NSURLSession iOS7.0之后才有默认支持序列化和反序列化json,xml需要自己解析优秀的错误处理机制封装了Reachability(判断网络连接情况)支持HTTPSGET演示POST演示Serialization序列化...

2020-08-28 22:25:46 232

原创 IOS JSON序列化和反序列化

上传文件的时候,有时候希望传递一些附加信息给服务器,这个时候可以在上传文件的同时再post过去这些附加信息例如:上传照片的时候给图片添加图片的作者、名称、描述、地理位置等信息发微博的时候上传图片,还要附带 微博内容、作者、地理位置等信息JSON序列化字典或数组转换成二进制的json形式的字符串一般准备给服务器发送数据的时候做此操作JSON反序列化二进制形式的json字符串 转换成 字典或数组一般从服务器接收到数据做此操作...

2020-08-28 22:22:30 421

原创 Android IOS开发要理解何为面向对象的思维

何为面向对象的思维?面向对象 VS面向过程OOP =》面向对象,全称Object Oriented ProgrammingPOP =》面向过程,全称Process-oriented programming1、通俗的理解:有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择:1)自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。(即面向过程)=》更符合电脑的思维2)去饭店,张开嘴:老板!来一份鱼香肉丝!(面向对象) =》更符合人类的思维2、深入理解面向过程是具体化的,流

2020-08-28 22:20:11 239 1

原创 Android中什么是Dex文件

在明白什么是Dex文件之前,要先了解一下JVM,Dalvik和ART。JVM是JAVA虚拟机,使用运行JAVA字节码程序。Dalvik是Google设计的用于Android平台的运行时环境,适合移动环境ART即Android Runtime,是Google为了替换Dalvik设计的新Android运行时环境,在Android 4.4启动。ART比Dalvik的性能更好。Android程序一般使用Java语言开发,但是Dalvik虚拟机并不支持直接执行JAVA字节码,因此要进行编译生成的.class文件进行翻

2020-08-28 22:19:10 2865

空空如也

空空如也

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

TA关注的人

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