android 开发 View _8_ 动态图片自定义View
转载地址:https://blog.csdn.net/mengks1987/article/details/77770922
先来看下效果:

是不是有一种熟悉感,其实这种效果使用序列帧动画也是可以实现的,这里我们介绍下如何使用自定义View实现。
这是我们的素材,一张图片上有5个京东小哥

我们只需要不停的变换小哥就好了,原理明白了我们看下代码:
public class JDLoadingView extends View {
private Bitmap bitmap;
private int index = 0;
private Paint paint;
private long lastTime = 0;
public JDLoadingView(Context context) {
this(context,null);
}
public JDLoadingView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs,0);
}
public JDLoadingView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr,0);
}
public JDLoadingView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.jd);
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//第2个和第3个一样的,作图的时候重复了,所以抛弃第二个
if(index == 2){
index = 3;
}
//计算显示第几个小哥
int left = bitmap.getWidth()/5*index;
int top =0;
int right = bitmap.getWidth()/5*(index+1);
int bottom = bitmap.getHeight();
//显示一个京东小哥
canvas.drawBitmap(bitmap,new Rect(left,top,right,bottom),new Rect(0,0,getWidth(),getHeight()),paint );
index++;
//显示到最后一个,再次从头开始显示
if(index >=5){
index = 0;
}
//100ms以后刷新
postInvalidateDelayed(100);
}
}
重点地方加上了注释,只要原理明白了,实现还是很简单的。
android 开发 View _8_ 动态图片自定义View的更多相关文章
- Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...
- Android 开发学习进程0.12 自定义view activity的属性
设置类似钉钉或tel的圆形用户名首字母头像 设置有两种方法,一是使用已有的库或自定义的view组件,但如果确定只是文字头像,也可使用textview的backgrou属性,调整资源文件使textvie ...
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆 ...
- Android绘图机制(一)——自定义View的基础属性和方法
Android绘图机制(一)--自定义View的基础属性和方法 自定义View看起来,确实看起来高深莫测,很多Android开发都不是特别在行这一块,这里面的逻辑以及一些绘画都是有一点难的,说一下我目 ...
- Android绘图机制(三)——自定义View的实现方式以及半弧圆新控件
Android绘图机制(三)--自定义View的三种实现方式以及实战项目操作 在Android绘图机制(一)--自定义View的基础属性和方法 里说过,实现自定义View有三种方式,分别是 1.对现有 ...
- 自定义View(一),初识自定义View
看了无数资料,总结一下自定义View 先明白一个自定义View的三大流程 onMeasure() 测量,决定View的大小 onLayout() 布局,决定View在ViewGroup中的位置 onD ...
- ym——Android开发MVP模式(攻克了View和Model的耦合)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 什么是MVP呢?它又和我们经常听到的MVC有什么关系了以及差别呢? MVP 是从经典的 ...
- android开发艺术探索读书笔记之-------view的事件分发机制
View的点击事件的分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生后,系统需要把这个事件传递给一个具体的View,而这个过程就是分发过程. 分发过程主要由以下 ...
- Android中显示gif动态图片
在android中显示一个静态图片比如png jpg等等都很方便,但是如果要显示一个gif 动态图片就需要进行一些处理. 本文是采用自定义view 然后进行重新onDraw方法来实现 首先自定义Vie ...
随机推荐
- python xml文件解析
参考链接:http://www.runoob.com/python/python-xml.html
- 你了解大O符号(big-O notation)么?你能给出不同数据结构的例子么?
大O符号表示当数据结构的元素增加的时候,算法规模或者性能在最坏场景下有多好. 大O符号也可以用来描述其他行为,比如说内存消耗.因为集合实际上就是一种数据结构,我们一般用大O符号基于时间.性能.内存消耗 ...
- Java容器解析系列(4) ArrayList Vector Stack 详解
ArrayList 这里关于ArrayList本来都读了一遍源码,并且写了一些了,突然在原来的笔记里面发现了收藏的有相关博客,大致看了一下,这些就是我要写的(╹▽╹),而且估计我还写不到博主的水平,这 ...
- 如何避免form提交进行页面跳转
正常的form表单提交后需要进行页面跳转,如果我们不希望进行页面跳转,那么按以下两个步骤,通过一个iframe就可以解决这个问题: 步骤一:首先在页面中定义一个空的不可见的iframe <!-- ...
- 第一章:深入web请求过程
初学者,总结一下读书笔记,望海涵. 1.1 B/S网络架构概述 相比于C/S架构,B/S网络架构(Browser/Server)从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,采用 ...
- traceroute命令初探
一.学习目标 了解traceroute基本概念 了解traceroute工作原理及详细过程 熟悉traceroute常用命令 一些注意点 二.traceroute基本概念 traceroute (Wi ...
- 黑客炼金术士 Seeker:可以攻破 4G 摸到你短信,还要为朝阳群众提供谍战工具
在北京上地的一家咖啡馆里,我在等待黑客 Seeker 的到来. 我对黑客 Seeker 颇有期待.他曾在黑客大会 KCon 上演讲<伪基站高级利用技术——彻底攻破短信验证码>,介绍利用 L ...
- Oracle创建表空间报错:O/S-Error: (OS 3) 系统找不到指定的路径
创建sql: CREATE TABLESPACE TBSP_1 DATAFILE 'E:/oracle/product/10.2.0/tablespaces/weblogic.dbf' ...
- mysql在查询中常见问题汇总
1.从主从表中查询外键内容(常见问题) 从主从表中查询对应的外键,需要指定外键的表,即sno=> student.sno或者score.sno 错误:select sno,sname,degre ...
- 【转载】 强化学习(十一) Prioritized Replay DQN
原文地址: https://www.cnblogs.com/pinard/p/9797695.html ------------------------------------------------ ...