![【移动应用开发技术】Android实现锁屏荧光效果的方法_第1页](http://file4.renrendoc.com/view/6dfa98f58b13a6f80280478729698f46/6dfa98f58b13a6f80280478729698f461.gif)
![【移动应用开发技术】Android实现锁屏荧光效果的方法_第2页](http://file4.renrendoc.com/view/6dfa98f58b13a6f80280478729698f46/6dfa98f58b13a6f80280478729698f462.gif)
![【移动应用开发技术】Android实现锁屏荧光效果的方法_第3页](http://file4.renrendoc.com/view/6dfa98f58b13a6f80280478729698f46/6dfa98f58b13a6f80280478729698f463.gif)
![【移动应用开发技术】Android实现锁屏荧光效果的方法_第4页](http://file4.renrendoc.com/view/6dfa98f58b13a6f80280478729698f46/6dfa98f58b13a6f80280478729698f464.gif)
![【移动应用开发技术】Android实现锁屏荧光效果的方法_第5页](http://file4.renrendoc.com/view/6dfa98f58b13a6f80280478729698f46/6dfa98f58b13a6f80280478729698f465.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android实现锁屏荧光效果的方法
在下给大家分享一下Android实现锁屏荧光效果的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言这是几个月前写的博文,睡前看了觉得有些敷衍,还是改了再发吧。之前的博客做了个锁屏应用,在以前各种酷炫的锁屏效果是很流行的,有时候会去锁屏市场看看哪些自己喜欢的特效,发现有个很酷炫的荧光解锁的效果,于是想着能否自己实现一下。锁屏效果:原理:锁屏的原理在前些篇章已经有做介绍了,这里主要讲荧光这种效果的实现。原理要点:1)关于荧光点,每一个荧光店都是我们一个对象实体,因此我们将其单独构造为一个类,它具有自己的一些属性,比如荧光开始时间,荧光点的半径,荧光点的生命周期等。
/**
*
荧光点
*/
private
class
FluorescencePointF{
public
PointF
mPointF;
//荧光点坐标
public
long
mStartTime;
//开始时间
private
float
mRadius;
//荧光点半径
private
final
float
MAX_RADIUS
=
Constant.sScaleX
*
15;
//荧光点最大半径
private
final
float
MIN_RADIUS
=
Constant.sScaleX
*
8;
//荧光点最小半径
private
final
long
SHOW_TIME
=
600;
//荧光维持时间
private
final
Interpolator
DEC_INTERPOLATOR
=
new
DecelerateInterpolator();
//减速
/**
*
构造方法
*/
public
FluorescencePointF(PointF
pointF)
{
this.mPointF
=
pointF;
this.mStartTime
=
System.currentTimeMillis();
this.mRadius
=
MIN_RADIUS
+
mRandom.nextInt((int)
MAX_RADIUS);
Log.e(TAG,"FluorescencePointF
point:"
+
"x:"
+pointF.x
+
"
y:"
+
pointF.y);
Log.e(TAG,"FluorescencePointF
radius:"
+
this.mRadius);
}
/**
*
获得半径
*/
public
float
getRadius(){
if(!isAlive())
return
0;
return
mRadius
*
DEC_INTERPOLATOR.getInterpolation(
((float)SHOW_TIME
-
(System.currentTimeMillis()
-
mStartTime))/
SHOW_TIME);
}
/**
*
荧光点是否生存
*
@return
*/
public
boolean
isAlive(){
return
System.currentTimeMillis()
-
mStartTime
<=
SHOW_TIME;
}
}2)关于荧光发光的实现从锁屏主题的效果我们可以看到,荧光点都是先发光闪亮,后来随着半径逐渐变小,亮度逐渐减弱。光亮效果我们可以通过RadialGradient类渲染来实现,同时我们可以通过逐渐改变半径大小,来让荧光点看起来慢慢缩小。Shader
shader
=
new
RadialGradient(fluorescencePointF.mPointF.x,fluorescencePointF
.mPointF.y,radius,COLOR_WHITE,COLOR_WHITE_SHADER,
Shader.TileMode.CLAMP);
mPaintShader.setShader(shader);
canvas.drawCircle(fluorescencePointF.mPointF.x,fluorescencePointF.mPointF.y,
fluorescencePointF.getRadius(),mPaintShader);3)关于荧光点错落闪亮的效果实现了一个荧光点如何发光的效果,接下来我们要实现的是一堆荧光点,为了让荧光效果看起来自然,我们当然不能同时产生一堆荧光点,我们要造成一种“随机”的效果,即随机的产生的时机,随机的数量,随机的大小,随机的坐标。通过随机数,产生随机数量的荧光点,这时候荧光点的坐标和半径也是随机生成的(详见荧光点类的构造方法)4)关于逻辑处理逻辑的处理就很简单了,我们只需要在onTouchEvent()方法里处理触摸事件,生成随机的荧光点就行了。
@Override
public
boolean
onTouchEvent(MotionEvent
event)
{
int
action
=
event.getAction();
mTouchPoint.x
=
event.getX();
mTouchPoint.y
=
event.getY();
switch
(action){
//手指按下的时候,在手指附近区域生成荧光点
case
MotionEvent.ACTION_DOWN:
mStartPoint.x
=
mTouchPoint.x;
mStartPoint.y
=
mTouchPoint.y;
createRandomPoints();
invalidate();
break;
//手指移动,继续生成荧光点
case
MotionEvent.ACTION_MOVE:
createRandomPoints();
invalidate();
break;
case
MotionEvent.ACTION_UP:
if(getDistance(mTouchPoint.x,mTouchPoint.y,mStartPoint.x,mStartPoint.y)
>=
UNLOCK_DISTANCE)
Global.Broadcast(getContext(),"");
break;
case
MotionEvent.ACTION_CANCEL:
if(getDistance(mTouchPoint.x,mTo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二手手机购买合同(三篇)
- 2025年买卖协议经典版(2篇)
- 2025年临时供用水协议(2篇)
- 2025年个人股份转让合同标准版本(三篇)
- 2025年个人房屋出租赁合同样本(三篇)
- 2025年个人房屋购房合同标准样本(2篇)
- 服装店装修承包协议
- 服装店装修合同范本公装
- 农村养殖场装修协议模板
- 市政项目土石方运输合同
- 青岛中国(山东)自由贸易试验区青岛片区(青岛前湾综合保税区)管理委员会选聘35人笔试历年参考题库附带答案详解
- 《社区工作者培训课件 新浪版》
- 教育信息化背景下的学术研究趋势
- 人教版小学数学(2024)一年级下册第五单元100以内的笔算加、减法综合素养测评 B卷(含答案)
- 2024-2025学年北京市丰台区高三语文上学期期末试卷及答案解析
- 2024年度体育赛事赞助合同:运动员代言与赞助权益2篇
- 2025届西藏林芝一中高三第二次诊断性检测英语试卷含解析
- 开封市第一届职业技能大赛健康照护项目技术文件(国赛)
- 公路电子收费系统安装合同范本
- 医院培训课件:《伤口评估与测量》
- 2021年全国高考物理真题试卷及解析(全国已卷)
评论
0/150
提交评论