记一次androidd登陆页面的实现
背景
先说个事:最近我准备做个开源的博客园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登陆页面的实现的更多相关文章
- Android笔记-4-实现登陆页面并跳转和简单的注册页面
实现登陆页面并跳转和简单的注册页面 首先我们来看看布局的xml代码 login.xml <span style="font-family:Arial;font-size:18px; ...
- 小KING教你做android项目(二)---实现登陆页面并跳转和简单的注册页面
原文:http://blog.csdn.net/jkingcl/article/details/10989773 今天我们主要来介绍登陆页面的实现,主要讲解的就是涉及到的布局,以及简单的跳 ...
- Springsecurity3.1.3配置多个登陆页面
需求:网站的前台和后台不同的url需要不同的登陆页面,不同的异常捕获方式. spring-security3.1以后的版本支持多个<http>标签,因此本文所采用的方式就是使用两个,实际上 ...
- MUI APP防止登陆页面出现白屏
最近在用MUI开发APP,总体效果,在IOS上,是完美的,但是在低端的Android手机上,就会出现性能问题,我个人觉得最严重的是,就是首页,就是APP打开的第一个页面,在iOS上,由于性能高,所以, ...
- web系统登陆页面增加验证码
传统登陆页面中包含两个输入项: • 用户名 • 密码有时为了防止机器人进行自动登陆操作,或者防止恶意用户进行用户信息扫描,需增加动态验证码功能.此时,登陆页面中包含了三个输入项: • 用户名 • 密码 ...
- Ajax 提交session实效跳转到完整的登陆页面
在spring security 中 Ajax提交时,session超时,局部加载登陆页面,为解决这个问题,重写ajax提交,返回的是modeview或者没有制定datatype时; 如果检测到加载到 ...
- js实现登陆页面的拖拽功能
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>登 ...
- iOS 本地加载html登陆页面
Html的代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 修改cas登陆页面-服务器端
原文地址:http://www.cnblogs.com/liveandevil/archive/2013/03/06/2946341.html 1.cas统一认证的登陆页面位于:cas目录/WEB-I ...
随机推荐
- Oracle Report(Report 6i/RDF)使用全局变量fnd_global, fnd_frofile
注:本文为原创,作为学习交流使用,转载请标明作者及出处,作者保留追究法律责任的权力. Lumen Su lzsu1989#gmail.com (#=@) www.cnblogs.com/lzsu198 ...
- ssl证书文件
证书(Certificate) - *.cer *.crt私钥(Private Key) - *.key证书签名请求(Certificate signing request) - *.csr 至于pe ...
- 什么是SQL注入式攻击?
什么是SQL注入式攻击? 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响 ...
- python3操作mysql教程
一.下载\安装\配置 1. python3 Python3下载网址:http://www.python.org/getit/ 当前最新版本是python3.2,下载地址是 http://www.pyt ...
- MSBuild入门(续)
MSBuild基本概念(续) 在上一篇简单的介绍了下MSBuild中的四个基本块,每块介绍比较单薄,在这里对在大多数的项目模版生成的*.*proj文件中比较常见一些用法和概念做些补充.主要有一下几方面 ...
- SQL server账号无法登陆
- python对象序列化之pickle
本片文章主要是对pickle官网的阅读记录. The pickle module implements binary protocols for serializing and de-serializ ...
- Python学习之warn()函数
warn()函数位于warnings模块中,用来发出警告,或者忽略它或引发异常. def warn(message, category=None, stacklevel=, source=None) ...
- 日期在苹果手机上显示NaN的处理方法
注意两点即可: 1.苹果只认识 yyyy/mmmm/dddd/ 这类格式的日期 2.如果输出后还要进行处理日期对比,苹果默认会带中文字,如:年月日,需要转成上面1当中的日期格式在转时间戳进行比较 G ...
- Java的ThreadContext类加载器的实现
疑惑 以前在看源码的时候,总是会遇到框架里的代码使用Thread.currentThread.getContextClassLoader()获取当前线程的Context类加载器,通过这个Context ...