![](https://img-blog.csdnimg.cn/20200106173042651.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android
文章平均质量分 97
Android
大胃粥
掘金https://juejin.im/user/2805609401693943/posts
展开
-
Material Design 之 Touch Feedback
目录目录概要设置触摸反馈RippleDrawable参考链接概要在 Materil Design(一下简称 MD ) 中,当用户与 UI 交互的时候,触摸反馈(Touch Feedback)可以在交互点提供一种及时的视觉确认效果。设置触摸反馈Button 在 MD 中默认就有一个反馈动画,使用的是 RippleDrawable 类,这个类很有意思,它根据手指与 UI 交互的不同状态(例如,长原创 2017-10-20 17:44:59 · 777 阅读 · 0 评论 -
Android Transition Framework 源码分析
概要在 Android 4.4 的时候,引入了 Transition Framework ,其原理是利用属性动画,来实现 View 在不同布局的转换效果。在 Android 5.0 的时候 ,基于 Transition Framework 又引入了 Activity/Fragment Transition 和 Shared Elements Transition。刚开始用 Transition Fr原创 2017-07-20 18:15:46 · 1965 阅读 · 1 评论 -
探究 ButterKnife 的注解处理以及代码生成
ButterKnifeButterKnife 是一个常用的第三方库,它在编译期间,使用注解处理器解析注解,并生成样板代码,从而达到给 Android views 绑定的效果,从而简化了我们写的一些样板代码。为了了解 ButterKnife 的原理,我自己模仿写了一个库,几乎可以以假乱真,当然,这个库只有学习参考的价值。既然是模仿,先看下 ButterKnife 使用 @BindString 注解的例原创 2017-09-05 11:15:23 · 2633 阅读 · 0 评论 -
Android Transition Framework 实战演练
俗话说,“光说不练假把式,光练不说傻把式,既说又练全把式”,继 Android Transition Framework 源码分析 的源码分析后,这篇文章会在应用层面上详解 Transition Framework。 老规矩,看看下要实现的效果图。概要Transition Framework 有两个重要的概念,Scene( 场景 ) 和 Transition( 转换 )。从 上篇文章 可以看出,如果原创 2017-07-16 18:28:01 · 1406 阅读 · 0 评论 -
SVG 的 PathData 在 Android 中的使用
WhatSVG(Scalable Vector Graphics 可缩放矢量图形),是一种矢量图格式。在 Android 5.0 ( API 21) 时候,用 VectorDrawable 支持矢量图,用 AnimatedVectorDrawable 支持矢量图动画。Why在项目中如果要添加一张图片,那么必须要考虑到不同屏幕分辨率的问题,也就需要为不同分辨率的屏幕准备一个相应的图片,否则可能造成图片原创 2017-06-15 15:24:13 · 4794 阅读 · 0 评论 -
Android 矢量图动画(完结篇)
上一篇文章 讲解了如何对矢量图进行转换(scale, rotation, translation),以及讲解了如何对 Path Data 进行图形变换(Morph)。那么今天,我继续完成矢量图动画的最后两个内容,修剪(trim) 和 裁剪(clip),这将作为矢量图动画的完结篇,在这篇文章中,我并不会抠细节,因此细节的问题,我在前2篇文章中已经讲解了,因此如果你看这篇文章比较吃力的话,肯定就是前面基原创 2017-06-23 18:08:25 · 2410 阅读 · 0 评论 -
RecyclerView 的 FastScroller 绘制的源码分析
RecyclerView 以前一直被人诟病没有 FastScroller 的功能,然后网上出现了几种解决方法继承 RecyclerView,重写 draw() 方法,绘制 FastScroller单独自定义一个 View,然后传入 RecyclerView 作为参数。第一种方法沿用了 ListView 的思维,把 FastScroller 和 RecyclerView 绘制在一起,耦合度过高,原创 2017-11-23 17:13:05 · 3372 阅读 · 0 评论 -
AsyncTask 必知必会
概要AsyncTask 在后台执行操作,并把结果发布到 UI 线程,避免手动调用 Thread 和 Handler.官网提到 AsyncTask 适用于短时间操作,最多几秒时间。why? 后面源码分析说明。官网还提到,如果执行长时间操作,强烈推荐我们使用并发包下的 Executor, ThreadPoolExecutor, FutureTask。 这个怎么玩呢? 后面举例。例子原创 2016-09-22 15:43:44 · 616 阅读 · 0 评论 -
源码剖析: Notification的发送
NotificationManagerService启动在system_server进程中,启动了NotificationManagerServiceframeworks/base/services/java/com/android/server/SystemServer.javaprivate void startOtherServices() { mSystemServiceMa...原创 2019-05-09 18:06:38 · 1193 阅读 · 0 评论 -
Android音频焦点处理
概要Android系统允许多个应用同时播放音频,这种特性有利有弊。例如当我们正在听音乐的时候突然点开了一个视频,如果我们发现音乐的声音和视频的的声音混合了在一起,这显然让我们非常不爽。而如果我们在播放音乐的时候,突然来了一条信息,这个时候,我们既希望能听到短信的提示音,又不希望音乐此刻停止,而是希望音乐可以降低音量播放以使我们能听清楚短信提示音,之后再恢复音量。Android引入音频焦点(aud...原创 2018-12-07 17:20:14 · 14179 阅读 · 3 评论 -
实现RecyclerView索引
概要对于列表控制,在 RecyclerView 出现之前使用的是 ListView, 在为 ListView 实现索引的时候,大致有两种方式。写一个类,继承自 ListView,重写 draw() 方法来绘制索引,然后利用 onInterceptTouchEvent() 来截断事件,用 onTouchEvent() 来处理事件。单独写一个自定义 View 实现索引,然后开放一个接口实...原创 2018-07-09 23:44:55 · 1685 阅读 · 1 评论 -
Handler 必知必会
概要Handler 封装了一套消息机制,用来发送和处理消息(Message),而它常常被用来更新 UI。创建 public Handler() { this(null, false); } public Handler(Callback callback) { this(callback, false); } ...原创 2018-02-24 17:11:58 · 332 阅读 · 2 评论 -
Android:获取并制作矢量图动画
通过上一篇文章,我们理解了 Path Data 的命令,这样就可以绘制一些简单的矢量图,也可以看懂一些简单的矢量图。但是,我们经常所看到的别人的矢量图,都并不简单,那么问题来了,这些复杂的矢量图我们怎么绘制呢? 当然是用一些 svg 编辑器 啦。 这个时候,你是不是感觉很兴奋呢,感觉可以开始画一些高逼格的矢量图。呃…,等等,你好像还是画不出来吧。 没错,其实,我也不会,这是 UI 设计师的工作呀。矢原创 2017-06-19 18:56:46 · 8085 阅读 · 4 评论 -
Android Glide 初步认识
Glide是什么一个图片加载库Glide 与 Picasso功能与Picasso一样。Google I/O 2015 的 app 就是使用这个库,同时在使用过 Picasso 后,对比看了下,感觉 Glide 比较灵活。为什么要使用Glide假如我们要从网络加载一张图片到ImageView,一般要进行的操作如下 1. 从网络下载图片 2. 压缩图片并缓存图片 3. 加载到ImageView中而原创 2016-11-23 15:35:11 · 2778 阅读 · 0 评论 -
玩转 System Bar ( StatusBar 和 NavigationBar)
1.使 StatusBar 和 NavigationBar 变暗getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);看下对比图就明白了 对比图看得很明显 。现在如果我们想它恢复原样呢,有两个方法: 1. 点击 StatusBar 或者 NavigationBar 上的任意地方原创 2016-10-15 14:37:38 · 2618 阅读 · 0 评论 -
如何用Toolbar取代ActionBar
在 Android 3.0 开始,App Bar的功能逐渐被加入到 ActionBar中,而这个 ActionBar 被包含在 Theme 中,不过对于开发者来说,缺乏的灵活性, 而且伴随着每个版本的发布,ActionBar 也表现出差异,因此我们经常自定义一个 Topbar 来取代传统的 ActionBar。伴随着 android.support.v7.widget.Toolbar 的出现,这2个原创 2016-10-09 23:15:22 · 6874 阅读 · 3 评论 -
Android Support Design 之 CoordinatorLayout
当我们使用 Android Studio 的时候 ,是不是会发现有这样一个模块而这个 Basic Activity 中使用的是 CoordinatorLayout 、AppbarLayout、FloatingActionButton 等等的一些控件 。当我第一眼看见这些新东西的时候 ,第一感觉是,为啥一哈子出来这么多新玩意 ,感觉一时间接受不了。 但是呢,存在必有它的道理 ,所以今天从原创 2016-04-22 11:07:00 · 1242 阅读 · 0 评论 -
Android Support Design Library 之 TabLayout
在 Android 3.0 的时候 ,我们知道可以通过 ActionBar 来创建 tab 实现导航,但是呢,不容易自定义 ,而且现在 ActionBar 被 Toolbar 取代的话,这让很多应用都抛弃了这个 ActionBar 的 tab,选择自己来写一个 tab。不过在 support v4 包中,有个PagerTitleStrip 和 PagerTabStrip,我觉得很丢脸,为何原创 2016-04-20 11:09:26 · 2429 阅读 · 4 评论 -
Content Provider(三) 自定义ContentProvider
自定义ContentProvider是要继承ContentProvider,那么在自定义之前 ,需要做一些准备工作1、定义合同类(Contract Class)这个名字是我自己取的,可能翻译不到位 。这个就是用来提供外部接口的,像我们之前用的UserDictionary.WORD.Words 就是一个合同类public class BookContract { publ原创 2016-01-13 14:52:33 · 2913 阅读 · 0 评论 -
Content Provider(二)之 FileProvider 实现应用文件共享
由于Android的安全机制 ,一个进程默认不能影响另外一个进程的,如读取私有数据 。 那么对于进程间的文件的共享 ,出于安全考虑,用FileProvider。FileProvider会基于manifest中的定义定义的一个xml文件(xml目录 下),为所有定义的文件生成content URIs,这样外部的应用在没有权限的情况下,可以通过授予临时权限的content uri,读取相应的文件。原创 2016-01-13 11:13:29 · 47303 阅读 · 0 评论