背景

先说个事:最近我准备做个开源的博客园android客户端!符合Google最新的material design设计风格的!不知道有没有小伙伴愿意和我一起做呢?如果有愿意的,请私信我哦!!!!我还打算每天直播我们工作的进度,代码,以及BUG等!!




最近在做公司的一个项目!在登陆页面那儿有几个小知识点!虽然不是很难,但我猜想还是会有很多童鞋不会!所以我觉得我有必要写一篇博客来说明一下!下面呢我就先上一下效果动态图

看效果

1.用户头像是原形,另外周围有白色光圈!

2.用户名和密码输入框在空的时候点击登陆为抖动!

原理

1.用户头像是自定义ImageView,另外读者要注意画笔的模式,下面我先给个谷歌官方的截图

这里我就不过多介绍当设置了这些模式之后会有哪些效果,在下面的代码中我也只是说明我们要用的模式!!其他的读者自己去谷歌吧!!

2.第二个就是个简单的动画!!很简单!!

代码实现

一.我们先来看那个动画效果吧!我是直接写的xml文件 看代码:


这边我是用的移动x轴方向,动画只执行一次,另外,请读者注意一下,我设置了了个动画插值器(控制动画的变化的),我是用的cycleInterpolator这个,用来控制动画循环的

这个就是动画插值器了!!执行两次!

好了动画xml写完了,我们来看看怎么执行的?

很简单,看代码就行了!我就不过多解释了!!

二.自定义ImageView的实现

1.首先我得先确定ImageView的大小

在这里我的先对上面的代码中的MeasureSpec.getMode(int size)这个方法解释下?
这个方法是得到宽高大小模式的?他有三个返回值:



MeasureSpec.EXACTLY:这个是指当你的view的大小设置成fill_parent或者固定的大小 就是大小确定的

MeasureSpec.AT_MOST:这个是指当你的view的大小设置成wrap_parent的时候,不确定 自适应

MeasureSpec.UNSPECIFIED:这个是指当你的view的大小未指定的时候,这种情况不太可能出现 我们一般不考虑!


当我们了解这个的时候,就可以确定该view的宽高了!当MeasureSpec.EXACTLY的时候,就用设置的!当是 MeasureSpec.AT_MOST的时候,就是内部图片大小加padding值!
2.开始绘制 先看代码,在解释

首先我们得获取宽高的最小值,之后再把图片缩小/放大 到这个大小,之后就是得到圆形的图片!



我们直接看getRoundBitMap(Bitmap map,int min)方法,要传两个参数,一个原图还有大小!



首先我们得绘制一个和原图一样大小的画布之后绘制圆形在绘制图片,至此就得到了圆形图片了!另外,请读者注意下,就是在我们在画布上绘制了圆形之后,为画笔paint设置了Xfermode,对就是PorterDuff.Mode.SRC_IN!那这个是什么意思呢?还记得我们在文章开头现实的那个mode的所有类型吗?他已经很好的展示了当设置了这个写mode之后的效果!首先我得先说明下 dst是先绘制的,src是后绘制的?那现在就很好理解PorterDuff.Mode.SRC_IN这个的意思了!取dst和src的交集,但是是显示src(后绘制的)!现在,大家应该能明白我先画圆形在在绘制bitmap了吧!!


现在我们再来看ondraw()这个方法,当我们得到了圆形的bitmap之后,按理说直接绘制就行了,但是问题在于外面还有层白圈!其实很简单--就是同心圆而已,只不过半径不一样罢了。只要绘制个半径比bitmap大的圆就行啦!!!




至此,本篇文章结束!!



最后还得在说下:最近我准备做个开源的博客园android客户端!符合Google最新的material design设计风格的!不知道有没有小伙伴愿意和我一起做呢?如果有愿意的,请私信我哦!!!!我还打算每天直播我们工作的进度,代码,以及BUG等!!求联系哦!!!!!!!!

记一次androidd登陆页面的实现的更多相关文章

  1. Android笔记-4-实现登陆页面并跳转和简单的注册页面

    实现登陆页面并跳转和简单的注册页面   首先我们来看看布局的xml代码 login.xml <span style="font-family:Arial;font-size:18px; ...

  2. 小KING教你做android项目(二)---实现登陆页面并跳转和简单的注册页面

    原文:http://blog.csdn.net/jkingcl/article/details/10989773       今天我们主要来介绍登陆页面的实现,主要讲解的就是涉及到的布局,以及简单的跳 ...

  3. Springsecurity3.1.3配置多个登陆页面

    需求:网站的前台和后台不同的url需要不同的登陆页面,不同的异常捕获方式. spring-security3.1以后的版本支持多个<http>标签,因此本文所采用的方式就是使用两个,实际上 ...

  4. MUI APP防止登陆页面出现白屏

    最近在用MUI开发APP,总体效果,在IOS上,是完美的,但是在低端的Android手机上,就会出现性能问题,我个人觉得最严重的是,就是首页,就是APP打开的第一个页面,在iOS上,由于性能高,所以, ...

  5. web系统登陆页面增加验证码

    传统登陆页面中包含两个输入项: • 用户名 • 密码有时为了防止机器人进行自动登陆操作,或者防止恶意用户进行用户信息扫描,需增加动态验证码功能.此时,登陆页面中包含了三个输入项: • 用户名 • 密码 ...

  6. Ajax 提交session实效跳转到完整的登陆页面

    在spring security 中 Ajax提交时,session超时,局部加载登陆页面,为解决这个问题,重写ajax提交,返回的是modeview或者没有制定datatype时; 如果检测到加载到 ...

  7. js实现登陆页面的拖拽功能

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>登 ...

  8. iOS 本地加载html登陆页面

    Html的代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  9. 修改cas登陆页面-服务器端

    原文地址:http://www.cnblogs.com/liveandevil/archive/2013/03/06/2946341.html 1.cas统一认证的登陆页面位于:cas目录/WEB-I ...

随机推荐

  1. Visual studio之C# 利用Settings保存COM口配置信息

    背景 利用C#做一个串口通信项目,客户需求保存串口COM口的配置信息,在此利用Settings来进行保存. 正文 ".Settings"的创建 点击项目 --> 添加新项 - ...

  2. Oracle中sign/decode/nvl/round/trunc/(+)/instr/substr/replace解释

    1. sign函数 sign函数语法: sign(n); sign函数说明: 取数字n的符号,大于0返回1,小于0返回-1,等于0返回0(n可以是表达式,(n-200)) 例子: a=10; b=50 ...

  3. php处理行业分类数据

    实现步骤: 1.将excel表格存储为后缀名为 .csv格式的文件: 2.将.csv格式文件导入到mysql数据库中: 3.通过条件查询将所需要的数据查出并导入另一个数据表中: 下面是一些php片段: ...

  4. Canvas转换为Blob对象并使用Ajax发送

    Canvas转换为Blob对象并使用Ajax发送 转换为Blob对象后,可以使用Ajax上传图像文件. 先从canvas获取dataurl, 再将dataurl转换为Blob对象 var dataur ...

  5. FPGA的图像处理技术

    最近一段时间一直在研究基于FPGA的图像处理,乘着EEPW这个机会和大家交流一下,自己也顺便总结一下.主要是为了大家对用FPGA做图像处理有个感性的认识,如果真要研究的话就得更加深入学习了.本人水平有 ...

  6. 环境搭建基础知识2(sublime text3中配置verilog语法高亮)

    需求说明:Verilog设计 内容       :verilog开发环境搭建 来自       :时间的诗 1 软件下载 1.1 官方下载 地址http://www.sublimetext.com/3 ...

  7. Verilog语言:还真的是人格分裂的语言

    人气腹语术师天愿在现场披露了被人偶搭档夺取灵魂的腹语术师将妻子杀害的表演节目.天愿真的陷入了多重人格,命令自己杀害妻子和子的人偶的人格出现了.为了不(让自己)杀害和弟子登川有外遇的妻子,天愿提出委托想 ...

  8. ActiveMQ从源代码构建

    众多开源项目.我们一般都是直接拿过来用之而后快. 只是我们也应该知道这些项目是怎样从源代码构建而来的. 既然代码是写出来的,就不能避免有BUG存在,话说没有完美的软件,也没有无漏洞的程序. 事实上从源 ...

  9. 简单讲一下 SpringMVC的执行流程?

    执行流程: 1. 用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet 捕获(捕获) . DispatcherServlet对请求  URL进行解析 ...

  10. CCNA2.0笔记_ipv6的EIGRP

    IPv6的eigrp特征: 邻居发现 增量更新 快速收敛 负载均衡 三个表 -邻居表 -拓扑表 -路由表 配置ipv6的eigrp Router(config)#ipv6 unicast-routin ...