
Android UI学习
鸽一门
Slow down, Old Sport. 慢慢来,比较快~
展开
-
走进RecyclerView未解之迷 ------ 原理和优化
(前言暂位符号)View holder究竟是什么?ProblemView holder 和 item view 是什么关系? 一对一?一对多?多对一?View holder 解决的是什么问题?View holder 和 ListView 的 item view 的复用有什么关系?没有实现 View holder 的 getView() 的例子如下,大量的 findViewById() 方法被调用,看似不是很大的开销,但其方法的底层实现是深度优先搜索,时间复杂度是O(n)。完全可以避免原创 2020-05-19 00:31:56 · 1437 阅读 · 0 评论 -
Android 高级UI解密 (六) :结合Activity启动源码剖析View的诞生
1原创 2018-06-21 14:38:09 · 814 阅读 · 0 评论 -
Android 高级UI解密 (五) :PathMeasure截取片段 与 切线(新思路实现轨迹变换)
一. PathMeasure基础API介绍顾名思义,PathMeasure是一个用来测量Path的类,以下先来介绍API基本使用,它的方法也比较少。1. 构造方法 方法名 释义 PathMeasure() 创建一个空的PathMeasure PathMeasure(Path path, boolean forceClosed) 创建 PathMea...原创 2018-06-11 15:06:50 · 4173 阅读 · 2 评论 -
Android 高级UI解密 (四) :花式玩转贝塞尔曲线(波浪、轨迹变换动画)
一. 贝塞尔初识概念 A Bézier curve (pronounced [bezje] in French) is a parametric curve frequently used in computer graphics and related fields. Generalizations of Bézier curves to higher dimensions ar...原创 2018-05-21 21:19:03 · 8015 阅读 · 2 评论 -
Android 高级UI解密 (三) :Canvas裁剪 与 二维、三维Camera几何变换(图层Layer原理)
Canvas变换技巧(1)平移Tanslatevoid translate (float dx, float dy)API作用:用指定的转换对当前matrix 进行预处理。 参数说明: x、y轴移动的距离。注意:这里牵扯到canvas的概念,我们通常称之为“画布”,在此画布上可以绘制任何图像。此API的功能就是移动画布位置,需要强调的是每次canvas执行drawXXX的时候就会原创 2018-05-21 15:35:19 · 3544 阅读 · 1 评论 -
Android 高级UI解密 (一) :Paint图形文字绘制 与 高级渲染
UI即User Interface(用户界面)的简称,泛指用户的操作界面,view是用户界面最基本的组件,其扩展了View类,更控制着屏幕上的绘制和实践,例如被触控。屏幕上显示的所有元素都依赖view。在自定义View或Layout时,不仅要了解测量(onMeasure)、布局(onLayout)、展示(onDraw),更要考虑处理不同的点击、滑动输入事件(onTouchEve原创 2017-12-18 10:50:20 · 4265 阅读 · 0 评论 -
Android 高级UI解密 (二) :Paint滤镜 与 颜色过滤(矩阵变换)
若是曾经查看过系统UI的源码,会发现其中使用了一些渲染效果,例如将图片加上黑白、怀旧的效果,生活中常用的逆天美颜相机,其中的原理就是使用了**滤镜效果、颜色通道过滤**。若还要深究其原理组成,便涉及到了高等数学里的矩阵变换,也就是Android 中的**颜色矩阵**!此篇文章便来一探究竟如何实现滤镜和其原理组成。(关于矩阵这一块,无需过度深究数学部分,此处为了充分理解渲染效果,只需了解大概原理,利用其API完成简原创 2017-12-21 10:41:06 · 3067 阅读 · 0 评论 -
Android 中 View移动总结:ViewDragHelper学习及用法详解
View移动的相关方法总结:1. layout在自定义控件中,View绘制的一个重写方法layout(),用来设置显示的位置。所以,可以通过修改View的坐标值来改变view在父View的位置,以此可以达到移动的效果!但是缺点是只能移动指定的View:原创 2016-10-12 14:38:55 · 13184 阅读 · 16 评论 -
Android自定义控件 之 轮播图(ViewPager)重点及学习
记录学习一下轮播图的使用方法:首先如下图所示,要求达到轮播图的基本功能:1. 让图片滑动起来(ViewPager)2. 让图片和文字,指示器对应起来3. 让轮播器无限循环4. 轮播器自动轮询从以上四个点来展开轮播图的学习:一. 完成 xml 文件的编写 :使用viewPager实现轮播图,但是viewPager是 android.support.v4.view包下的控件,使用时一定要带上。再用原创 2016-08-10 15:31:41 · 6722 阅读 · 6 评论 -
透析Android 中 权重使用及分配规则(layout_weight)
平常我们在使用线性布局LinearLayout的时候,会用到权重layout_weight,将控件的宽度(或高度)设为0,再设置它的权重即可,控件呈现呈现出的大小与权重比例相吻合。方法简单,自是没有什么好说的,可是你们有想过将控件的宽和高全部设置,再去设置权重,这个呈现出的比例是怎样?权重的分配规则又是如何? 下面通过几个例子来了解一下:权重(layout_weight):即为当前线性布局指定方向(原创 2016-08-09 10:41:06 · 9724 阅读 · 5 评论 -
安卓控件 listView 的学习及优化 (ConvetView、viewHolder)
一. listView 的学习众所周知ListView 是一个控件,一个在垂直滚动的列表中显示条目的一个控件。 使用方法为:1. 布局添加Listview 2. 在对应的activity找到listview 3. 创建一个Adapter适配器继承BaseAdapter,封装4个方法(如下图) getcount: 返回listview显示的条目总数。原创 2016-08-08 11:10:45 · 1111 阅读 · 0 评论 -
Android 中 ListView 的 下拉刷新 和 上拉加载 的 重点及学习(一)
大多App中的一个必备功能:用listView实现下拉刷新和上拉加载,其实有很多大牛都写了类似的Blog,但我还想记录一下,梳理自己的思路,而且我会想之前写的轮播图博客一样,我的重点是在如何写的思路,不愿直接贴代码,想看代码的直接看文章最下面吧 :)如上gif动图所示,接下来我们要完成下拉刷新的实现。一. 完成 xml 文件的编写 :1.完成listView的头布局 结合了帧布局和线性布局<?x原创 2016-08-23 16:50:52 · 1808 阅读 · 3 评论 -
Android 中 ListView 的 下拉刷新 和 上拉加载 的 重点及学习(二)
一鼓作气,昨天写了下拉刷新,今天把 上拉加载也写完,不然又要拖好久了……大家都知道,编程时容易,写下来的话要斟酌许久,有错误也请大家指示一下,学习学习 :)(如果是第一次看我的这篇博客的朋友,建议你们先去看一下(一),再来看二)如上gif动图所示,接下来我们要完成 【 上拉加载 】 的实现。(其实看了下拉刷新的朋友,熟悉了步骤之后,再看这个 上拉加载,发现都是差不多啦~)原创 2016-08-24 14:45:55 · 1134 阅读 · 0 评论 -
Android ListView封装(代码优化):抽取方法共性,封装 BaseAdapter 和 ViewHolder
Android ListView :抽取方法共性,封装 BaseAdapter 和 ViewHolder 大多App都会使用到的基本控件 ——- Listiew,特别像新闻浏览类的比如说“今日关注”,或者“应用宝”这种汇集手机软件集合的。而且大家都知道 需要给每个单独的 ListView 搭配相应的适配器 Adapter 。如果你的项目中使用ListView 的频率很少甚至没有,那我不建议你对原创 2016-09-07 20:09:18 · 2070 阅读 · 0 评论 -
Android自定义控件:图片比例适配,解决图片白边(详解View中onMeasure方法)
当App中涉及到布局需要展示大量图片时,你就应该考虑到“图片比例适配“的问题。当图片的宽高规格不同时,你设置展示的ImageView是否可以完好地展示,填充满?也就是说ImagView的比例和图片的比例不匹配,不然的话会导致图片旁会留有空白,这样一系列的组图模块下拉,有的有白边,有的没有,非常影响美观。接下来的自定义控件将可以消除 展示图片有白边的问题,在不对图片进行任何裁剪、拉伸的前提下,最大限度原创 2016-09-15 19:29:41 · 4902 阅读 · 1 评论