![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
android高级UI
文章平均质量分 91
突破android技术瓶颈,适合1-5年以上程序员。
冉航--小虾米
如果技术不能换来金钱,那么就让它换来精神生活。
展开
-
Android事件分发
梳理androidUI事件分发流程,解决appUI事件冲突问题:当一个大按钮作为背景,上面放一个小按钮,这时点击小按钮,小按钮是否会响应单击事件?答案:有可能背景响应了 单击事件,而让你的预期大跌眼镜。这里简单做以下笔记:假设背景容器布局是RelativeLayout,上面有一个Button。OnInterceptTouchEvent : RelativeLayout容器布局特有的事件分发函数onTouchListener 接口的onTouch函数onTouchEventonDi..原创 2021-08-02 09:49:36 · 1096 阅读 · 0 评论 -
Android高级UI详解汇总
Android高级UI开发(一)RecyclerView控件的基本使用Android高级UI开发(二)RecyclerView控件使用----列表项的单击事件、添加(删除)列表项Android高级UI开发 ( 三 )RecyclerView控件---高级进阶之自己绘制列表分隔线...原创 2020-09-05 08:01:44 · 4003 阅读 · 0 评论 -
Android高级UI开发(四十五)Canvas Path
1. Path概念用Path定义一个图形,然后用canvas.drawPath(...)函数来绘制这个图形。例如绘制一个圆。Path可以绘制各种图形,如二次,三次贝塞尔曲线,圆形、多边形,三角形,五角星等几何形状。public class PathOpView extends View { private Paint mPaint; public PathOpView(Context context) { super(context); mPai原创 2020-05-18 17:28:11 · 1872 阅读 · 0 评论 -
Android高级UI开发(四十四)canvas基本知识(2) 裁剪与区域
裁剪:裁剪后,canvas只能在裁剪出的这块rectF矩形上进行绘制。区域:canvas图层上的一块封闭区域,如下rect2这个矩形区域,drawRegion绘制出这个区域。package com.xiaowei.lsn7_canvas;import android.content.Context;import android.graphics.Bitmap;...原创 2020-04-29 15:18:29 · 2199 阅读 · 1 评论 -
Android高级UI开发(四十三)Canvas基本知识(1)
直接贴代码,注释很详细。源码下载:package com.xiaowei.lsn7_canvas;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.gra...原创 2020-04-29 10:01:58 · 1776 阅读 · 0 评论 -
Android高级UI开发(三十八)Paint基本使用
Paint 常用函数1. 绘制图形、路径等 (1)setStyle(Paint.Style.style) 设置画笔样式,取值有:FILL, FILL_AND_STROKE, STROKE (2) setStrokeWidth(float width) 设置画笔的宽度 (3)setAntiAlias(boolean ): 设置是否抗锯齿...原创 2020-01-07 14:25:24 · 2465 阅读 · 0 评论 -
Android高级UI开发(一)RecyclerView控件的基本使用
学了Android开发这么久,Google新出的许多控件在实际项目中几乎没有用过,深感惭愧。今天就来介绍一下控件RecyclerView,简单的说就是列表控件ListView的升级版,还是一个列表控件,只是性能和扩展性远远超过了ListView列表控件。这么好的升级版控件竟然没有使用到项目中,我这个开发人员的水平是不是太差了,是不是没能与时俱进。好吧,话说多了总会有人误解你,正所谓...原创 2018-04-15 22:05:59 · 1643 阅读 · 0 评论 -
Android高级UI开发(二)RecyclerView控件使用----列表项的单击事件、添加(删除)列表项
上篇文章介绍了RecyclerView控件的基本用法,我们已经知道它是一个ListView的升级版,可轻松的展示各种列表风格,例如水平列表、垂直列表、网格列表、瀑布流列表等。但是,我们项目中仅仅展示数据是不够的,我们经常还有列表项的单击事件、添加列表项、删除列表项等。今天我们就着重讲解一下RecyclerView列表项的单击事件、添加列表项、删除列表项。效果:1.Recy...原创 2018-04-21 13:15:42 · 3574 阅读 · 2 评论 -
Android高级UI开发 Material Design材料设计原则----RecyclerView控件(三)高级进阶之自己绘制列表分隔线
经过RecyclerView的基本使用(一)和(二),我们发现RecyclerView列表项之间默认是没有分隔线的,原先旧的列表控件(Listview)的各列表项之间默认是有分割线的。今天就来总结一下如何为RecyclerView列表添加自定义分割线。源代码下载:https://download.csdn.net/download/gaoxiaoweiandy/10385456博客网址: ht...原创 2018-05-01 18:59:01 · 1773 阅读 · 0 评论 -
Android高级UI开发 Material Design材料设计原则----RecyclerView控件(四)高级进阶之自己绘制网格分隔线
上一篇讲解了如何为垂直列表绘制间隔线,今天就来总结一下如何为RecyclerView网格布局添加自定义分割线。源代码下载:https://download.csdn.net/download/gaoxiaoweiandy/10385456博客网址: https://blog.csdn.net/gaoxiaoweiandy/article/details/80232080显示效果如图:一、垂直...原创 2018-05-07 23:05:17 · 1941 阅读 · 0 评论 -
Android高级UI开发 RecyclerView高级进阶(五)飞虎潜行极战之切换
RecyclerView控件还有一个非常方便的功能,就是可以动态改变RecyclerView控件的展示风格,即在列表与网格Grid布局之间自由切换,先上效果图《飞虎队剧照》:一、核心代码如下:1. MainActivity.javapackage com.anyikang.volunteer.sos.recyclerview;import android.app.Activity;impor...原创 2018-05-12 15:21:40 · 2261 阅读 · 0 评论 -
Android高级UI开发 RecyclerView高级进阶(六)偷梁换柱之 添加头部和尾部
众所周知Listview控件可以通过addHeaderView和addFooterView来添加头部和尾部,但是我们的 RecyclerView控件却没有这样的 API,那我们就得自己扩展这样的API到RecyclerView控件里。既然Listview已经实现了这样的API,我们不防看看ANDROID listview源码,我们可以模仿它。1. Listview源码片段1 添加头部 /*...原创 2018-05-27 11:07:08 · 3739 阅读 · 1 评论 -
Android高级UI开发 RecyclerView高级进阶(七)上下拖动列表条目改变条目顺序与滑动删除条目
今天我们讲点儿干货,我们是否有这些需求:(1)允许用户改变一个列表中各条目的顺序,例如用户想把自己喜欢的列表项拖动置顶或按喜好排序,正好RecyclerView可以轻松实现拖动条目改变顺序这个功能;(2)用户也想删除一个条目,如滑动某一个列表项删除条目,类似于QQ列表滑动删除。这些功能在RecyclerView控件上都可以轻松实现,依照惯例我们先来看一下运行效果:其中切换按钮,是将垂直列表...原创 2018-06-18 15:54:33 · 5284 阅读 · 1 评论 -
Android高级UI开发 RecyclerView高级进阶(八)下拉刷新,上拉加载
Listview的下拉刷新,上拉加载我们常用的框架是pullToRefresh。今天我们来介绍RecyclerView如何实现下拉刷新,上拉加载。1. 下拉刷新实现思路,无需我们写代码自定义下拉刷新控件,直接使用MaterialDesign5.0为我们提供的SwipeRefreshLayout控件。布局一般为: <android.support.v4.widget.SwipeRefre...原创 2018-07-14 17:59:07 · 3308 阅读 · 0 评论 -
Android高级UI开发(九)之侧滑菜单 --抽屉
Android里的抽屉控件在Android2.0---Android2.3是最常见的,记得当时Android系统的桌面本身就自带一个抽屉控件,点击它则展开所有已安装的应用。直到Android4.0问世后比较流行的就是侧滑了,例如新浪新闻APP。实现侧滑的方法比较多,今天我们先讲第一种方法,那就是使用抽屉控件DrawerLayout来实现侧滑菜单,具体效果如下图:标题1. 首先,我们来看一下布局...原创 2018-08-08 13:53:25 · 17157 阅读 · 0 评论 -
Android高级UI开发(十)之侧滑菜单2
自从Android5.0开始Google官方提供了一个全新的侧滑菜单控件叫做NavigationView,用法较之前简单多了。效果图如下:1. 布局文件侧滑菜单<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns...原创 2018-09-01 23:04:10 · 2304 阅读 · 0 评论 -
Android高级UI开发(十一)SnackBar的使用
Android系统从5.0开始引进了许多新的控件,它们给予了用户更好的体验,这些控件都遵循现在流行的Material Design设计原则。今天我们就来温故一下SnackBar控件,它是一种类似Android Toast(显示提示信息)与 对话框的控件,经常用于给用户提示信息,比如“您还没有登录,请点击登录”. SnackBar是介于Toast与对话框之间的产物,为什么这么说呢...原创 2018-09-15 22:11:14 · 2295 阅读 · 0 评论 -
Android高级UI开发(十二)之 TextInputLayout用法
TextInputLayout见名知义与文本输入有关系,TextInputLayout控件通过内嵌EditText来实现输入文本时,根据预先设定的属性向用户展示相应的提醒文字并附有酷炫的动画效果。例如,当文本框里的字符长度大于10的时候自动给用户提示,无需编写额外的代码,同时文本框获取或失去焦点时,EditText的hint文本会动态显示和隐藏。下图为TextInputLayout结合EditTe...原创 2018-10-07 14:35:11 · 3084 阅读 · 1 评论 -
Android高级UI开发(十三)之ToolBar基本用法
我记得之前Android4.0的时候是actionBar,到了Android5.0以后google新出了ToolBar用以弥补ActionBar的不足。今天我们就来讲一下 ToolBar的用法。其实现在Android系统的UI设计有些已经超越了IOS...一、基本用法1. 我们新建立一个工程;2. 然后找到values---styles.xml修改其中的AppTheme为Theme.A...原创 2018-11-07 17:56:41 · 2126 阅读 · 1 评论 -
Android高级UI开发(十四)之Toolbar + SearchView
今天公司暖气来了,意味着又到了年末。我们日夜重复着昨天的生活像白开水一样的活着,忙碌着却无成绩的挣扎着。没关系,有些人还是很快乐因为它们从中得到了充实,自乐其中。可是我们不要忘了这个世界上只有活的有意义才是最大的幸福。通过博客来记录生活与技术,只有把一些东西写下来,才能让我看得更明白,才能不断发现迷失的自己。今天我们就来讲一下Android开发中的寻找(SearchView)。首先,...原创 2018-11-19 11:04:26 · 5295 阅读 · 4 评论 -
Android高级UI开发(十五)ToolBar随Scrollview滚动而逐渐透明
前几篇都讲了Toolbar自身的用法,今天讲一下Toolbar结合Scrollview常用的一个效果,效果图如下1. 我们先实现布局,一个Toolbar,一个列表,布局文件如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://sche...原创 2018-11-23 11:41:00 · 3142 阅读 · 0 评论 -
Android高级UI开发(十六)TabLayout
TabLayout是Material Design设计原则中推出的一个新型标题栏,最常见的例子就是结合Viewpager来使用,当滑动Viewpager时,标题栏会跟随着切换,反过来当选中某一个标题栏时Viewpager页面也会跟随着切换到指定内容。拒绝所谓的民间高手的自定义Tablayout滑动效果,让我们接受谷歌大牛的稳定控件吧。下面是Tablayout的运行效果:...原创 2018-12-01 19:24:24 · 1975 阅读 · 0 评论 -
Android高级UI开发(十七)CardView+FloatActionButton+普通Button水波纹问题
自动Android5.0的Material design设计规范推出之后,新增了许多设计比较好的控件,如CardView,浮动按钮等。这些控件来自于com.android.support:design包中。今天我们主要讲布局界面及展示效果,无需额外编写程序代码。1. CardView在布局中的运用:<LinearLayout xmlns:android="http://sche...原创 2018-12-15 18:18:13 · 2274 阅读 · 0 评论 -
Android高级UI开发(十八)监听列表的滑动从而隐藏或显示Toolbar与Fab浮动按钮
周末好,今天我们来讲一个动画效果的实现,当上滑列表时让Toolbar(工具栏)与FAB浮动按钮(实质还是一个按钮)隐藏,当下滑时又显示回来。实现这个动画有两种方法,今天我们先讲第一种最常规的做法,其实第二种方法才是正道,它更符合Google Material Design的规范,敬请期待下一篇Android高级进阶(十九),但是我们今天还是要执意讲解第一种方法的目的就是为正道铺路...原创 2018-12-20 18:00:37 · 3227 阅读 · 0 评论 -
Android高级UI开发(十九)监听列表的滑动从而隐藏或显示Toolbar与Fab浮动按钮(二)
周末好,今天我们来讲一个动画效果的实现,当上滑列表时让Toolbar(工具栏)与FAB浮动按钮(实质还是一个按钮)隐藏,当下滑时又显示回来。实现这个动画有两种方法,今天我们接着上一篇(Android高级进阶十八),用第二种方法来实现这个动画效果,它更符合Google Material Design的规范。动画效果如下:一、实现思路:1.步骤:1.1.根...原创 2018-12-23 21:24:07 · 2523 阅读 · 0 评论 -
Android高级UI开发(二十)AppBar与CoordinatorLayout 组合出各式各样的效果
如果无法成为大鲨鱼,就当一枚小虾吧,时而激起小浪花。无法成为太阳,就做星辰吧。 有些人永远不会有自信,因为他曾经有过这样的感觉:”我还不如一个幼儿园学生“。也有些人永远都会盲目自信,因为他一直都是佼佼者,没有碰过壁,还不曾有敬畏之心,时常会有这样的幻觉:”我与天同高(齐天大圣)“。我们只有结合自身的综合情况客观的评价自己,注意是”综合情况“,不只是局限于你的工作能力、吹牛能力,还...原创 2019-01-30 22:47:42 · 2370 阅读 · 0 评论 -
Android高级UI开发(二十一)AppBarLayout与CollapsingToolbarLayout一分钟组合出视差效果
今天继续看AppBarLayout的一个强大功能,那就是它结合CollapsingToolbarLayout可以1分钟作出我们常用的滑动视差效果,效果图如下:1.布局activity_main.xml其实实现这个效果我们只需要配置布局文件即可,不需要写复杂的程序代码。接下来我们就来看一下这个神奇的布局文件,我们仍以MainActivity的activity_main.xml布局为例:...原创 2019-02-24 22:26:54 · 3806 阅读 · 0 评论 -
Android高级UI开发(二十二)自定义Behavior监听控件的状态
我们在前面几篇文章中曾经讲到过behavior,如Android高级进阶(十九)监听列表的滑动从而隐藏或显示Toolbar与Fab浮动按钮.在这篇文章里我们为FloatingButton配置了一个FloatingButtonBehavior,用来监听CoordinatorLayout根布局发过来的"RecyclerView的滑动事件",从而根据RecyclerView的滑动方向来...原创 2019-03-03 17:27:43 · 2695 阅读 · 0 评论 -
Android高级UI开发(二十三)自定义behavior(2)监听控件滑动
上一篇我们讲了自定义behavior监听控件的状态变化:例如垂直方向位移的变化。今天我们要谈的是如何监听控件的滑动事件。就是说当布局文件里有一个可滑动的控件(如RecyclerView、NestedScrollView、Viewpager页面里的NestedScrollView)滑动时,我们自定义的behavior可以帮观察者监听到该类事件,同时做相应的处理。我们还是从布局文件讲起,在此之前先看以...原创 2019-03-10 13:00:43 · 3514 阅读 · 1 评论 -
Android高级UI开发(二十四)属性动画之大师在流浪、小丑在天堂
昨天刷抖音的时候,被一个在路灯下诵读《战国策》、《尚书》、《左转》的流浪汉感动。今天为了致敬大师,以大师的图片作为素材来演示一下Android中的属性动画。Android的动画分为补间动画、帧动画、属性动画。(本文中的实例工程下载地址:https://download.csdn.net/download/gaoxiaoweiandy/11033672)补间动画:透明度、缩放、旋转、...原创 2019-03-19 10:09:31 · 2043 阅读 · 0 评论 -
Android高级UI开发(二十五)属性动画实战案例之流浪大师与乔帮主
在上一篇文章里我们介绍了属性动画的基础知识,今天我们综合运用属性动画的知识来完成一个动画案例。首先,看一下这个动画效果:源码下载地址:https://download.csdn.net/download/gaoxiaoweiandy/110855521. 分析这个动画案例第一个动画(浏览大师的动画)是:当点击顶部“大师”按钮时触发的,浏览大师的整个布局(包括按钮+图片)与“”乔帮...原创 2019-04-03 15:47:52 · 1735 阅读 · 0 评论 -
Android高级UI开发(二十六)Material Design动画--水波纹与揭露效果
今天我们来介绍下Material Design按钮自带的一些动画:水波纹与揭露效果。源码下载地址:https://download.csdn.net/download/gaoxiaoweiandy/110883251. 水波纹效果1.1 布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xm...原创 2019-04-04 14:28:15 · 2364 阅读 · 0 评论 -
Android高级UI开发(二十七)Material Design之转场动画(一)
什么是转场动画,我们先看一副动图:当我们点击第一个“湖面”缩略图时,跳转到第二个页面时有一个从左上角扩展图片的动画,而且这2张图片展示的是同一个内容元素,给用户一个很好的过渡效果,平滑的从第一个页面过渡到第二个页面。今天我们用一些简单的实例来展示一下转场动画如何实现,我们接下来要实现的第一个转场动画效果如下:我们来看一下这里面是如何实现的(源码下载地址:https://d...原创 2019-04-06 21:12:53 · 2198 阅读 · 0 评论 -
Android高级UI开发(二十八)转场动画之多个共享元素、滑入滑出、淡入淡出
上一篇我们介绍了转场动画的基本用法,最关键的就是两个页面上的控件有一个共享名属性:transitionName,将两个页面上的两个控件的transitionName属性设置为相同的名字,然后再结合少量的JAVA代码就可以实现页面跳转的同时两个控件执行转场动画。上一篇我们只介绍了一组控件的共享元素:transitionName,那么如果有多组这样的控件,也就是说有多个共享元素的情况下,如何用JAVA...原创 2019-04-09 10:41:12 · 2324 阅读 · 0 评论 -
Android高级UI开发(二十九)自定义动画框架-让scrollview里的所有控件随着滑动的距离执行各自的动画
这次我们做一个动画框架,配置scrollview里包含的控件的自定义属性,就可以实现滑动Scrollview时,里面的控件根据滑动的距离执行各自的动画进度。scrollivew里包含的这些控件可以是任意常用的控件,如 imageView,Button,TextView等。我们将给这些普通的系统控件配置自定义属性!看到这里是不是觉得无法实现,因为系统的ImageView,Button...原创 2019-04-20 17:38:40 · 2467 阅读 · 0 评论 -
Android高级UI开发(三十)让系统控件识别自定义属性的第二种方法:视差动画框架实例
上一篇已经讲了让系统控件如Imageview识别自定义属性的方法一: 自定义LinearLayout,在addview的时候,给每一个系统控件外层再包裹一个自定义VIEWGROUP,然后这个VIEWGROUP来识别自定义属性并执行动画。今天我们讲第二种方法,与第一种方法有点雷同,就是在解析XML中的系统控件时,解析出属性及属性值,把这个控件如Imageview上的自定义属性解析出来封装在一个TAG...原创 2019-04-24 22:29:16 · 1841 阅读 · 0 评论 -
Android高级UI开发(三十一)Android View的事件分发机制详细版(如何阅读与分析源码)
五一还过的快乐吗,是不是收假第一天感觉好累。今天为大家讲一下VIEW的事件分发过程,来激活大家想要提高技术水平的欲望,这样也许就不累了吧。虽然网上有很多关于事件分发的文章,大多数思路都不是那么顺。我们做任何事情都应该从最简单的部分做起,从最简单的事情倒推其原理与过程,一步一步拼接成复杂的整体。那好,就让我们从最简单的Button点击事件说起(示例源码:https://downloa...原创 2019-05-05 17:48:26 · 1859 阅读 · 0 评论 -
Android高级UI开发(三十二)事件分发2:ViewGroup事件分发机制
上一篇我们讲了View的事件分发,我们回忆一下当时总结的结论:View事件执行流程dispatchTouchEvent---->onTouchListener(onTouch返回false)------> onTouchEvent---->onClick 2.dispatchTouchEvent的返回值对事件分发的影响当返回true时,后续的事件,该View还...原创 2019-05-07 15:05:10 · 1833 阅读 · 0 评论 -
Android高级UI开发(三十三)android setContentView布局加载流程(一) 布局结构
想必大家都写过Activity中onCreate函数里的setContentView(R.layout.main);这行代码吧。 这行代码是如何将我们的布局显示到Activity里的?今天就带大家来解析一番。首先,我们进入到Activity的setContentView函数里,代码如下:/** * Set the activity content from a layout resou...原创 2019-07-10 18:01:24 · 2066 阅读 · 0 评论 -
Android高级UI开发(三十四)android setContentView布局加载流程(二) Decorview是如何绘制到PhoneWindow上去的(即如何绘制到Activity)
我们在上一篇研究了DecorView的创建过程,一个Activity关联一个PhoneWindow,每一个PhoneWindow创建了自己的DecorView。今天我们来分析 DecorView是如何绘制到PhoneWindow上去的,分析过程中得出的重要结论将使用粗体显示。1. 预先给出DecorView绘制到PhoneWindow上的流程图:2. 根据上述流程图,用Andro...原创 2019-08-08 11:44:43 · 1891 阅读 · 0 评论