自定义view 之多个引导层动画效果
SupernatantView
- 如果我英文还可以的话这个应该叫做漂浮在上层的view---引导层
- 今天闲来无事看了网上的一些引导层案例总感觉如果不是很舒服,就是类似于很死板的显示和消失
- 我在想能不能弄点动画上去看着舒服一些 所以就有了以下的gif gif有点短但是没办法太长了github传不上去 不知道是不是我操作不太对
刚开始点击屏幕是没有反应的 因为我把点击事件拦截了 后面代码可以看得到
因为我们产品汪没有这样的需求 所以我有的地方写的不是很严谨 包括指示箭头在下方如果下方距离不够箭头显示的时候 我也没有做判断 只是把大体的意思写出来了 大家如果想更改 可以看里边的注释 (偷偷告诉你们里边注释贼多 不怕你看不懂)
step 1
继承view 重写构造方法 和 onTouchEvent 和 draw 方法
public SupernatantView(Context context) {
this(context, null);
} public SupernatantView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
} public SupernatantView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr); }
onDraw 方法
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
onTouchEvent方法
@Override
public boolean onTouchEvent(MotionEvent event) { // return super.onTouchEvent(event);
return true; //拦截点击事件
}
step 2
初始化画笔方法 单独抽取出来
private Paint createPaint(int paintColor, int alpha, int textSize, Paint.Style style, int linWidth) {
Paint paint = new Paint(); //初始化画笔
paint.setAntiAlias(true); //抗锯齿
paint.setDither(true); //防抖动
paint.setStrokeCap(Paint.Cap.ROUND); //笔触风格为圆角
paint.setStrokeJoin(Paint.Join.ROUND); //结合处形状为圆角
paint.setColor(paintColor); //设置颜色
paint.setAlpha(alpha); //设置透明度
paint.setTextSize(textSize); //设置文字大小
paint.setStyle(style); //设置样式
paint.setStrokeWidth(linWidth); //设置边宽度
return paint;
}
step 3
初始化各种数值 包括 屏幕的宽高 状态栏
public static int[] getScreenSize(Context context) {
DisplayMetrics metrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(metrics);
return new int[]{metrics.widthPixels, metrics.heightPixels};
} public static int getStatusBarHeight() {
return Resources.getSystem().getDimensionPixelSize(
Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android"));
}
step 4
一些基本的方法包括获取view 的屏幕坐标,获取view 的 RectF 具体在代码里会有详细的注释 给你先看个图片 没错就是这么详细 哦哈哈哈~~~
step 5
就是重写onDraw方法了 再加上计算一些动态数据之类的 代码太多就不贴出来了 大家如果感兴趣可以看看
github风火轮:https://github.com/guanhaoran/SupernatantView
QQ 765307272
自定义view 之多个引导层动画效果的更多相关文章
- Android自定义View 画弧形,文字,并增加动画效果
一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类 B ...
- 自定义view实现阻尼效果的加载动画
效果: > 需要知识: 1. 二次贝塞尔曲线 2. 动画知识 3. 基础自定义view知识 先来解释下什么叫阻尼运动 阻尼振动是指,由于振动系统受到摩擦和介质阻力或其他能耗而使振幅随时间逐渐衰减 ...
- Android自定义View实现仿QQ实现运动步数效果
效果图: 1.attrs.xml中 <declare-styleable name="QQStepView"> <attr name="outerCol ...
- 分析自定义view的实现过程-实现雪花飞舞效果(转载有改动)
声明:本文源码出自实现雪花飞舞效果(有改动)主要通过这篇文来分析自定义view的实现过程. 没事时,比较喜欢上网看看一些新的东西,泡在网上的日子就是一个很不错的网站. 下面开始了,哈哈.^_^ 大家都 ...
- Android 自定义View修炼-自定义加载进度动画XCLoadingImageView
一.概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色. ...
- Android动画效果之自定义ViewGroup添加布局动画
前言: 前面几篇文章介绍了补间动画.逐帧动画.属性动画,大部分都是针对View来实现的动画,那么该如何为了一个ViewGroup添加动画呢?今天结合自定义ViewGroup来学习一下布局动画.本文将通 ...
- Android 自定义View修炼-自定义弹幕效果View
一.概述 现在有个很流行的效果就是弹幕效果,满屏幕的文字从右到左飘来飘去.看的眼花缭乱,看起来还蛮cool的 现在就是来实现这一的一个效果,大部分的都是从右向左移动漂移,本文的效果中也支持从左向右的漂 ...
- 自定义View的编写
在项目的时候,很多情况要用到自定义View来达到自己想要的效果,所有自定义View的编写很重要. 首先看看所要实现的效果: 最上面的一行字“LogicView”每次从左向右滚动,下面的圆从角度0到36 ...
- 【转载】自定义View,有这一篇就够了
为了扫除学习中的忙点,尽可能多的覆盖Android知识的边边角角,决定对自定义View做一个稍微全面一点的使用方法总结,在内容上面并没有什么独特的地方,其他大神们博客上面基本上都有讲这方面的内容,如果 ...
随机推荐
- Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理
一.spring依赖注入使用方式 @Autowired是spring框架提供的实现依赖注入的注解,主要支持在set方法,field,构造函数中完成bean注入,注入方式为通过类型查找bean,即byT ...
- 如何 打包整合linux系统文件夹 用于刷机包等等, 其中包括打包 句号开头 . 开头的文件, 排除系统文件 等
tar --exclude=proc/* --exclude=sys/* -cvjf rootfs.tar.bz2 * .[!.]* -R
- 【转】Oracle基础结构认知—进程及逻辑结构 礼记八目 2017-12-17 19:33:21
原文地址:https://www.toutiao.com/i6500477672349499917/ 一. Process Structure进程结构 Oracle有两种类型的进程: 服务器进程和后台 ...
- C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则
1 昨日回顾 2 多态的原理 1 要有继承 2 要有子类重写父类的虚函数 3 父类指针(或者引用)指向子类对象 (动态联编 虚函数表 3 证明vptr指针的存在 4 vptr指针在构造父类的时候是分步 ...
- nodejs 使用crypto实现sha256\md5加密
var crypto = require('crypto'); var hash = crypto.createHash('sha256');// sha256或者md5 hash.update('1 ...
- nyoj14-会场安排问题
会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就 ...
- --without-v4l ,make clean, 重新make即可。
--without-v4l ,make clean, 重新make 2011-02-27 17:38 Error: X11 support required for GUI compilation
- 在 CentOS7 上配置 nginx 虚拟主机
创建配置文件保存目录,其中 sites-available 用来实际保存配置文件,sites-enabled 用来保存符号链接 : mkdir /etc/nginx/sites-available m ...
- Python学习笔记(1)Pycharm基本认识
Pycharm的使用 集成开发环境(IDE,集成开发环境) VIM #经典的linux下的文本编辑器 Pycharm,主要用于python开发的ide PyCharm常用快捷键 Ctrl + / # ...
- Spring知识梳理
Spring框架介绍 Spring是一个贯穿各层为javaEE提供一站式解决方案的框架,Spring中主要有容器模块,AOP模块,ORM和DAO模块,Web模块等等,具体有以下功能特征. IOC(或者 ...