自定义View
AD钙奶-lalala
叩首问路 码梦为生
展开
-
视差动画 - 雅虎新闻摘要加载
今天我们来实现这样一个效果:自定义属性:<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="LoadingView"> <attr name="loading_radius" format="dimension"/&g...原创 2019-12-04 14:58:25 · 169 阅读 · 0 评论 -
视差动画 - 酷狗音乐引导页
下面来看一个效果:完整代码如下:public class MainActivity extends AppCompatActivity { private ParallaxViewPager vp; @Override protected void onCreate(Bundle savedInstanceState) { super.o...原创 2019-12-03 18:02:55 · 434 阅读 · 0 评论 -
贝塞尔曲线 - 花束直播点赞效果
今天来实现这样的点赞效果:自定义ViewGroup:public class LoveLayout extends RelativeLayout { private Interpolator[] mInterpolators; private Random random = new Random(); private Drawable[] drawables...原创 2019-11-21 11:18:54 · 267 阅读 · 0 评论 -
属性动画 - 自定义插值器
自定义插值器之前,我们先来看一下系统提供的插值器。为了方便我们来看一个最简单的:LinearInterpolator。public class LinearInterpolator extends BaseInterpolator implements NativeInterpolatorFactory { public LinearInterpolator() { }...原创 2019-11-20 17:39:09 · 217 阅读 · 0 评论 -
Touch事件分发 - 汽车之家折叠列表效果
效果预览:需求分析:1 后面的TextView不能拖动 2 ListView列表只能垂直拖动 3 垂直拖动的范围只能是后面菜单 View 的高度 获取控件的宽高一定是要在测量完毕之后才能去拿,也就是要在onMeasure()之后 4 手指松开的时候两者选其一,要么打开要么关闭 5 菜单View打开的时候拦截事件,菜单闭合且向下滑动且滑动到ListView顶部时拦截事件...原创 2019-11-19 16:30:36 · 171 阅读 · 0 评论 -
ViewDragHelper的简单使用
开发中经常会遇到下面这样的卡片式拖动效果:借助系统提供的ViewDragHelper实现这个需求很简单。public class VerticalDragListView extends FrameLayout { private ViewDragHelper mViewDragHelper; public VerticalDragListView(@NonNul...原创 2019-11-19 13:59:20 · 149 阅读 · 0 评论 -
属性动画 - 一个LoadingView效果
我们经常会看到这样的网络加载效果:思路分析:1.这个控件是一个组合控件,我们需要一个自定义圆,然后一个自定义ViewGroup排列这几个圆。2.在这个ViewGroup里面找到这些圆的对象,然后添加属性动画。3.监听动画事件,处理变色效果。圆的绘制public class MyCircleView extends View { private int ci...原创 2019-11-19 10:38:56 · 199 阅读 · 0 评论 -
贝塞尔曲线 - 实现消息拖拽效果
在QQ或者微信中,都会有消息拖拽效果:实现起来其实都非常的简单,上代码:public class BezierView extends View { private Paint mPaint; //两个圆 圆心点 private PointF c1,c2; private float r2 = 25; private float r1 = ...原创 2019-11-12 18:27:16 · 356 阅读 · 0 评论 -
二阶贝塞尔曲线
后面我们要写一个消息拖拽的效果,中间用到了二阶贝塞尔曲线的知识,今天我们就来看一下二阶贝塞尔曲线:来看一张动态图:给定点P0、P1和P2,二阶贝塞尔曲线是由下述方程产生的轨迹二阶贝塞尔曲线的直接方程上面这个方程可能大家看的不太理解,大家也不用去深究。下面我们来理解下这条曲线的轨迹是如何生成的。对于AB这条直线上的任意点D,有AD/AB = BE/BC=a,连接...原创 2019-11-12 18:07:47 · 829 阅读 · 0 评论 -
属性动画 - 常见多条目筛选
今天我们结合属性动画实现下面的效果:需求分析:这个需求是一个自定义View,而且也是组合控件,和58同城中自定义View是一样的,那么我们来分析下它这个效果的布局是怎样的?我们打算采用 LinearLayout。布局 = 整体是垂直的LinearLayout :1 最上边用 LinearLayout包裹,放置多个Tab,并且是可点击的View;2 中间是菜单内容(FrameLa...原创 2019-11-12 14:49:32 · 94 阅读 · 0 评论 -
自定义View基础 - 圆的绘制
所谓基础不牢,地动山摇。今天通过一个基础的例子来看一下自定义View的一些套路:没错,就是这么简单。我们来分析一下它的实现流程:我们希望它的宽高不收用户设置的影响,于是重写onMeasure()方法: @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { ...原创 2019-11-07 16:02:06 · 135 阅读 · 0 评论 -
自定义View - 仿58同城动画加载效果
今天首先来看一个效果:首先我们需要自定义一个ShapeView:package com.example.anim_01;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;impor...原创 2019-11-07 14:55:41 · 239 阅读 · 0 评论 -
Android自定义View - 实现仿QQ拖拽效果
实际开发中,我们经常需要实现如下效果:上代码:package com.lzy.draglayout.ui;import android.animation.ArgbEvaluator;import android.animation.FloatEvaluator;import android.content.Context;import android.graphics.C...原创 2019-11-05 15:10:27 · 223 阅读 · 0 评论 -
Android ViewGroup事件分发机制源码分析
首先我们来看一个例子:我们先自定义一个线性布局:package com.example.a03;import android.content.Context;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.util.Log;import and...原创 2019-11-05 11:19:55 · 96 阅读 · 0 评论 -
Android View事件分发机制源码分析
下面我们来看一个demo:package com.example.a03;import android.content.Context;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.util.Log;import android.view.Mot...原创 2019-11-05 10:38:19 · 97 阅读 · 0 评论 -
自定义View - 接口回调练习
记得在刚开始接触Android的时候,接口回调算是一个重点也是一个难点。我们看下面一个效果:当我们点击不同的字母时,将对应字符显示到屏幕中央。首先我们自定义一个接口:public interface OnTListener { void show(String s,boolean isShow);}在对应自定义View里面定义该接口:package co...原创 2019-11-04 14:50:46 · 288 阅读 · 0 评论 -
自定义View - 通讯录字母索引列表高亮显示效果
在上一篇自定义View的基础上,今天我们来实现如下的效果:当我们手指点击或者移动的时候,在对应的字母区域上,我们高亮显示该字母:package com.example.michael.view_03;import android.content.Context;import android.graphics.Canvas;import android.graphics.Col...原创 2019-11-04 14:16:29 · 375 阅读 · 0 评论 -
自定义View - 通讯录字母索引列表绘制
今天我们要实现如下的效果:上代码:/** * Created by Michael on 2019/11/4. */public class LettersView extends View { String [] lts = {"A","B","C","D","E","F","G","H","I", "J","K","L","M","N",...原创 2019-11-04 13:39:23 · 168 阅读 · 0 评论 -
自定义View - 老司机带你实现五星好评效果
这个效果想必大家都非常熟悉,那么Android如何自定义实现这种效果呢?首先自定义属性:<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="RatingStar"> <attr name="starNormal" for...原创 2019-11-01 17:41:48 · 272 阅读 · 0 评论 -
自定义View - 打造炫酷进度条
下面我们来实现如下效果:第一步:创建attrs文件夹,自定义属性:<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="MyProgress"> <attr name="out_color" format="color"/...原创 2019-11-01 15:28:30 · 128 阅读 · 0 评论 -
自定义View - 仿QQ运动步数效果
今天我们实现下面这样的效果:首先自定义属性:<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="MyQQStep"> <attr name="out_color" format="color"/> ...原创 2019-11-01 13:53:06 · 236 阅读 · 0 评论 -
ViewGroup默认不触发onDraw()方法源码分析
首先我们思考一个问题:如果我们按照如下的方式自定义TextView,会有显示吗?<?xml version="1.0" encoding="utf-8"?><resources> <!--name 自定义View的名字 TextView--> <declare-styleable name="MyTextView"> ...原创 2019-11-01 10:55:03 · 171 阅读 · 0 评论 -
自定义TextView
首先我们在res/values目录下建一个xml文件夹,一般取名为attrs。<?xml version="1.0" encoding="utf-8"?><resources> <!--name 自定义View的名字 TextView--> <declare-styleable name="MyTextView"> ...原创 2019-10-31 18:19:16 · 116 阅读 · 0 评论 -
自定义View - baseLine和FontMetrics
我们在自定义TextView时的onDraw()方法是这样写的: @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint.FontMetricsInt fontMetricsInt = mPaint.getFontMetricsInt(); ...原创 2019-10-31 18:11:40 · 304 阅读 · 0 评论 -
自定义View简介 - onMeasure,onDraw,自定义属性
1.自定义View简介自定义View可以认为是继承自View或者ViewGroup。经常是处理一些系统没有的效果(如ImageView,TextView,Button实际也是自定义view)2.自定义View介绍常用属性三个构造函数public class MyTextView extends View { //构造函数在代码new的时候调用 public My...原创 2019-10-31 16:33:53 · 152 阅读 · 0 评论