自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 创建CircularReveal揭露动画的实现

在Android 5.0及更高的版本中,加入了一种全新的视觉动画效果,就是揭露动画。揭露动画在系统中很常见,就是类似波纹的效果,从某一个点向四周展开或者从四周向某一点聚合起来,本文实现的效果如下所示,可以用在Activity里面的View动画效果,也可以使用在Activity跳转过渡动画中: 使用揭露动画非常简单,Android Sdk中已经帮我们提供了一个工具类ViewAnimationUtil

2017-10-21 11:20:23 2252

原创 Kotlin中反射机制的使用语法

反射机制概述Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java 反射机制的功能 在运行时判断任意一个对象所属的类。 在运行时构造任意一个类的对象。 在运行时判断任意一个类所具有的成员变量和方法。 在运行时调用任意一个对象的方法

2017-10-15 10:56:57 8151 2

原创 Android TV RecyclerView焦点移动飞框的实现

上一篇文章讲了 Android TV 焦点移动飞框的实现 这一篇文章主要在RecyclerView中实现焦点移动飞框,支持横向和竖向列表。实现效果如下图所示: RecyclerView视图绑定在Android TV端使用RecyclerView跟手机上的一样,都是通过绑定ViewHolder来实现视图的绑定,首先需要创建一个基类继承RecyclerView.ViewHolder,里面包含一个set

2017-10-02 16:10:22 2846 1

原创 Android TV 焦点移动飞框的实现

目前国内传统厂商和互联网厂商所开发的Android智能电视的UI都很类似,其中最常见的就是获得焦点的选中项飞框动画效果的实现了,看上去动画效果很炫酷,能够正确的指引使用者当前所选择的条目。Android电视和Android手机有很大的区别,Android手机带有触摸屏,一般不用特别指示用户所选中的项;而Android电视则不同,不带有触摸屏,一切操作都需要通过遥控或者手机(带红外线)来实现远程操控,

2017-09-25 23:59:35 2959

原创 Android Fragment切换动画的2种实现方式

Fragment切换动画在Activity跳转之间可以设置动画效果,例如平移,渐变,旋转等动画,当然在Fragment中也可以设置切换的动画效果,可以达到跟ViewPager切换动画类似的效果。在Fragment中设置自定义切换动画主要分为了两种情景,一种是使用 android.app.Fragment包里面的Fragment类时,FragmentManager里面的FragmentTransact

2017-06-22 23:30:27 35844 3

原创 Android ViewPager切换动画PageTransformer

PageTransformerViewPager的默认切换视图的动画是平移方式,如果希望能改变默认的动画效果,增加淡入淡出,缩小放大等效果时,可以实现ViewPager.PageTransformer接口,并将它设置给ViewPager。 public interface PageTransformer { /** * Apply a property tra

2017-06-17 21:46:50 1941

原创 Android ScaleGestureDetector缩放手势识别

ScaleGestureDetector在Android中对于手势识别操作可以使用GestureDetector类来进行处理,对于缩放手势,则提供了对应的ScaleGestureDetector类。 public class ScaleGestureDetector extends Object ScaleGestureDetector 使用类内置的MotionEvents来识别探测缩

2017-06-14 20:01:23 11550 1

原创 Android GestureDetector手势识别

GestureDetectorCompat在View与用户的交互处理中,通常可以采用重写View的onTouchEvent方法来判断处理手势的一些操作,这种方式需要开发者自己处理手势的一些数据判断,在简单的手势例如上下左右滑动之类容易处理,遇到一些复杂的手势操作就很难判断处理。Android的View包中给我们提供了GestureDetector手势处理类来帮助开发者来处理复杂的手势操作事件。

2017-06-12 22:38:45 1663 1

原创 Http协议基础之为 Cookie 服务的首部字段

为 Cookie 服务的首部字段管理服务器与客户端之间状态的 Cookie,虽然没有被编入标准化 HTTP/1.1 的 RFC2616 中,但在 Web 网站方面得到了广泛的应用。Cookie 的工作机制是用户识别及状态管理。Web 网站为了管理用户的状态会通过 Web 浏览器,把一些数据临时写入用户的计算机内。接着当用户访问该Web网站时,可通过通信方式取回之前发放的 Cookie。调用 Cook

2017-06-10 17:28:32 512

原创 Http协议基础之实体首部字段

实体首部字段实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息。Allow Allow: GET, HEAD首部字段 Allow 用于通知客户端能够支持 Request-URI 指定资源的所有 HTTP 方法。当服务器接收到不支持的 HTTP 方法时,会以状态码 405 Method Not Allowed 作为响应返回。与此同时,还会把所

2017-06-10 16:48:55 934

原创 Http协议基础之HTTP响应首部字段

响应首部字段响应首部字段是由服务器端向客户端返回响应报文中所使用的字段,用于补充响应的附加信息、服务器信息,以及对客户端的附加要求等信息。Accept-Ranges Accept-Ranges: bytes首部字段 Accept-Ranges 是用来告知客户端服务器是否能处理范围请求,以指定获取服务器端某个部分的资源。可指定的字段值有两种,可处理范围请求时指定其为 bytes,反之则指定其为

2017-06-10 16:40:46 817

原创 Http协议基础之HTTP请求首部字段

请求首部字段请求首部字段是从客户端往服务器端发送请求报文中所使用的字段,用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等内容。Accept Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8Accept 首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可使用 type/s

2017-06-10 16:31:26 831

原创 Http协议基础之HTTP通用首部字段

通用首部字段通用首部字段是指,请求报文和响应报文双方都会使用的首部。Cache-Control通过指定首部字段 Cache-Control 的指令,就能操作缓存的工作机制。 指令的参数是可选的,多个指令之间通过“,”分隔。首部字段 Cache-Control 的指令可用于请求及响应时。 Cache-Control: private, max-age=0, no-cacheCache-Cont

2017-06-09 21:59:47 939

原创 Http协议基础之HTTP首部

HTTP 报文首部HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。对于客户端用户来说,这些信息中的大部分内容都无须亲自查看。报文首部由几个字段构成。 HTTP 请求报文 在请求中,HTTP 报文由方法、URI、HTTP 版本、HTTP 首部字段等部分构成。 HTTP 响应报文 在响应中,HTTP 报文由 HTTP 版本、状

2017-06-09 15:48:39 512

原创 Http协议基础之响应状态码

HTTP状态码HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。HTTP状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。 HTTP状态以3位数字和原因短语组成,如200 OK。 数字中的第一位指定了响应类别,后两位无分类。响应类别有以下5种。 HTTP状态码

2017-06-09 09:43:15 436

原创 Android OkHttp官方Wiki之HTTPS

OkHttp试图平衡两个相互冲突的问题: 尽可能多地连接到主机。其中包括运行最新版本的boringssl的高级主机,以及运行较旧版本的OpenSSL的过时主机。 安全连接。这包括使用证书和使用强密码保护交换数据的隐私,从而与远程WEB服务进行验证。在与HTTPS服务器进行连接时,OkHttp需要知道需要提供哪个TLS版本和密码组。客户端如果想要最大化连接性则需要包括过时的TLS版本和弱设计的密码

2017-05-29 22:17:27 697

原创 Android OkHttp官方Wiki之Interceptors拦截器

在OkHttp中Interceptors拦截器是一种强大的机制,可以监视,重写和重试Call请求。下面是一个简单的拦截器,它记录发出的请求和返回的响应。class LoggingInterceptor implements Interceptor { @Override public Response intercept(Interceptor.Chain chain) throws IOExc

2017-05-29 18:54:03 1786

原创 Android OkHttp官方Wiki之Recipes使用方法

本文将演示如何使用OkHttp来解决常见问题,了解每件事是如何一起工作的。Synchronous Get 同步Get下面的代码将下载一个txt文件,打印它的响应结果的响应头部,并将它的响应体作为字符串打印出来。 private final OkHttpClient client = new OkHttpClient(); public void run() throws Exception {

2017-05-29 15:37:33 440

原创 Android OkHttp官方Wiki之Connections

虽然用户只使用URL发起请求时,但是OkHttp会使用URL,Address和Route路由来与服务器进行连接。URLsURL统一资源标识符是用来连接HTTP和互联网的最基本的要素。URL除了为网络上的所有东西提供一个通用,分散的命名方案,同时也能指定如何访问网络资源。一个URL的组成成分包括了Scheme方案,Username and Password,Host主机名,Port端口,Path路径,

2017-05-28 18:18:56 480

原创 Android OkHttp官方Wiki之Calls

Http基础概述Http客户端的工作就是接收用户的请求Request和产生返回结果Response。Requests 每一个Http请求都包含了URL,请求方式(GET,POST),请求头,请求体。请求体中包含了特定数据类型的数据流。 Responses 每一个响应包含了响应状态码,响应头,响应体。Rewriting Requests重写请求当使用OkHttp进行HTTP请求时,OkHttp会

2017-05-27 23:58:31 469

原创 Android 计步传感器的实现

在Android4.4之后的版本中,Android在硬件中支持内置计步传感器。例如微信运动,支付宝运动等常用软件都是直接调用了Android中的Sensor传感器服务,从而获取到每日的步数。要完成计步传感器的调用,需要了解Sensor,SensorManager,SensorEventListener,SensorEvent四个类。SensorSensor即传感器,该类的路径为android.har

2017-05-27 15:42:38 16944 5

转载 Android App包瘦身优化实践

本文转载自美团技术博客:Android App包瘦身优化实践随着业务的快速迭代增长,美团App里不断引入新的业务逻辑代码、图片资源和第三方SDK,直接导致APK体积不断增长。包体积增长带来的问题越来越多,如CDN流量费用增加、用户安装成功率降低,甚至可能会影响用户的留存率。APK的瘦身已经是不得不考虑的事情。在尝试瘦身的过程中,我们借鉴了很多业界其他公司提供的方案,同时也针对自身特点,发现了一些新

2017-05-03 13:18:01 856

原创 Android Studio Gradle环境变量配置

Gradle是Android Studio用来构建和管理项目的一个插件,采用了基于Groovy的内部领域特定语言。Android Studio已经帮我们封装了很多Gradle命令,还可以通过控制台Console来输入Gradle命令执行操作,要通过控制台的方式来运行就必须配置Gradle系统环境变量。一般来说Android Studio默认下载Gradle包的路径为: C:\Users\用户名.g

2017-04-17 08:49:31 18447 1

转载 Android Studio Gradle命令和配置

Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言,建议可以先熟悉一下Groovy脚本。 在线文档Gradle命令:常用命令:gradle明明一般是./gradlew +参数, gradlew代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper

2017-04-17 08:16:59 3809

原创 Android RecyclerView上拉加载更多的实现和源码分析

上一章介绍了RecyclerView的下拉刷新功能的实现和源码分析。在一个RecyclerView完整的功能中,下拉刷新和上拉加载是必须包含的,所以本节就介绍上拉加载更多的实现和源码分析。需求分析上拉加载更多也就是拉到RecyclerView底部,再上拉就会显示一个正在加载更多信息,如下图所示: 当上拉加载没有更多数据时,就显示没有更多的提示信息,如下所示: 上拉加载更多 比 下拉刷新更简单

2017-04-06 15:53:55 2100

原创 Android RecyclerView下拉刷新的实现和源码分析

目前RecyclerView是主流的列表显示控件,RecyclerView支持的特性很多,但是并没有自带官方的下拉刷新功能。谷歌提供了一个SwipeRefreshLayout的下拉刷新控件,就是一个小圆圈在转动,自定义效率有限,并不能满足日常的需求开发。现在github上也有很多RecyclerView的衍生控件实现了自定义下拉刷新效果,它们的实现原理各有同,总的来说,目前主要可以实现下拉刷新效果的

2017-04-04 23:29:35 1078

原创 JavaScript 事件模型

在编程中,事件非常类似于打电话。页面上发生了某个操作,会触发了某个事件,我们就可以响应这个事件,对事件做出处理。例如,用户单击页面,按下键盘上的一个键,或者把鼠标指针移过某段文本时,都会发生事件。另一个常用事件是页面的load事件,当页面完全加载到浏览器中时,窗口将引发(或触发)一个通知。 当事件发生时,需要使用事件处理程序(event handler)或监听器(listener),并把它关联到事

2017-03-14 20:13:15 559

原创 Android ButterKnife 注解框架的使用详解和原理分析

ButterKnife简介ButterKnife是JakeWharton大神开发的一个开源库,官方对这个库的介绍为: Butter Knife Field and method binding for Android viewsButterKnife是一个使用注解方式来为Android中的View视图绑定字段和方法,能通过自动解析注解来搜索资源文件并赋值给Activity中的字段,如使用

2017-03-08 00:16:17 4363

原创 Android Freeline加速编译App方案 使用和总结

Freeline简介在Android Studio还没推出Instant Run功能之前,每次修改Android 工程项目时都要将整个项目重新编译一次,然后再将资源和代码文件打包成APK文件传输到手机上安装运行。这个过程是非常耗时间的,在配置较低的PC上一般需要高达3分钟以上,配置较高的PC最低也需要1分钟以上的时间。程序猿每天无数次修改代码然后编译运行都要浪费很多宝贵的时间,之后在Android

2017-03-06 23:21:04 3534

原创 Android MVVM架构模式 详解和综合运用(四)

DataBinding结合RecyclerView使用在日常的开发中,使用最频繁的组件莫过于列表控件了,例如RecyclerView。DataBinding库也添加了对RecyclerView的adapter的支持,因为adapter是用来管理和分配RecyclerView中数据的组件。 使用DataBinding来开发RecyclerView很简单,首先创建一个item的布局,在这个布局中声明一

2017-03-01 10:54:25 630

原创 Android MVVM架构模式 详解和综合运用(三)

View元素标签属性设置当在layout文件中的binding表达式与View绑定的变量值改变时,生成Binding类会在View上调用相应的setter方法。DataBinding库会自动调用相对应的方法去设置值。自动设置属性值setter 对于每一个元素的属性,DataBinding都会去查找相关的方法如setXXX(属性名)来设置属性值。例如,对于TextView中的属性android:te

2017-02-27 21:15:31 650

原创 Android MVVM架构模式 详解和综合运用(二)

绑定事件处理程序DataBinding的一个关键就是View和ViewModel可以关联在一起,实现双向交互。例如在View层触发了一个事件,例如点击onClick,DataBinding可以在layout布局文件中的属性@{ }表达式中来处理这个事件,而不用自己去设置监听器来处理事件。例如,View.onClickListener中有一个方法是onClick,所以在view元素节点上有对应的属性a

2017-02-27 13:27:34 1289

原创 Android MVVM架构模式 详解和综合运用(一)

Android App架构设计Android App架构设计的目的是通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续的测试以及定位问题。但设计不能违背目的,对于不同量级的工程,具体架构的实现方式必然是不同的,切忌犯为了设计而设计,为了架构而架构的毛病。 Android的架构设计从早期

2017-02-26 20:06:33 974

原创 JavaScript DOM文档对象和编写DOM脚本

JavaScript在Web开发中的主要作用是与用户交互,在网页上添加某种行为。JavaScript允许在网页加载到浏览器中后,完全改变网页的所有方面,JavaScript在网页上提供这个功能的基础是文档对象模型(Document Object Model,DOM),这是网页的树状表示方法。DOM为开发人员提供了一种表示网页中的所有元素的方式,以便在JavaScript中通过一组通用的属性和方法来访

2017-02-22 15:38:28 1364

原创 Android 布局文件中Tools属性的应用

每当创建新项目的时候,在MainActivity的布局文件layout中的根节点上都有一个xmlns:tools=”http://schemas.android.com/tools”的命名空间声明,以前一直认为没什么用处,知道最近看了文档才知道tools包含很多很实用的属性,下面就记录下tools一些主要属性的用法。介绍Android Studio支持在tools命名空间中定义的许多XML属性来使用

2017-02-17 19:54:03 2027

原创 设计模式-模板方法模式

模板方法模式定义模板方法模式定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式非常简单,仅仅使用了Java的继承机制,但它是一个应用非常广泛的模式。模板方法模式算法框架模板方法模式的通用类图如图所示。包含两个角色,一个是抽象模板类,一个是具体模板类。 其中AbstractClass是抽象模板类,它的方法分为两

2017-02-10 22:43:16 645

原创 设计模式-责任链模式

责任链模式定义责任链模式定义如下:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任链模式的重点是在“链”上,由一条链去处理相似的请求,在链中决定谁来处理这个请求,并返回相应的结果。责任链模式的核心在“链”上,“链”是由多个处理者ConcreteHandler组成。 工作流程如下图所示: 如果传递

2017-02-10 16:10:55 288

原创 JavaScript 特性检测与浏览器嗅探

Internet上充斥着各种操作系统和各种版本的浏览器,每种浏览器都有自己的BOM和独有的特性。因此,保证页面在所有浏览器上正常运行是非常重要的,或者至少可以正常退出,例如显示一个消息建议用户升级浏览器。 有两种方法可以测试浏览器是否可以执行代码:特性检测和浏览器嗅探。它们的最终目标类似,测试给定的浏览器是否执行代码,但它们用于不同的目的。特性检测并非所有的浏览器都支持相同的特性,这里的特性是指对

2017-02-05 22:06:34 1961

原创 JavaScript 浏览器程序设计

不仅JavaScript是基于对象的,而且浏览器也是由对象组成的。JavaScript在浏览器中运行时,可以访问浏览器的对象,其方式与使用JavaScript的内置对象一样。浏览器提供了许多对象,例如window对象对应浏览器的窗口,document对象对应浏览器的页面等。还有许多其他对象可表示页面上写入的HTML,例如每个元素都对应一个img对象,用于在文档中插入一幅图像。浏览器为JavaScri

2017-02-05 16:23:04 1546

原创 Android 无限轮播ViewPager的实现

现在很多app的首页顶部都有一个可以滑动切换的ViewPager,或是显示广告图片,或是显示入口推荐信息等等。很多这些ViewPager都带有无限滑动的功能,也就是当滑动到最后一张图片时,继续向右滑动会转到第一张图片;当在第一张图片向左滑动时,会转到最后一张图片。这种功能的实现提升了用户的体验,使用户能更方便的切换,而不用每次都要滑动N次来导航到第一张或是最后一张图片。这种功能的实现很简单,可以通过

2017-02-04 23:55:06 2163 1

空空如也

空空如也

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

TA关注的人

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