- 博客(34)
- 资源 (6)
- 收藏
- 关注

原创 Android 文章目录
基础:Activity 生命周期两三事Activity 启动模式序列化 Serializable 和 ParcelableView 事件传递View 绘制流程动画基础设计模式:单例模式建造者模式观察者模式代理模式进阶:解决65535限制优化:Android
2018-01-06 22:59:54
286
转载 Emoji表情符号录入MySQL数据库报错的解决方案
java MySQL插入Emoji表情符号数据,会出现 Incorrect string value: ‘\xF0\x9F\x92\x8BTi…’错误 Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for 产生原因分析: 普通的字符串或者表情都是占位3个...
2018-06-28 10:49:34
525
转载 Android 动画基础
一 传统 View 动画(Tween/Frame)1.1 Tween 动画主要有 4 中:缩放、平移、渐变、旋转文件位置: res/anim/filename.xml编译资源的数据类型:an Animation资源引用:Java: R.anim.filenameXML: @[package:]anim/filename <set xm
2018-01-09 09:26:31
1802
转载 Glide 源码分析
###1. 功能介绍图片加载框架,相对于UniversalImageLoader,Picasso,它还支持video,Gif,SVG格式,支持缩略图请求,旨在打造更好的列表图片滑动体验。Glide有生命周期的概念(主要是对请求进行pause,resume,clear),而且其生命周期与Activity/Fragment的生命周期绑定,支持Volley,OkHttp,并提供了相应的integra
2018-01-09 09:25:20
2276
转载 EventBus 源码解析
1. 功能介绍1.1 EventBusEventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递,这里的事件可以理解为消息,本文中统一称为事件。事件传递既可用于 Android 四大组件间通讯,也可以用户异步线程和主线程间通讯等等。传统的事件传递方式包括:Handler、BroadCastReceiver、Interfac
2018-01-08 16:14:17
243
转载 Java 动态代理
1. 相关概念1.1 代理在某些情况下,我们不希望或是不能直接访问对象 A,而是通过访问一个中介对象 B,由 B 去访问 A 达成目的,这种方式我们就称为代理。这里对象 A 所属类我们称为委托类,也称为被代理类,对象 B 所属类称为代理类。代理优点有:隐藏委托类的实现解耦,不改变委托类代码情况下做一些额外处理,比如添加初始判断及其他公共操作根据程序运行前代理
2018-01-08 16:11:45
234
原创 依赖注入
1. 依赖如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。例如下面类 Human 中用到一个 Father 对象,我们就说类 Human 对类 Father 有一个依赖。public class Human { ... Father father; ... public Human() {
2018-01-08 16:07:06
219
转载 Android View 绘制流程
View 绘制机制1. View 树的绘图流程当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图
2018-01-08 15:59:46
374
转载 Android View 事件传递
1、基础知识(1) 所有 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多指触摸)等。(2) 事件类型分为 ACTION_DOWN, ACTION_UP, ACTION_MOVE, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_CANCEL,每个事件都是以 ACTI
2018-01-08 15:56:16
285
转载 Java 反射 Reflection
1. 了解 Java 中的反射1.1 什么是 Java 的反射Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这种能力在框架开发中尤为重要。 有些情况
2018-01-08 15:51:37
152
转载 Volley 源码解析
1. 功能介绍1.1. VolleyVolley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。名字由来:a burst or emission of many things or a large amount at once发布演讲时候的配图从名字由来和配图中无数急促的火箭可以
2018-01-08 15:43:41
222
转载 Java 注解 Annotation
不少开源库都用到了注解的方式来简化代码提高开发效率。本文简单介绍下 Annotation 示例、概念及作用、分类、自定义、解析,并对几个 Android 开源库 Annotation 原理进行简析。1. Annotation 示例Override Annotation@Overridepublic void onCreate(Bundle savedInstanceSta
2018-01-08 15:25:21
191
转载 Android Data Binding 框架
来源 https://github.com/LyndonChin/MasteringAndroidDataBinding本教程是跟着 Data Binding Guide 学习过程中得出的一些实践经验,同时修改了官方教程的一些错误,每一个知识点都有对应的源码,争取做到实践与理论相结合。Data Binding 解决了 Android UI 编程中的一个痛点,官方原生支持
2018-01-08 14:39:35
300
原创 Android 序列化 Serializable 和 Parcelable
什么是序列化序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您
2018-01-08 09:38:28
285
原创 Android UI层的三种框架模式-MVC、MVP、MVVM
MVCMVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。调用关系数据关系View 接受用户交互请求View 将请求转交给ControllerController 操作Model进行数据更新数据更新之后,Model通知View更新数据变化View 更新变化数
2018-01-07 21:18:32
2079
转载 Android 设计模式 之 代理模式
代理模式介绍代理模式(Proxy Pattern)也称为委托模式,是结构型设计模式的一种,代理模式在各类开发中运用的相当广泛,不论是j2ee,android还是ios,都能看到它的身影,所以说设计模式无处不在。代理模式的定义:为其他对象提供一种代理以控制这个对象的访问。通俗一点:找别人做你想做但是做不了的事情。代理模式的UML类图,如图:角色介绍:
2018-01-07 14:12:01
271
转载 Android 设计模式 之 观察者模式
观察者模式介绍观察者模式是一个使用率非常高的模式,它最常用的地方就是GUI系统、订阅–发布系统。因为这个模式的一个重要作用就是解耦,将观察者和被观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。观察者模式的定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态时,则所有依赖于它的对象都会得到通知并且自动更新。观察者模式的UML类图,如图角色介绍
2018-01-07 14:08:42
225
转载 Android 设计模式 之 建造者模式
一 Builder模式介绍及使用场景Builder模式是一步一步创建一个复杂对象的创建者模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。因为一个复杂的对象有很多大量组成部分,如汽车,有车轮、方向盘、发动机,还有各种小零件,如何将这件部件装配成一辆汽车,这个装配过程很漫长,也很
2018-01-07 13:03:19
206
转载 Android 设计模式 之 单例模式
一 单例模式介绍及它的使用场景单例模式是应用最广的模式,也是我最先知道的一种设计模式,在深入了解单例模式之前,每当遇到如:getInstance()这样的创建实例的代码时,我都会把它当做一种单例模式的实现。其实经常使用的图片加载框架ImageLoader的实例创建就是使用了单例模式,因为这个ImageLoader中含有线程池、缓存系统、网络请求,很消耗资源,不应该创建多个对象,这时候就需要
2018-01-07 12:50:30
199
原创 Activity 启动模式
启动 Activity 分为 显示调用和隐式调用。显示调用需要明确地指定被启动对象的组件信息,包括包名和类名,而隐式调用则不需要明确指定组件信息。Activity的LaunchMode4种启动模式:standard、singleTop、singleTask、singleInstance1、standard 标准模式:每次启动一个Activity都会重新创建一个新的实例,
2018-01-06 21:41:18
241
原创 Activity 生命周期两三事
典型情况下的生命周期Activity生命周期基本切换过程,如图需要说明的是:1、当用户再次回到原 Activity 时,回调如下:onRestart -> onStart -> onResume2、从Activity A 启动 Activity B,如果 B 是透明主题,A 的 onStop 不会回调场景:假设当前Activity为A,如果这时用户打开一个新Ac
2018-01-06 21:36:33
292
转载 Java 泛型
什么是泛型《Java 核心技术》中对泛型的定义是:“泛型” 意味着编写的代码可以被不同类型的对象所重用。可见泛型的提出是为了编写重用性更好的代码。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 比如常见的集合类 LinkedList:public class LinkedList extends AbstractSequent
2018-01-05 17:57:14
220
原创 自定义控件:垂直轮播的小贴士Banner,仿 淘宝app的“淘宝头条”
VerticalBanner现在很多App都有2行的文章小贴士功能,垂直方向轮播展示 文章标题。效果图使用方法Gradle配置1. 在project的build.gradle添加如下代码allprojects { repositories { ... maven { url "https://jitpa
2017-11-22 20:53:04
927
原创 自定义ViewPager,可垂直、水平滑动,支持循环展示
该控件支持水平、竖直方向滑动,并可循环展示。垂直滑动效果图使用方法Gradle配置1. 在project的build.gradle添加如下代码allprojects { repositories { ... maven { url "https://jitpack.io" }
2017-11-21 19:37:07
1277
原创 Android 引入Airbnb Lottie框架后,报错Error inflating class com.airbnb.lottie.LottieAnimationView
依赖Lottie 后compile 'com.airbnb.android:lottie:2.0.0-beta4'添加LottieAnimationView控件<com.airbnb.lottie.LottieAnimationView android:id="@+id/animation_view" android:layout_width="wrap_content
2017-11-16 04:15:19
5036
1
原创 Android Studio 使用config.gradle 管理依赖库
在project根目录下创建一个config.gradle,将一些配置信息及第三方依赖统一管理。ext { android = [ compileSdkVersion : 25, buildToolsVersion : "26.0.2", applicationId : "c
2017-11-15 15:39:58
1430
转载 Android 解决65535的限制
原因剖析:在Android系统中,一个App的所有代码都在一个Dex文件里面。Dex是一个类似Jar的存储了多有Java编译字节码的归档文件。因为Android系统使用Dalvik虚拟机,所以需要把使用Java Compiler编译之后的class文件转换成Dalvik能够执行的class文件。这里需要强调的是,Dex和Jar一样是一个归档文件,里面仍然是Java代码对应的字节码文件。当And
2017-11-09 17:58:32
549
原创 Android Studio 3.0 升级 配置修改详解
更新完Android Stuido 3.0 稳定版之后,打开项目会收到如下提醒谷歌强烈建议我们更新Android Gradle Plugin 3.0 和 Gradle 4.1,所以我就习惯性的点击了Update。 结果……导致了一系列的修改。1、Flavor Dimensions 配置项目中用了多渠道,3.0之前配置多渠道:productFlavors配置
2017-11-01 18:33:34
20567
2
原创 Error:Execution failed for task ':app:compileDebugJavaWithJavac' 根本解决方法
碰到这个异常,很懵逼查找了各种解决方案,都不对症。最后发现,造成这种异常的原因有很多。具体的还是要去终端编译,查看到底是什么地方出错了,然后具体问题具体分析。终端进入项目的根目录,然后输入命令./gradlew compileDebugJavaWithJavac --stacktrace最终定位到错误警告: 无法找到类型
2017-10-31 19:19:44
21978
原创 Mac安装Tensorflow,运行项目报错: module compiled against API version 0xa but this version of numpy is 0x9
1、安装Tensorflow$ sudo easy_install pip$ sudo easy_install --upgrade six$ sudo pip install tensorflow当前最新的tensorflow版本1.2.12、创建第一个Tensorflow项目 Hello World运行报错:module compiled against
2017-08-09 19:10:46
11571
原创 Android Universal Image Loader 显示圆角图片,CenterCrop失效
Android Universal Image Loader是当前使用比较多的图片加载工具类,可以非常好的“一站式”解决图片下载、压缩、存储、缓存、显示等问题。并且提供 自定义显示图片的接口类BitmapDisplayer,可以自定义图片展示样式。不过,如果你要展示圆角图片,会发现图片的scaleType失效了,图片拉伸失真。原来,圆角图片RoundedBitmapDi
2017-06-21 11:40:33
1663
原创 GestureDetector源码分析
/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * Yo
2015-06-02 17:45:43
948
原创 Android-下拉框,利用AlertDialog来实现
利用Spinner可以实现下拉框,效果如下其实完全可以用AlertDialog来实现。AlertDialog有一个方法:public AlertDialog.Builder setAdapter (ListAdapter adapter, DialogInterface.OnClickListener listener) 可以很自然的联想到,左边是对应的list数据a
2012-10-19 14:44:39
3507
仿淘宝头条轮播滚动,Gradle配置方便使用
2017-11-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人