个人笔记
常利兵
这个作者很懒,什么都没留下…
展开
-
开源框架合集
自定义控件 uCrop SystemBarTint BiliBili弹幕 WheelPicter roundImageView bottomBar pulltoReflush MaterialDialog 工具类相关 RetrofitUtils RxJavaUtils Gson py4j 网页解析 jsoup 内存泄漏检测工具 leakcanary https:/原创 2017-08-06 18:11:47 · 345 阅读 · 0 评论 -
Android进程间通信、线程间通信、组件间通信
一、进程间通信的方式(1)概述 由于应用程序之间不能共享内存。在不同应用程序之间交互数据(跨进程通讯),在Android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content Provid原创 2017-08-03 23:00:40 · 340 阅读 · 0 评论 -
Android多渠道打包
一、Android Studio+gradle的方式打包(一)在androidmanifest.xml中定义mate-data标签 二、第三方服务打包这种方式就是使用第三方的服务,比如360,百度,友盟等,其原理也是通过修改androidManifest.xml中的mate-data标签内容,然后执行N次打包签名的操作实现多渠道打包的。这里就不在做具体解释说明,免得又做广告的嫌疑,O(∩_∩)O哈原创 2017-08-03 23:00:01 · 190 阅读 · 0 评论 -
Touch事件的传递机制
TouchEventTouchEvent 分三种事件:down、move、up。 其中move事件在一个操作中(这里说的一个操作就是用户与屏幕的交互,即由down到up的动作序列)可能会发生多次。 但是,我们认为一个动作序列会包含以上三种事件,因此,在事件处理中就是要处理好这个过程,而最重要的就是down事件,这是一个动作序列的起始,没有down谈不上后面的事件了。 所以,我们把消耗dow原创 2017-08-03 22:59:12 · 305 阅读 · 0 评论 -
安全退出Activity的六种方式
一、容器式建立一个全局容器,每开启一个Activity就在这个容器中添加一个,等到要退出应用的是否,遍历这个容器,推出每个Activity二、广播式每创建一个一个Activity就注册一个广播接收者,当需要退出的时候,就发送一个特定的广播,让所有的Activity结束掉三、进程式通过直接杀死进程来达到退出应用的目的,但是有些国产机可能失效,只能退出部分的Activity(如:小米note)四、RS优原创 2017-08-03 22:58:36 · 3186 阅读 · 0 评论 -
Android常见的图片处理的开源框架
注意:第三方图片处理框架内部都已经封装了LruCatch,用来处理大图的加载,避免了OOM异常,使用了线程池来管理线程,避免了开启多个线程造成的资源的浪费,对于更新UI,内部也已经封装了Handler来进行线程间通信,将数据发送到UI线程来进行更新UI线程1、Glide:默认使用Hurlconnection加载图片,一个比较轻量级的图片加载框架,通过配合图片加载库的使用,可以做出多种图片加载特效:如原创 2017-08-03 22:57:57 · 1608 阅读 · 0 评论 -
Android常见的设计模式
单例设计模式(1)懒汉式 1. package 创建型单例模式懒汉式; 2. 3. /* 4. * 单例模式: 5. * 饿汉式:类一加载就创建对象 6. * 懒汉式:用的时候,才去创建对象 7. * 面试题:单例模式的思想是什么?倾斜一个代码体现 8. * 开发使用:恶汉式(是不会出问题的单例模式) 9.原创 2017-08-03 22:57:08 · 270 阅读 · 0 评论 -
Java与js的互调
原文链接:http://blog.csdn.net/klabcxy36897/article/details/51082296 Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和javascript代码的相互调用。 如何实现 实现Java和js交互十分便捷。通常只需要以下几步。 1.转载 2017-08-07 19:28:00 · 382 阅读 · 0 评论 -
沉浸式状态栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS原创 2017-07-17 20:35:37 · 141 阅读 · 0 评论 -
QQ侧滑删除
QQ侧滑删除需要使用的框架compile “com.daimajia.swipelayout:library:1.2.0@aar”布局文件<?xml version="1.0" encoding="utf-8"?><com.daimajia.swipe.SwipeLayout xmlns:android="http://schemas.android.com/apk/res/android"an原创 2017-06-15 15:17:25 · 358 阅读 · 0 评论 -
仿今日头条订阅频道
仿今日头条订阅频道源码:http://download.csdn.net/detail/qq_32890771/9865071布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://sc原创 2017-06-08 21:22:44 · 441 阅读 · 0 评论 -
Android中常见的优化技术
内存优化(1)避免创建不必要的对象 就像世界上没有免费的午餐,世界上也没有免费的对象。虽然gc为每个线程都建立了临时对象池,可以使创建对象的代价变得小一些,但是分配内存永远都比不分配内存的代价大。如果你在用户界面循环中分配对象内存,就会引发周期性的垃圾回收,用户就会觉得界面像打嗝一样一顿一顿的。所以,除非必要,应尽量避免不必要对象的实例 (2) 静态方法代替虚拟方法(静态方法是使用公共内存空间的原创 2017-08-03 23:01:23 · 394 阅读 · 0 评论 -
Android中常用的第三方框架
Eventbus EventBus的三要素 ● Event:事件,可以是任意类型的对象。 ● Subscriber:事件订阅者,在EventBus3.0之前消息处理的方法只能限定于onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,他们分别代表四种线程模型。而在EventBus3.0之后,事件处理的方法可以随便原创 2017-08-03 23:02:02 · 205 阅读 · 0 评论 -
Handler机制和AsyncTask
一、Handler机制Handler是什么为什么要用Handler Android在设计开发的时候,就封装了一套消息创建、传递、处理机制,如果不遵循这样的机制来更新UI,就会抛出异常信息 Handler、Looper、messagequeue的关系在应用创建时,存在一个ActivityThread线程,在这个线程中会调用PrepareMainLooper,然后调用prepare方法来创建Loop原创 2017-08-03 23:02:35 · 254 阅读 · 0 评论 -
Android5.0 6.0 7.0新特性
原文链接:http://blog.csdn.net/haovip123/article/details/54618642 背景 Android5.0(Android Lollipop)是谷歌公司2014年10月发布的全新安卓系统,至今已经两年多。然而由于国产手机对安卓ROM的深度定制或修改,以及手机厂商、芯片制造商、运营商之间错综复杂的关系,我们更新最新安卓版本往往需要1年左右时间的等待。201原创 2017-08-06 17:05:04 · 719 阅读 · 0 评论 -
AndroidAnnotations框架
官网 https://github.com/androidannotations/androidannotations 如何配置环境视频教程http://www.imooc.com/video/8305下载jar包,添加依赖 @EActivity(R.layout.translate) // Sets content view to R.layout.translate public cla原创 2017-08-06 17:04:29 · 231 阅读 · 0 评论 -
Dagger2的使用
1.解耦原因 • 组合关系:Activity中还有业务的引用 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);原创 2017-08-06 17:04:05 · 183 阅读 · 0 评论 -
MVC和MVP
http://blog.csdn.net/yanbober/article/details/45645115 MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重原创 2017-08-06 17:03:18 · 318 阅读 · 0 评论 -
Android——事务
http://blog.csdn.net/qq_16103331/article/details/50843947设置回滚,当出现异常的时候,让数据回到最初的状态代码分析: 首先调用SQLiteDatabase的beginTransaction()方法来开启一个事务,然后在一个异常捕获的代码块去执行具体的数据库操作,当所有的操作都完成后,调用 setTransactionSuccessful()原创 2017-08-06 17:02:52 · 249 阅读 · 0 评论 -
Android中的Bundle的具体使用
http://txlong-onz.iteye.com/blog/934960】一、API文档说明 1.介绍 用于不同Activity之间的数据传递 1.重要方法 clear():清除此Bundle映射中的所有保存的数据。 clone():克隆当前Bundle containsKey(String key):返回指定key的值 getSt原创 2017-08-06 17:02:28 · 583 阅读 · 0 评论 -
Retrofit的简单使用
http://blog.csdn.net/bitian123/article/details/51899716 官网 https://square.github.io/retrofit/ Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了,其原创 2017-08-06 17:02:03 · 358 阅读 · 0 评论 -
Framework层(应用框架层)
什么是FrameworkFramework层为我们开发应用程序提供了非常多的API,我们通过调用特殊的API构造我们的APP,满足我们业务上的需求。写APP的人都知道,学习Android开发的第一步就是去学习各种各样的API,什么Activity,Service,Notification等。这些都是framework提供给我们的,那么我就详细的讲讲Framework到底在整个Android架构中扮演原创 2017-08-06 17:01:39 · 4186 阅读 · 0 评论 -
增量更新热修复与插件化
增量更新原理: 通过在网上下载差异包,下载下来之后,与旧的APK进行融合,合成新的Apk文件,因此,不需要下载新的完整的APK,节省了用户的流量差异包大小:旧的APK13M,新的APK15M,差异包大于2M左右优点:节省用户流量,节省下载时间 缺点:需要对每个旧的版本生成差异包,比较耗费工作量, 如果用户安装的不是官方版本,那就没有办法使用差分包增量更新工具:http://www.daemon原创 2017-08-13 22:23:07 · 402 阅读 · 0 评论 -
常见的错误码
404表示文件或资源未找到 java WEB常见的错误代码 1、1xx-信息提示:这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx响应。 100-继续。 101-切换协议。 2、2xx-成功:这类状态代码表明服务器成功地接受了客户端请求。 200-确定。客户端请求已成功。 201-已创建。 202-已接受。 203-非权威性信息。 204-无内容。原创 2017-08-03 23:03:00 · 389 阅读 · 0 评论 -
仿淘宝商品列表切换
仿淘宝商品列表切换源码:http://download.csdn.net/detail/qq_32890771/9864526布局文件<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://sch原创 2017-06-08 13:51:12 · 1257 阅读 · 0 评论 -
利用属性动画实现优酷菜单
利用属性动画实现优酷菜单布局文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_原创 2017-06-08 10:40:23 · 252 阅读 · 0 评论 -
使用动画实现10-0的倒计时
利用动画实现10-0的倒计时布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activ原创 2017-05-21 14:55:12 · 385 阅读 · 0 评论 -
StickyListHeaders实现电话本列表效果
StickyListHeaders实现电话本列表效果效果展示https://raw.githubusercontent.com/emilsjolander/StickyListHeaders/master/demo.gif布局文件与listview使用方式一样,可以在布局文件中直接进行使用核心代码oncreat方法在oncreat方法中初始化控件,并为控件设置数据适配器StickyListHead原创 2017-05-27 09:02:22 · 355 阅读 · 0 评论 -
混淆文件列表(后续更新中)
-keep class butterknife.* { ; } -dontwarn butterknife.internal.** -keep class *$$ViewInjector { ; } -keepclasseswithmembernames class * { @butterknife.* ; } -keepclasseswithmembernames clas原创 2017-05-26 10:28:00 · 205 阅读 · 0 评论 -
手机联系人的读取和插入
手机联系人的读取实现步骤① 获取内容解析者ContentResolver resolver = getContentResolver();② 创建UriUri raw_contacts = Uri.parse("content://com.android.contacts/raw_contacts");Uri data = Uri.parse("content://com.android.con原创 2017-05-06 20:53:18 · 219 阅读 · 0 评论 -
短信备份
短信备份短信备份流程① 获取内容解析者ContentResolver resolver = getContentResolver();② 查询短信 Uri uri = Uri.parse("content://sms"); Cursor cursor = resolver.query(uri, new String[]{"address", "date", "body"}, null,原创 2017-05-06 16:43:16 · 348 阅读 · 0 评论 -
内容提供者
内容提供者什么是内容提供者在安卓系统中,各应用之间的数据信息是无法直接传递共享的,因此,系统提供了一个组件,用来把系统私有的数据库暴漏给其他应用使用,这就是内容提供者内容提供者有什么用内容提供者可以将私有的数据库暴漏给其他应用使用,这样不仅方便了资源共享,另一方面也保证了私有数据库的安全内容提供者怎么用①创建内容提供者 (写一个类继承contentprovider 清单文件声明 实现gettyp原创 2017-05-05 21:58:13 · 458 阅读 · 0 评论 -
Startservice与Bindservice的使用
Startservice与Bindservice的使用Startservice① starservice启动服务的特点:可以看作为没有界面的activity,可以进行后台运行,主要的使用场景为wifi下自动更新软件,音乐的后台播放,即时通信软件的消息推送等 ② startservice的使用方法:创建一个类,继承Service并重写里面的生命周期方法 ③ 注意:多次调用startservice时原创 2017-05-04 21:29:07 · 514 阅读 · 0 评论 -
加载大图
加载大图布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"原创 2017-05-10 18:37:43 · 271 阅读 · 0 评论 -
画画板案例
画板案例① 准备一个布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_ma原创 2017-05-10 18:36:42 · 266 阅读 · 0 评论 -
视频播放器
视频播放器准备一个布局文件原创 2017-05-10 18:35:55 · 188 阅读 · 0 评论 -
Xutils笔记
1.Xutils四大功能模块DbUtils模块:可以访问数据库ViewUtils模块:可以通过注解的方式来进行初始化控件和对控件的事件绑定HttpUtils模块:对http网络进行访问BitmapUtils模块:对图片的加载与缓存2.使用Xutils之前,需要添加依赖3.Xutils的使用初始化Xutils(要在oncreate中初始化)原创 2017-04-26 17:33:42 · 366 阅读 · 0 评论 -
下拉展示条目
下拉展示条目布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main原创 2017-05-27 15:41:58 · 223 阅读 · 0 评论 -
自定义可滑动的按钮
自定义实现可滑动的按钮实现逻辑创建一个类继承view类,实现里面的onMeasure() onDraw()方法在 onMeasure() 中需要调用setMeasuredDimension(viewWidth,viewheight),用来绘制按钮的位置区域需要加载按钮的背景和滑块资源 并且转化为bitmap对象获取背景图片的宽和高作为自定义控件的宽和高获取滑块的宽度,用来调整按钮的开和原创 2017-05-27 19:44:38 · 415 阅读 · 0 评论 -
自定义对话框
自定义对话框布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main原创 2017-05-21 12:27:29 · 205 阅读 · 0 评论