- 博客(49)
- 资源 (36)
- 收藏
- 关注
原创 手写简单的【观察者模式】
1、创建回调接口public interface IObserver { void onResult(String result);}2、创建调度中心public class Observer { private Observer() { } private static class SingleTon { static Observer INSTANCE = new Observer(); } public stat
2020-10-27 17:52:20
8657
原创 Android插件化方案实践
插件化概述1、插件化和组件化的区别组件化是将一个app拆分为多个模块进行协作开发,每个模块都是一个单独的组件,这些组件可以相互依赖,也可以单独调试运行。但是最终发布的时候,这些组件会合并在一起,组成一个整体的apk,这就是组件化开发。插件化开发和组件化是有所不同的,插件化开发就是将一个app拆分成多个模块,但是每一个模块都是一个apk,最终打包的时候将宿主apk和插件apk分开打包,独立分发。宿主apk发布到市场,插件apk通过动态下发到手机存储空间,然后进行插装操作,宿主apk就能够加载..
2020-07-27 10:18:59
5812
2
原创 移动端的架构演变
一、架构设计目的通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合,这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续的测试以及定位问题。对于不同量级的工程,具体架构的实现方式必然是不同的,所以对于移动端来说,逐渐演变出MCV、MVP、MVVM三种结构模式。二、MVC架构模式 图1 单向通信1、工作模块View(视图):...
2020-07-24 16:49:24
4848
原创 WebView调用微信H5支付
相关文章:okhttp3.0忽略https证书好长时间没有写博客了,感觉自己颓废了不少,这也取决于移动端逐渐趋于稳定的原因,随着自己公司业务的不断扩大,还是会遇到种种问题,最近手上一个需要是app内H5进行微信支付,所以就着手搞一搞。一、微信支付已经开放出了H5支付的场景,但是微信的目的是在浏览器中直接进行微信支付,所以手机浏览器对微信H5支付支持的是很好的,但是他的文档说不建议在app中
2017-12-07 13:14:44
45805
13
原创 Glide3.0加载https图片
相关文章:okhttp3.0忽略https证书在上一节说到的是用okhttp如何忽略证书来访问https请求,但是访问是可以访问了,但是图片却加载不出来,这是什么原因
2017-07-06 11:22:44
11090
1
原创 Android提示BOM错误排查
今天遇到了一个很奇葩的问题,Android程序一直运行良好,今天再发新版本的时候进行打包发布,但事打包的时候提示了一个错误,看一下截图:这是什么鬼?ByteOrderMark?百度了一下,BOM是微软了一个编码方式,但是跟我有鸟关系啊,并且程序提示的错误是在一个Bean的实体类中,如下:难道是后台大神给我传的json字符串有问题?给我的json字符串的编码有问题?前后台联调
2017-04-18 11:17:35
2252
原创 Android分包那些事(突破65535)
公司的项目又是一个阶段性的完成,又到了总结项目经验的时候了,最近我并没啥可总结的,就是遇到了一个65535的问题,还是记录一下吧。一、说道65535,网上的解决方案很多,但是再多,也不如自己亲身经历一把,最近我就遇到了,下面来看一下报的错误:我看了很久没看明白这是啥意思(不好意思,我的英语很垃圾),看表面应该是RxJava的问题吧,但是这不应该的,抽了一颗烟,考虑了许久,还是没看出
2017-04-13 18:35:44
5669
原创 Retrofit踩坑之Delete请求
来到一家新的公司,时间直接不够用了,版本出的飞起,很长时间没总结自己最近学到的东西了(其实也没学什么)!公司的后台是一个搞php的大兄弟,我们进行对接。在对接的过程中,鄙人不才,一般都是用的POST和GET的请求居多,确实对DELETE请求接触不多,这次后台的大兄弟就直接让我提交DELETE请求来进行实体的删除操作。那就来呗,不就是和POST差不多嘛,代码如下:@DELETE("bean/
2017-03-02 18:41:18
21236
5
原创 GreenDao3.0使用详解
随着移动端的业务量的增大和用户体验的提高,SQLite的需求很明显了,大大小小的项目几乎成了必备,用我们项目经理的话来说:1、不用管他什么数据,为了体验,先缓存一下!2、什么?网络不好导致的?看什么,缓存啊!!!真不知道他是在哪里听到的这个词,唉!在他看来,缓存是如此简单的一件事情,当然,缓存其实并不难,就是有点麻烦而已!之前我一直是用Realm,目前Realm被人称为移动端的
2017-01-04 10:47:13
23527
2
原创 WebView启动支付宝客户端支付失败的解决办法
目前在做一个用App加载H5网页,然后在网页中调起支付宝客户端支付,蚂蚁金服的开发文档上明确写有支付宝支持手机网站支付,所以那就集成呗,但是做完之后出现了一个问题,不知道是不是Android端集成出现了细节问题,然后再使用支付的时候,支付宝客户端具有一定的失败率,所以失败了只能采用收银台支付,虽然可以实现支付,但是体验方面还是达不到公司的要求。在支付宝官网上我们可以看到这个界面他说
2017-01-02 12:00:43
22209
3
原创 Retrofit在客户端保持Cookie(服务器的Token验证)
移动端项目和网站还是多多少少的区别的,拿这个用户登陆过期验证这个流程来说吧,一般的网站是不会做处理的,他们访问的时候会自动验证Cookie的有效期的,移动端这样处理就不行的,他是不会保存Cookie的,所以我们在做项目的时候,一般来说,服务器的哥们都会在登陆成功之后给你返回一个叫做Token的东西,其实就是验证授权,这样,你用移动端每一次网络请求都把这个Token当做公共参数传递给服务器,这时候服
2016-12-10 14:24:07
12562
3
原创 android下拉刷新和listview冲突解决方案
常见的下拉刷新都是带有一些自定义的listview、gridview和webview,我们导包直接用就行了,但是为什么他们要自定义一些常用的控件呢?直接在外边套用不行吗?类似于SwipeLayout,他是在ViewGroup的层面上动刀,可以嵌套任何的组件的,那么我们先去看一个效果你就知道了。效果图:我之前用的都是封装库,没有在吗碰到过这总情况,但是自己写了一个下拉刷新之后
2016-12-10 09:51:27
2999
原创 RxJava的封装和研究
对于RxJava,现在有大量的博客来讲解,但是学会了RxJava不代表它好用,得适当的封装一下,达到我们的开发要求。RxAndroid的常规用法:API.Retrofit().getListInfo(params) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(n
2016-11-28 17:39:49
7705
原创 WebView详解一:打造优雅的WebView
一、使用WebView并不需要开通网络权限 WebView可以加载本地Html文件和加载网络的Url路径,对其都有很好的支持二、Xml使用<WebView android:id="@+id/blog_detail_webview" android:layout_width="fill_parent" android:layout_height="wrap
2016-11-23 17:09:34
7648
原创 WabView详解二:Android与JS交互的实现过程
在类似于电商平台的APP中,有时候涉及到复杂的逻辑,我们有必要来在我们的APP中内嵌一些H5页面,但是内嵌并不是代表我们什么也不管了,有时候我们需要在H5中来调起Android原生控件,这就需要使用Android与JS交互进行数据通信。先看一下效果图:底部为白色的是WebView,页面上只写了一个Button用来和Android端通信,点击页面上的Button,Android端会接
2016-11-23 11:40:06
3202
翻译 仿IOS效果-ToggleButton
因为有了Studio的Jcenter,我们在开发中集成某个功能会简单了很多,分享一个小的UI特效,仿IOS的开关按钮,看效果;第一步:引入依赖:compile 'com.zcw:togglebutton-library:1.0.0'第二步:设置自定义布局<com.zcw.togglebutton.ToggleButton android:id="@+id/to
2016-11-21 16:25:50
3555
翻译 android图片预览功能-缩放、平移
有一种效果你值得拥有,像ViewPager预览图片集的功能是各个APP上都会用到的,这里提供一个好用的封装的控件,先看效果:
2016-11-15 11:45:59
6411
1
原创 Retrofit多文件上传
说到网络框架,从入门级别的android-async-http->Volley->Okhttp->Retrofit+RxJava,之前我比较钟情于android-async-http,使用简单暴力,后来Google在API中移除掉了HttpClient的相关的支持,我又大力使用Okhttp。第一眼看Retrofit的感觉是:哼,啥玩意啊,如果变换一个参数,起码改两个地方,看起来不灵活,难用,但
2016-11-13 21:28:54
34825
4
原创 Android麦克风录音的实现
最近公司有一个业务,就是通过IM发送音频,我用的是环信的第三方,自定义发送音频,写了一个录音的demo,录制完成之后发送。这个Demo测试之后感觉还不错,分享一下。一、添加权限:二、XML文件(三个按钮)<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" a
2016-11-12 08:56:10
6196
1
原创 下拉刷新?我看好MaterialRefreshLayout!
谈一谈下拉刷新下拉刷新不再是很高大上的东西了,Android应用必不可少的一个存在,大部分的下拉刷新都是基于基本组件的如:ListView,GridView之类的,不同的组件用的布局是不一样的,虽然功能强大,但是难免切换来切换去会烦。Google考虑到这一点,在V4的包中给我们提供了一个简单且牛逼的组件库就是SwipeLayout。SwipeLayout是从ViewGroup的层面上动刀,
2016-11-05 16:43:27
5713
原创 Android链式结构封装
相关文章:《Okttp3.0简单的二次回调封装》在java面向对象语言中,一贯喜欢采用函数式编程,把一个复杂的逻辑分解成几个函数来相互调用来达到自己的业务逻辑,一直用过okhttp的盼望能够有不知道有没有对okhttp的链式结构感兴趣呢?今天没事,试着写了一下。拿我们最熟悉的AsyncHttpClient这个网络请求框架做例子:一、AsyncHttpClient的常规用法Async
2016-11-04 10:40:16
4318
原创 Android闪光灯实现
今天接到了一个面试的通知,面试的题目是15分钟实现一个手机闪光灯的效果具体的代码如下:一、声明闪光灯的权限 二、具体的代码如下:package com.google.yang.myapplication;import android.hardware.Camera;import android.hardware.Camera.Parameters;import a
2016-10-27 15:17:34
8153
1
原创 项目解耦必备-EventBus3.0的简单讲解
相关文章:《项目解耦必备-EventBus的详细讲解(一)》EventBus3.0出来很长时间了,但是我还是想写一下,当作自己的笔录Gradle引入:compile 'de.greenrobot:eventbus:3.0.0-beta1'EventBus2.0使用是这样的:public void onEvent(MessageEvent event) { log(e
2016-10-12 15:19:22
929
原创 BottomSheetDialog的简单实用
在开发过程中有很多的地方是需要到底部弹出的Dialog的,开源的东西也很多,这里Google也为我们封装好了一个从底部弹出的Dialog样式,使用很方便,不需要再自定义了。因为BottomSheetDialog是MD风格的,所以我们需要先引用一下SupportDesign的库第一步:Gradle引用compile 'com.android.support:design:24.2.0
2016-10-08 12:09:40
2607
翻译 一秒集成 省市区三级联动选择器-CityPickerView
第一步:Gradle引用compile'liji.library.dev:citypickerview:0.1.0'第二步:代码示例CityPickerView cityPickerView = new CityPickerView(MainActivity.this);cityPickerView.setOnCityItemClickListener(new CityPic
2016-10-08 11:33:45
8311
原创 AlertDialog和Toast那点事
Dialog和Toast开发Android的程序员来说肯定是不陌生的,这个平时我们会经常用到的,经过我的研究发现了一点小的技巧,知道的朋友勿喷!一、Dialog 来说一下Dialog的基本用法,相信大家经常使用了: AlertDialog.Builder mAlertDialog = new AlertDialog.Builder(MainActivity.this);
2016-07-29 15:27:01
2229
原创 Android自定义View二(加载进度动画)
关于自定义View,打算一直写一个系列,把整个流程自己也梳理一遍,和一些朋友一起从零学起。相关文章:《Android自定义View(一)(Paint和Canvas的基本使用)》昨天公司让写一个关于百分比进度条,我一贯的尿性,开始网上看一些开源的控件,但是发现,尼玛代码太长了吧,写的好啰嗦啊,算了,自己写一个吧,于是开始陷入深深的思考之中,写出来之后和大家分享一下这个
2016-07-06 15:36:47
1104
原创 自定义Toast样式
好长时间没写博客了,刚换个新工作没几天,今天公司小组要求写一个自定义的Toast,工作交给我了,其实并不难,几分钟搞定,把代码发出来当做记录一下把。废话不多说,上效果:结构目录:代码解析:1、toast.xml布局很简单就是一个ImageView和TextView横向排列,不解释:<LinearLayout xmlns:android="http://sche
2016-06-16 12:47:55
16577
原创 onActivityResult的各种"坑"
最近写了一个东西,其中需要用到Activity的回传值的问题,当时没有用消息总线,也就是EventBus,只是用了startActivityForResult() 和 onActivityResult() 方法来传递或接收参数,谁知道遇到了各种坑,下面给大家分享一下。一、执行了startActivityForResult()方法之后,第二个Activity还没有做任何操作,onActivity
2016-05-16 16:42:40
2174
原创 RecycleView+CardView实现卡片式列表(附带Item回调监听)
自从Google的Material Design风格的出现,一直都Android开发程序员的追捧,我也比例外,没事也喜欢研究研究Google的这种设计,没事喜欢写点Demo测试一下效果,今天给大家带来的是RecycleView和CardView结合使用实现的卡片式列表布局,其中回调封装了RecycleView的Item的点击事件。大家都知道,RecyclerView注重的不是布局,而是回收与复
2016-05-12 15:50:31
6963
原创 Android图片压缩
好长时间没写博客了,最近忙着毕业的事。其实我一直想写一篇关于图片压缩的博客,写博客其实也是为了整理一下自己学过的知识和思路作为记录。Android的图片压缩不仅是在移动开发中是难点,在任何语言中处理起来都不是特别简单。一般来说分为两种:尺寸压缩和质量压缩,这两种是最常见的,在APP开发过程中图片上传最是很常见的了,现在市面上的手机像素都非常高,比如Vivo手机一张图片差不多得15M左右,这对于
2016-05-10 12:44:26
2271
原创 Android自定义View(一)(Paint和Canvas的基本使用)
Android开发中自定义视图是走向高手的必经之路,如何绘制漂亮的图形呢,让我们一起走进Android绘图的世界想要自定义视图,第一步就是Paint和Canvas的基本使用,下面让我们来一起学习绘图中画笔和画布的基本使用。一、Paint属性 setAntiAlias: 设置画笔的锯齿效果。 setColor: 设置画笔颜色 setARGB: 设置画笔的a,r,p,
2016-04-28 23:05:14
1203
原创 Android调用WebService详解
我们在Android开发中,需要掌握的不仅仅是http的请求方式,有时候我们还需要去调用服务器端的Web Services,Web Services到底是什么东西的?怎么来用呢?因为项目需要,所以花了一个晚上的时间研究了一下,下面把学到的给大家分享出来。一、Web Services在很久之前就有了,所以他并不是一个新鲜的东西。Web Services是建立在通用协议的基础之上,如HTTP、SO
2016-04-25 20:48:19
5706
转载 项目解耦必备-EventBus的详细讲解(二)
相关文章:《项目解耦必备-EventBus的详细讲解(一)》《EventBus使用详解(二)——EventBus使用进阶》 请尊重原创在项目解耦必备-EventBus的详细讲解(一)文章中我们只解释了EventBus的onEventMainThread()订阅函数的用法,但是其实还有三个方法我们没有说,下面就详细说一下其他的三个函数是什么意思。在Eve
2016-04-21 15:07:25
834
转载 Android属性动画Interpolator(插值器)
本篇文章转载于点击打开链接,请尊重原创Interpolatort通常在动画中使用,主要来改变动画变化率。常用的有下面几种Interpolator,下面图文解说下:AccelerateDecelerateInterpolator开始与结束的地方速率改变比较慢,在中间的时候加速AccelerateInterpolator开始的地方速率改变比较慢,然后开始
2016-04-20 10:44:52
1513
原创 Android属性动画使用详解
我们平常用到的大多数都是传统动画,简单的平移、旋转、透明度等动画效果,但是这种传统的动画有一个致命的缺点,就是不是真正意义上的改变了属性,而是效果出现了,属性没有变化。举个例子,你平移一个按钮,在按钮上加一个点击事件,那么等按钮平移完了之后,点击事件的响应其实还是在原地的,你点击它平移之后的地方是没有响应的。Google也考虑了这一点,所以在在3.0之后加入了一个属性动画的概念,让我们一起领略一下
2016-04-20 10:07:28
1648
科大讯飞demo(语音识别精简版)
2017-05-19
EventBus.jar
2016-03-23
别说你很懂电脑
2015-08-18
activity之间跳转的华丽效果
2015-08-13
android安全机制解析与应用实践
2015-06-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人