Android
文章平均质量分 65
铁真木
这个作者很懒,什么都没留下…
展开
-
Activity 生命周期两三事
典型情况下的生命周期Activity生命周期基本切换过程,如图需要说明的是:1、当用户再次回到原 Activity 时,回调如下:onRestart -> onStart -> onResume2、从Activity A 启动 Activity B,如果 B 是透明主题,A 的 onStop 不会回调场景:假设当前Activity为A,如果这时用户打开一个新Ac原创 2018-01-06 21:36:33 · 236 阅读 · 0 评论 -
Android 设计模式 之 单例模式
一 单例模式介绍及它的使用场景单例模式是应用最广的模式,也是我最先知道的一种设计模式,在深入了解单例模式之前,每当遇到如:getInstance()这样的创建实例的代码时,我都会把它当做一种单例模式的实现。其实经常使用的图片加载框架ImageLoader的实例创建就是使用了单例模式,因为这个ImageLoader中含有线程池、缓存系统、网络请求,很消耗资源,不应该创建多个对象,这时候就需要转载 2018-01-07 12:50:30 · 150 阅读 · 0 评论 -
Android 设计模式 之 建造者模式
一 Builder模式介绍及使用场景Builder模式是一步一步创建一个复杂对象的创建者模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。因为一个复杂的对象有很多大量组成部分,如汽车,有车轮、方向盘、发动机,还有各种小零件,如何将这件部件装配成一辆汽车,这个装配过程很漫长,也很转载 2018-01-07 13:03:19 · 167 阅读 · 0 评论 -
Android 设计模式 之 观察者模式
观察者模式介绍观察者模式是一个使用率非常高的模式,它最常用的地方就是GUI系统、订阅–发布系统。因为这个模式的一个重要作用就是解耦,将观察者和被观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。观察者模式的定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态时,则所有依赖于它的对象都会得到通知并且自动更新。观察者模式的UML类图,如图角色介绍转载 2018-01-07 14:08:42 · 178 阅读 · 0 评论 -
Android 设计模式 之 代理模式
代理模式介绍代理模式(Proxy Pattern)也称为委托模式,是结构型设计模式的一种,代理模式在各类开发中运用的相当广泛,不论是j2ee,android还是ios,都能看到它的身影,所以说设计模式无处不在。代理模式的定义:为其他对象提供一种代理以控制这个对象的访问。通俗一点:找别人做你想做但是做不了的事情。代理模式的UML类图,如图:角色介绍:转载 2018-01-07 14:12:01 · 211 阅读 · 0 评论 -
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 · 1994 阅读 · 0 评论 -
Android 序列化 Serializable 和 Parcelable
什么是序列化序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您原创 2018-01-08 09:38:28 · 224 阅读 · 0 评论 -
Android Data Binding 框架
来源 https://github.com/LyndonChin/MasteringAndroidDataBinding本教程是跟着 Data Binding Guide 学习过程中得出的一些实践经验,同时修改了官方教程的一些错误,每一个知识点都有对应的源码,争取做到实践与理论相结合。Data Binding 解决了 Android UI 编程中的一个痛点,官方原生支持转载 2018-01-08 14:39:35 · 247 阅读 · 0 评论 -
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 · 172 阅读 · 0 评论 -
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 · 223 阅读 · 0 评论 -
Android View 绘制流程
View 绘制机制1. View 树的绘图流程当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图转载 2018-01-08 15:59:46 · 321 阅读 · 0 评论 -
EventBus 源码解析
1. 功能介绍1.1 EventBusEventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递,这里的事件可以理解为消息,本文中统一称为事件。事件传递既可用于 Android 四大组件间通讯,也可以用户异步线程和主线程间通讯等等。传统的事件传递方式包括:Handler、BroadCastReceiver、Interfac转载 2018-01-08 16:14:17 · 195 阅读 · 0 评论 -
Glide 源码分析
###1. 功能介绍图片加载框架,相对于UniversalImageLoader,Picasso,它还支持video,Gif,SVG格式,支持缩略图请求,旨在打造更好的列表图片滑动体验。Glide有生命周期的概念(主要是对请求进行pause,resume,clear),而且其生命周期与Activity/Fragment的生命周期绑定,支持Volley,OkHttp,并提供了相应的integra转载 2018-01-09 09:25:20 · 2200 阅读 · 0 评论 -
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 · 1669 阅读 · 0 评论 -
Activity 启动模式
启动 Activity 分为 显示调用和隐式调用。显示调用需要明确地指定被启动对象的组件信息,包括包名和类名,而隐式调用则不需要明确指定组件信息。Activity的LaunchMode4种启动模式:standard、singleTop、singleTask、singleInstance1、standard 标准模式:每次启动一个Activity都会重新创建一个新的实例,原创 2018-01-06 21:41:18 · 191 阅读 · 0 评论 -
自定义控件:垂直轮播的小贴士Banner,仿 淘宝app的“淘宝头条”
VerticalBanner现在很多App都有2行的文章小贴士功能,垂直方向轮播展示 文章标题。效果图使用方法Gradle配置1. 在project的build.gradle添加如下代码allprojects { repositories { ... maven { url "https://jitpa原创 2017-11-22 20:53:04 · 852 阅读 · 0 评论 -
Android-下拉框,利用AlertDialog来实现
利用Spinner可以实现下拉框,效果如下其实完全可以用AlertDialog来实现。AlertDialog有一个方法:public AlertDialog.Builder setAdapter (ListAdapter adapter, DialogInterface.OnClickListener listener) 可以很自然的联想到,左边是对应的list数据a原创 2012-10-19 14:44:39 · 3431 阅读 · 0 评论 -
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 · 913 阅读 · 0 评论 -
Android Universal Image Loader 显示圆角图片,CenterCrop失效
Android Universal Image Loader是当前使用比较多的图片加载工具类,可以非常好的“一站式”解决图片下载、压缩、存储、缓存、显示等问题。并且提供 自定义显示图片的接口类BitmapDisplayer,可以自定义图片展示样式。不过,如果你要展示圆角图片,会发现图片的scaleType失效了,图片拉伸失真。原来,圆角图片RoundedBitmapDi原创 2017-06-21 11:40:33 · 1557 阅读 · 1 评论 -
Error:Execution failed for task ':app:compileDebugJavaWithJavac' 根本解决方法
碰到这个异常,很懵逼查找了各种解决方案,都不对症。最后发现,造成这种异常的原因有很多。具体的还是要去终端编译,查看到底是什么地方出错了,然后具体问题具体分析。终端进入项目的根目录,然后输入命令./gradlew compileDebugJavaWithJavac --stacktrace最终定位到错误警告: 无法找到类型原创 2017-10-31 19:19:44 · 21744 阅读 · 0 评论 -
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 · 474 阅读 · 0 评论 -
Android Studio 使用config.gradle 管理依赖库
在project根目录下创建一个config.gradle,将一些配置信息及第三方依赖统一管理。ext { android = [ compileSdkVersion : 25, buildToolsVersion : "26.0.2", applicationId : "c原创 2017-11-15 15:39:58 · 1359 阅读 · 0 评论 -
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 · 20420 阅读 · 3 评论 -
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 · 4760 阅读 · 1 评论 -
自定义ViewPager,可垂直、水平滑动,支持循环展示
该控件支持水平、竖直方向滑动,并可循环展示。垂直滑动效果图使用方法Gradle配置1. 在project的build.gradle添加如下代码allprojects { repositories { ... maven { url "https://jitpack.io" }原创 2017-11-21 19:37:07 · 1215 阅读 · 0 评论 -
Android 文章目录
基础:Activity 生命周期两三事Activity 启动模式序列化 Serializable 和 ParcelableView 事件传递View 绘制流程动画基础设计模式:单例模式建造者模式观察者模式代理模式进阶:解决65535限制优化:Android原创 2018-01-06 22:59:54 · 260 阅读 · 0 评论