UI
Android Coder
这个作者很懒,什么都没留下…
展开
-
图片/视频获取缩略图的几种方式
1. 通过Exif获取图片缩略图:拿到了图片的path之后我们从exif信息中获取缩略图: public static Bitmap fromExif(final String filePath, final int width, final int height) { if (filePath == null) { return null; } ExifInterface exifIF; try {原创 2021-09-10 09:56:29 · 2894 阅读 · 0 评论 -
巨图加载之BitmapRegionDecoder,防止OOM
先看下效果图实现原理思路就是利用BitmapRegionDecoder加载巨图的部分,不全部加载整张巨图,然后对拖动,缩放,双击等进行处理,更改BitmapRegionDecoder所需要的Rect的大小,就搞定了。代码实现在构造函数里进行初始化,创建手势识别器等 private void init() { mOptions = new Bitmap...原创 2019-12-29 23:34:54 · 688 阅读 · 1 评论 -
Bitmap之1.动态高斯模糊 2.水印添加
主要记录两件事,1.高斯模糊毛玻璃效果;2.图片水印的添加1.高斯模糊什么是高斯模糊,高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照...原创 2019-12-26 22:53:00 · 603 阅读 · 0 评论 -
PathMeasure实现自定义圆形ProgressBar
先上效果图实现原理其实这种不规则的动画,以及支付宝的支付成功动画,实现原理都差不多,首先就是利用Path画出完成的图案路径,然后利用PathMeasure测量出路径的长度,然后PathMeasure截取出Path的片段,再结合属性动画,截取出时间上连续的Path路径,然后绘制出path就完成了,代码很简单,主要是这种思想,可以实现各种各样的炫酷的小动画。代码实现public ...原创 2019-11-21 23:55:30 · 149 阅读 · 0 评论 -
自定义View之网易云音乐听歌识曲水波纹动画
先上效果图点击中间的按钮后,像外发散水波纹,再次点击水波纹消失。实现原理当点击按钮后,我们隔一段时间执行一个RippleCircleView的动画,动画包括扩大和透明度,通过PropertyValuesHolder将动画封装到一起,核心就是动画的实现代码实现首先是RippleCircleView,RippleCircleView啥也不干,就画一个圆,这个圆也是水波纹的...原创 2019-11-21 23:57:53 · 1791 阅读 · 0 评论 -
使用Vlayout打造淘宝首页
先上效果图 淘宝首页是从上到下是各种不同的样式,最上面是搜索,其次是一个轮播图,再下来是10个圆角的菜单,等等,我们可以采用一个recyclerView实现,但是实现起来的复杂程度是比较高的,如果使用阿里开源的VLayout控件,实现起来则简单多了,Vlayout就适用于这种多种item的布局。官方文档 详细的介绍可以参考官网文档,中文版:https://github...原创 2019-11-12 22:29:35 · 658 阅读 · 2 评论 -
Android动画0基础学习、复习、体系化知识框架学习路线
动画一遍一遍又一遍,忘了又看,看了又忘,尤其是碎片化严重,决定整理下动画的复习流程,也方便后期自己复习,动画的学习形成体系也是在启舰大佬的自定义《Android自定义控件开发入门与实战》中形成的。现在借助大佬CSDN,整理下动画的复习流程。自定义控件三部曲之动画篇(一)——alpha、scale、translate、rotate、set的xml属性及用法https://blog.csdn.ne...原创 2019-11-06 00:23:52 · 181 阅读 · 0 评论 -
自定义View之SVG矢量图实现不规则图像及点击事件
先上效果图,利用SVG中国地图实现不规则图形,点击各省的不规则图像,让省份颜色变红。原理解析svg矢量图是一种体积小,放大后都不会模糊的图片格式,适用于纯色或者简单的图案,svg矢量图其实也可以看成类似xml的文件,使用文本编辑器就可以打开,svg都有一个path,类似于java中的path,我们可以利用DocumentBuilderFactory对svg进行解析,从而拿到svg的pa...原创 2019-10-29 23:15:49 · 1421 阅读 · 0 评论 -
RecyclerView实现顶部悬浮栏
在recyclerview的顶部固定一个悬浮栏,悬浮栏是根据当前展示的第一个item决定的,先开看效果原理原理其实很简单,我们在将recyclerView和顶部的悬浮栏放在一个FrameLayout里面,悬浮栏在recycler上一层,然后默认让悬浮栏读取position为0的位置的数据,然后监听recyclerView的滑动,当展示的第一个item改变时,我们改变悬浮栏的数值即可。...原创 2019-10-15 22:20:23 · 690 阅读 · 0 评论 -
刘海屏适配
基于安卓9.0对于刘海屏的适配做下简单的总结,当前前提是应用是沉浸式的体验效果,如果无需做到沉浸式的体验效果,则可忽略,因为一般情况下刘海的区域和高度刚好和系统导航栏一样高,可以不考虑刘海,本片主要整理沉浸式体验的刘海屏适配梳理。1.设置全屏代码很简单,放在setContentView之前就行,运行后导航栏不显示,然后内容区域也不会到刘海区域,没有刘海的手机默认就到屏幕顶部了,这里的模拟器...原创 2019-10-11 00:09:00 · 291 阅读 · 0 评论 -
屏幕适配之修改系统density(今日头条屏幕适配方案)
屏幕适配好几种,目前主流且成本最低的还是修改系统density的方案。概念像素:屏幕的最小单位,单位为px。分辨率:整个屏幕一共有多少个点,也就是像素。例如分辨率1920*1080就是指屏幕横向和纵向分别是1920和1080个像素组成。像素密度(dpi):每英寸中的像素数。假如设备分辨率为320*240,屏幕长2英寸宽1.5英寸,dpi=320/2 = 240/1.5 =160。对...原创 2019-09-24 22:41:29 · 1739 阅读 · 0 评论 -
自定义Inflater实现系统View自定义属性,实现小红书Parallax平行动画
效果图:实现思路整个滑动页面是个ViewPager,Viewpager中填充多个的Fragment,手指从右向左滑的时候,当前的Fragment为出去的Fragment,当前Fragment右边相邻的Fragment为进入的Fragment,平行动画其实就是进入的Fragment中的各个子View按住手指滑动的不同倍数平移的,考虑到每个Fragment的子View大多都是系统的View...原创 2019-09-22 23:25:01 · 193 阅读 · 0 评论 -
Android Path进阶之Path路径实现QQ拖拽气泡效果
先上效果图先将这个过程分状态(阶段): 1.静止状态,小球的默认状态,由红色的气泡和中间的文本组成; 2.连接状态(拖拽半径短),拖拽过程中由随着手指一定的气泡和中间不断缩小的小气泡组成; 3.分离状态(拖拽半径长),中间的小气泡消失,连接的中间线也消失; 4.回弹或隐藏状态,当从连接状态松手,移动的气泡会回弹到中心,从分离状态松手,移动的气泡爆炸,...原创 2019-09-09 21:30:57 · 262 阅读 · 0 评论 -
Android Path进阶之Path常用API
Path的使用自定义PathView继承View,在构造函数中初始化画笔和path,代码简单,如下public class PathView extends View { private Paint mPaint; private Path mPath; public PathView(Context context) { this(conte...原创 2019-09-08 19:55:18 · 492 阅读 · 0 评论 -
Android Canvas进阶之自定义View实现Splash的旋转、扩散聚合、水波纹特效
先上效果图动画可以分割为3阶段,第一阶段是6个小圆的旋转,第二阶段是6个小圆的扩散和收缩,第三部分是水波纹特效,动画的实现也是按照这三个阶段进行实现的。1.初始化自定义FlashView继承View,然后在构造方法中对画笔初始化,初始化2支画笔,一个是画小圆的,另一个是第三阶段画水波纹的 private void init() { setBackgro...原创 2019-09-07 23:57:12 · 490 阅读 · 0 评论 -
Android Canvas进阶之自定义View实现粒子爆炸效果
话不多少,先上效果图,觉得简单的请轻喷。老婆爆炸。。。哦不,是图片爆炸后是多个粒子移动,因此每个粒子都是一个对象,首先定义粒子对象,粒子是圆形的,首先是粒子的颜色,,然后是粒子的圆心坐标和粒子半径,这就已经能够确定一个粒子,然后爆炸后粒子需要有速度和加速度,上码public class Ball { public int color; //图片像素点颜色值 publi...原创 2019-09-07 17:28:07 · 594 阅读 · 0 评论 -
Android Canvas进阶常用API
一、canvas位置变换自定义一个TransformView继承自view,在构造方法中初始化画笔(paint):public class TransformView extends View { private Paint mPaint; public TransformView(Context context) { this(context, nu...原创 2019-09-05 22:38:46 · 340 阅读 · 1 评论 -
Android Paint 进阶之滤镜效果(ColorFilter)
上一节整理了图层混合模式(Xfermode),这一节主要整理滤镜(ColorFilter)的使用。分类 滤镜ColorFilter有三个子类,分别是LightingColorFilter、PorterDuffColorFilter和ColorMatrixColorFilter。使用1.LightingColorFilter 首先看下构造函数LightingC...原创 2019-09-04 22:40:44 · 954 阅读 · 0 评论 -
Android Paint 进阶之 图层混合模式(Xfermode)
上一节概述了Paint进阶需要掌握的API,这一节针对图层混合模式进行讲解,主要是Xfermode的使用。1.概念 图层混合模式是将所绘制的像素与canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,最终更新canvas中最终显示的像素值。2.使用场景 图层混合模式使用的三种场景:1.ComposeShader(混合渲染);2.画笔的Paint.se...原创 2019-09-04 00:06:42 · 3128 阅读 · 0 评论 -
Android Paint 进阶常用API梳理
Paint还是比较复杂的,这里只是一些常见的API举例。代码结构很简单,自定义一个GradientLayout继承自View,MainActivity的setContentView(new GradientLayout(this))。核心的API全部在GradientLayout中。1.首先是GradientLayout的构造函数,相信各位老司机一看就懂:public Gradien...原创 2019-09-02 23:45:26 · 207 阅读 · 0 评论