Android高级UI
文章平均质量分 86
好好学习!
独饮敌敌畏丶
做自己该做的事,并接收它的事与愿违!
展开
-
Material Design之CoordinatorLayout原理剖析
一.CoordinatorLayout介绍1.使用场景一般作为应用的顶层布局,同时也作为一个管理容器,管理与子view或者子view之间的交互。那么都具体管理啥呢?可以分成四个部分2.作用①处理子控件之间依赖下的交互②处理子控件之间的嵌套滑动③处理子控件的测量与布局④处理子控件的事件拦截与响应以上四个功能,都建立于CoordainatorLayout中提供的一个叫做Behavior的“ 插件”之上。Behavior内部也提供了相应方法来对应这四个不同的功能。那么都有哪些方法呢?3.Beha原创 2021-04-13 21:13:08 · 2404 阅读 · 9 评论 -
Material Design之NestedScrolling嵌套滑动机制源码分析
一.回顾下事件分发机制二.为什么需要嵌套滑动机制为了解决传统事件滑动机制的bug三.介绍NestedScrollingParent和NestedScrollingChild原创 2021-04-11 22:32:43 · 327 阅读 · 1 评论 -
Material Design实战之可折叠式标题栏
CollapsingToolbarLayout1.基本介绍CollapsingToolbarLayout是一个作用于Toolbar基础之上的布局,它可以让Toolbar的效果变得更加丰富,不仅仅是展示一个标题栏,还可以实现更加华丽的效果注意:CollapsingToolbarLayout是不能独立存在的,它在设计的时候就被限定只能作为AppBarLayout的直接子布局来使用,而AppBarLayout又必须是CoordinatorLayout的子布局。。2.具体使用①我们需要一个具体展示水果详原创 2021-04-10 20:48:50 · 243 阅读 · 0 评论 -
Material Design实战之卡片式布局
一.MaterialCardView1.基本介绍MaterialCardView是用于实现卡片式布局效果的重要控件,它也是一个FrameLayout,只是额外提供了圆角和阴影等效果,看上去会有立体的感觉。我们在其布局中放什么,那么这个东西就会在一张卡片中了。2.Glide库一般里面会放图片控件,所以这里要学习一下Glide。Glide是一个超级强大的开源图片加载库,它不仅可以用于加载本地图片,还可以加载网络图片,GIF图片甚至是本地视频。最重要的是,Glide用法非常简单,只需要几行代码就能轻松实现原创 2021-04-10 20:01:14 · 576 阅读 · 0 评论 -
Material Design实战之FloatingActionButton与Snackbar与CoordinatorLayout
一.FloatingActionButton1.简介立面设计是Material Design的一个非常重要的设计思想,而FloatingActionButton(悬浮按钮)就是其中最简单也最具代表性的一种。2.使用使用其实很简单,就一个控件 <com.google.android.material.floatingactionbutton.FloatingActionButton android:layout_width="wrap_content"原创 2021-04-10 19:21:02 · 195 阅读 · 0 评论 -
Material Design实战之DrawerLayout与NavigationView
一.DrawerLayoutDrawerLayout就是滑动菜单。DrawerLayout是一个布局,它允许放入两个直接子控件,第一个子控件是主屏幕显示的东西,第二个子控件是滑动菜单里面显示的东西。①所以我们可以在MainActivity的xml文件中中<?xml version="1.0" encoding="utf-8"?><androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.原创 2021-04-09 16:38:46 · 169 阅读 · 0 评论 -
Material Design实战之ToolBar
Toolbar1.简介Toolbar 是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google 非常推荐大家使用 Toolbar 来作为Android客户端的导航栏,以此来取代之前的 Actionbar 。与 Actionbar 相比,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在Activity的顶部,而是可以放到界面的任意位置。2.ActionBar从哪来的呢?其实是根据项目中指定的主题来显示的3.Toolb原创 2021-04-08 19:26:25 · 396 阅读 · 3 评论 -
使用阿里云oss下载图片
首先还是要添加依赖,然后创建OssDownload 类import android.content.Context;import android.os.Environment;import android.util.Log;import com.alibaba.sdk.android.oss.ClientConfiguration;import com.alibaba.sdk.android.oss.ClientException;import com.alibaba.sdk.android.o原创 2020-11-30 17:39:30 · 2251 阅读 · 2 评论 -
使用阿里云oss上传图片
首先在build.gradle(Module)中实现implementation 'com.aliyun.dpa:oss-android-sdk:+'implementation 'com.squareup.okhttp3:okhttp:3.4.1'然后在Manifest中加上<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.p原创 2020-11-30 12:57:34 · 810 阅读 · 0 评论 -
RecyclerView回收复用机制源码解析
一.几个问题1.回收什么?复用什么?都是ViewHolder。它是对ItemView的封装,可以理解成就是ItemView二.回收/缓存机制我们研究是问题,就是你使用RecyclerView,滑动屏幕的时候,那些移出屏幕的ViewHolder是怎么被回收的,那些刚进来屏幕的ViewHolder是怎么被复用的。我们最开始想到的应该是去RecyclerView的onTouchEvent方法,因为滑动屏幕的时候触发了回收复用机制。在onTouchEvent中,有两种大情况,一是move事件,再一个是n原创 2021-04-01 20:20:31 · 880 阅读 · 1 评论 -
RecyclerView项目实战之:自动吸顶
1.将MainActivity布局改成RelativeLayout<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com原创 2021-03-29 23:32:45 · 2169 阅读 · 3 评论 -
从0开始搞一个锦鲤游动——动起来
上一篇文章主要讲了如何绘制一条锦鲤,而今天这篇文章,就讲如何让我们的锦鲤动起来。这次需要写一些比较复杂的算法,与数学关系很大,个别地方可能难以理解。不过大家可以多看两遍仔细斟酌,如果还是不理解的话可以来评论区交流。效果展示一.属性动画(ValueAnimator)1.属性动画ValueAnimator介绍①ValueAnimator没有重绘,所以需要自己调用addUpdateListener方法,需要结合AnimatorUpdateListener使用②操作的对象的属性不一定要有getter和s原创 2021-03-24 22:04:30 · 787 阅读 · 1 评论 -
从0开始搞一个锦鲤游动——画锦鲤
首先大家可以看一下这个鱼的图案一.前期准备1.新建一个项目2.将MainActivity的XML文件写成<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="htt原创 2021-03-23 16:59:15 · 631 阅读 · 1 评论 -
一篇文章带你掌握自定义TextView
前言自定义View是分两种的,一种是继承自View,一种是继承自ViewGroup。之前我写过关于继承自ViewGroup的博客,同时还有流式布局实战(流式布局讲解链接)。那么这一篇主要是来继承自View的TextView绘制。这边为了演示方便,就继承自AppCompatTextView。因为这样可以不用重写onMeasure。把重心放在draw上面,即只需要重写onDraw。两个东西,画布和画笔,即Canvas和Paint。这两个东西就不过多介绍了OK,下面让我们走进自定义TextView1.b原创 2021-03-19 00:41:16 · 3109 阅读 · 15 评论 -
源码角度把Android事件处理与分发理透
首先得知道有什么事件(针对单点触摸)MotionEvent注意:ACTION_MOVE会多次触发(源码中同一块代码会调用多次)ACTION_CANCLE先记住,是事件被上层拦截时触发,至于具体的,后面就知道了知道了有什么事件,下面就得知道谁能怎么处理事件具体来说,就是继承自View的只能处理事件,继承自ViewGroup的才能分发事件。ViewGroup先要走分发流程,再走处理流程。而View只能走处理流程当一个事件发生的时候,它传递的顺序,可以用这么一张图来表示触摸屏幕后,首先接触到事原创 2021-03-17 00:14:28 · 2550 阅读 · 13 评论 -
apk资源加载过程源码分析
一.了解resources.arsc1.找到resources.arsc我们将目录显示形式换为Project,然后按如图所示的顺序点击目录,,然后就会显示出这些东西2.resources.arsc简介在c++层build的时候,干了一个事情,就是生成如图箭头指向的那个文件。那个文件是一个二进制文件,类似于一个数据库。我们说“资源加载”就是加载的这个文件。它存放着所有的资源信息。就是一个app的资源索引表。App资源根据配置发生变化,索引到相应的资源都要依赖它。例如Android设备语言,屏原创 2021-03-09 18:13:47 · 817 阅读 · 0 评论 -
一篇文章掌握SharedPreferences
一.基本介绍1.简单介绍SharedPreferences是一种轻型的存储方式,它的原理是基于xml存储key-value键值对数据,通常用来存储一些简单的配置信息。存储位置:/data/data/{包名}/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。2.优缺点分析优点:SharedPreferences对象与SQLite数据库相比,更加的轻量级,不需要创建数据库,创建表,写SQL语句等一系列原创 2021-03-08 19:17:39 · 320 阅读 · 0 评论 -
Android布局加载流程源码分析
布局层次原创 2021-03-07 10:05:45 · 2984 阅读 · 17 评论 -
安卓高级UI之自定义ViewGroup2.0(深入理解)
高级UIJava和kotlin是语言基础,自定义view是安卓基础。原创 2020-11-01 19:58:04 · 549 阅读 · 2 评论 -
安卓高级UI之自定义ViewGroup1.0
1.自定义View分成两类:①自定义View:可以称为控件②自定义ViewGroup:可以称为组件2.自定义View流程onMeasure()和onLayout()是用来显示布局的,onDraw()是用来显示的,而且必须按这个顺序来如果是自定义View,很少实现onLayout()方法而如果是ViewGroup,很少实现onDraw()方法,因为子控件都已经把自己绘制好了。除非绘制一个背景色之类的所以:自定义View主要是实现onMeasure和onDraw方法自定义ViewGroup主要原创 2020-10-25 23:15:03 · 294 阅读 · 0 评论 -
详解Lambda表达式和高阶函数
一.Lambda表达式1.定义Lambda就是一小段可以作为参数传递的代码。正常情况下,我们向某个函数传参时只能传入变量,而借助lambda却可以允许传入一小段代码(这一小段代码究竟是多小也没做要求,只要别太长就好,否则会影响代码的可读性),这就是lambda的定义,也是特别之处。2.lambda表达式的语法结构{参数名1:参数类型,参数名2:参数类型->函数体}参数列表的结尾使用一个**->**符号,表示参数列表的结束以及函数体的开始。函数体中可以编写任意行代码(不建议太长原创 2020-10-08 18:23:15 · 482 阅读 · 0 评论 -
安卓复习提高篇之动画归纳总结 2020.8.22
以下内容是根据《第一行代码》作者的微信公众号里面的文章写的,算是做了个笔记!内容1.补间动画缺点2.属性动画定义3.ValueAnimator4.ObjectAnimator5.AnimatorSet6.Animator监听器一.补间动画缺点①无法对一个非View的对象进行动画操作②补间动画只能够实现移动、缩放、旋转和淡入淡出这四种动画操作③补间动画只是改变了View的显示效果而已,而不会真正去改变View的属性二.属性动画定义属性动画已经不再是针对于View来设计的了,也不原创 2020-08-22 16:17:09 · 136 阅读 · 0 评论 -
安卓复习提高篇之Activity归纳总结 2020.8.11
1.Activity的基本用法一.Activity的基本用法1.Activity创建①Generate Layout File表示会自动为你创建的Activity创建一个对应的布局文件②Launcher Activity表示会自动将你创建的Activity设置为当前项目的主Activity③Backwards Compatibility表示会为项目启动向下兼容旧版系统的模式(一般都要勾上)注意:项目中的任何Activity都应该重写onCreate()方法2.创建和加载布局①最好是每一个Ac原创 2020-08-12 19:51:49 · 702 阅读 · 0 评论