![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自定义view与动画
有心好书
种一棵树最好的时间是十年前,其次是现在
展开
-
android广告栏banner封装
一.原因 最近在做开发时,发现一个问题:凡是涉及广告banner的地方都是一份代码拷贝来拷贝去,完全未封装,将所有的实现都暴露在activity和fragment中。这样子导致以后想在某个页面引入一个banner非常的繁琐麻烦,且不利于代码的维护。而且产品又特别喜欢在页面上加banner。最近时间较为充裕,我就尝试了一下把banner封装成一个自定义控件,供以后在项目中使用。二.效果三.原理ban原创 2016-02-02 16:16:05 · 3930 阅读 · 2 评论 -
筛选框自定义view实现
筛选框自定义view实现缘起:最近再做一个需求,效果如下:我们看了一下之前的实现方案多数都是采用popupwindow的方案,popupwindow应该是通用的方案,但是体验并不是很好,此外,因为我司的业务逻辑超级复杂(吐槽下),最终我在查找了一些网络资料后,决定采用控制view的显示和隐藏来实现之。大致思路:1.上面横条按钮作为一个布局。2.下面作为一个浅色的透明布局,该布局里面放一个固定高度的v原创 2016-11-04 10:16:09 · 1149 阅读 · 0 评论 -
【动画系列】Drawable动画
一.说明:我们依旧可以使用xml或者java方式实现帧动画。但是依旧推荐使用xml,具体如下: animation-list必须是根节点,包含一个或者多个元素,属性有:android:oneshot true代表只执行一次,false循环执行。 item类似一帧的动画资源。 item animation-list的子项,包含属性如下:android:drawable 一个frame的Drawa原创 2016-06-07 09:49:30 · 710 阅读 · 0 评论 -
【自定义View系列】事件分发(带代码逻辑图)
本部分介绍View的一个核心知识点:事件分发机制。事件分发机制不仅仅是核心知识点更是难点,不少初学者甚至中级开发者面对这个问题都会觉得困惑。另外,View的另一大难题滑动冲突,它的解决方法的理论基础就是事件分发机制,因此掌握好View的事件分发机制是十分重要的。为什么需要事件分发机制http://blog.csdn.net/aigestudio/article/details/44260301htt原创 2016-06-01 09:41:11 · 1872 阅读 · 0 评论 -
【动画系列】属性动画
为什么要引入属性动画补间动画缺陷: 1.它只能够实现移动、缩放、旋转和淡入淡出这四种动画操作,那如果我们希望可以对View的背景色进行动态地改变呢?很遗憾,我们只能靠自己去实现了。说白了,之前的补间动画机制就是使用硬编码的方式来完成的,功能限定死就是这些,基本上没有任何扩展性可言。 2.它只是改变了View的显示效果而已,而不会真正去改变View的属性。什么意思呢?比如说,现在屏幕的左上角有一个原创 2016-06-07 09:50:36 · 1097 阅读 · 0 评论 -
zaker splash页面实现
一.效果二.代码PullDoorView/** * Created by niehongtao on 16/6/8. * zaker自定义效果页面 */public class PullDoorView extends RelativeLayout { private Scroller mScroller; private int mScreenWidth = 0; p原创 2016-06-08 17:21:28 · 862 阅读 · 0 评论 -
【动画系列】视图动画
一.渐变:alphaxml说明&小例子透明度控制动画效果 alpha 浮点型值: fromAlpha 属性为动画起始时透明度 toAlpha 属性为动画结束时透明度 说明: 0.0表示完全透明 1.0表示完全不透明 以上值取0.0-1.0之间的float数据原创 2016-06-07 09:50:05 · 785 阅读 · 0 评论 -
【自定义view系列】View的measure过程
View的测量过程是三大流程中最复杂的。 在现实生活中,如果我们要去画一个图形,就必须知道他的大小和位置。测量(测量view的宽和高),知道view的大小。一.LayoutParams LayoutParams继承于Android.View.ViewGroup.LayoutParams.LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上原创 2016-05-31 15:37:12 · 1668 阅读 · 0 评论 -
【自定义view系列】View的layout过程
layout即确定view的位置,知道view的位置。 通过debug的栈帧来明确源码方法的调用是阅读源码非常重要的工具,这里还是通过栈帧来分析view的layout过程。一.栈帧布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/a原创 2016-06-01 09:37:32 · 1450 阅读 · 0 评论 -
【自定义View系列】View的draw过程
将view绘制在屏幕上。Draw过程决定了view的显示,只有draw方法完成以后view的内容才能显示出来.如前,这里依然通过栈帧来辅助我们阅读View的draw过程的代码。一.栈帧 案例如上,这里在DebugTextView的onDraw方法上加上断点。栈帧如下:二.分析 这里我们看到draw也是从performTraversals开始的。这里我们抛开系统层面的影响,只分析我们的布局,即根布原创 2016-06-01 09:38:22 · 1199 阅读 · 0 评论 -
【自定义View系列】android的UI结构
一.androidUI相关理论 当ActivityThread接收到AMS发送start某个Activity后,就会创建指定的Activity对象。Activity又会创建PhoneWindow类-DecorView类-创建相应的View或者ViewGroup。创建完成后,Activity需要把创建好的界面显示到屏幕上,于是调用WindowManager类,后者于是创建一个ViewRoot对象,改原创 2016-06-01 09:39:44 · 1379 阅读 · 0 评论 -
【自定义View系列】导致View树重新遍历的时机
遍历View树就意味着整个View需要重新对其包含的子视图分配大小并重绘。导致重新遍历的原因主要有三个: 1. 视图本身内部状态变化引起重绘。 2. View树内部添加或者删除了View。 3. View本身的大小及可见性发生变化。状态的分类 在View视图中定义了多种和界面效果相关的状态。不同的状态一般会显示不同的界面效果,有多种操作会引起这些状态的改变。Android中应用程序是按照消息原创 2016-06-01 10:25:37 · 864 阅读 · 0 评论 -
滚动到顶部自动加载数据的listview封装
AutoLoadMoreListViewpackage com.example.niehongtao.listviewdemo;import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.widget.AbsListView;import and原创 2016-04-18 14:09:04 · 1584 阅读 · 0 评论 -
【自定义View系列】android自定义View概述
自定义view是一个综合的技术体系,本说明文档不去分析一个个具体的自定义view的实现,因为自定义view五花八门,是不可能全部分析一遍的。虽然我们不能把自定义view都分析一遍,但是我们能够提取出一种思想,而面对陌生的自定义view时,运用这个思想去快速解决问题。这种思想的描述如下:首先要掌握基本功,比如view的弹性滑动、滑动冲突、绘制原理等等,这些东西都是自定义view所必须的,尤其是那些看起原创 2016-06-01 09:42:15 · 1129 阅读 · 0 评论