本发明涉及点赞功能交互算法技术领域,具体说是一种点赞效果的优化算法。
背景技术
现有的app为了提高用户间的互动兴趣及热情,都提供点赞功能用于快捷的评价其他用户发布的信息。点赞功能的目的是刺激用户产生更多高质量的内容。
从用户的角度出发,对于点赞这一操作,通常希望表达的含义是,我喜欢。所以一般来说,很多app的点赞图标都是一个爱心形状的图标,因为我对此内容或者观点很赞同,所以只是为了表达自己的观点,算是支持。再后来,这个红色的爱心感觉太单调,很多人做成了大拇指上扬的图标,表达的意思是佩服,惊讶或者感动等。
点赞大多是陌生人间的行为,更多的是针对陌生人社交类应用,点赞这一操作还可以由评论功能来替代,因为评论可以有表情,针对这种场景,评论完全可以涵盖点赞这一功能。
点赞功能的实现逻辑通常如下:
1.内容详情加载时,判断用户是否已点赞;
2.点击按钮时,若已点赞,则发起取消点赞指令,否则发起点赞指令;
3.接口将用户id、内容id传到后端;
4.后端接受信息,更新对应内容的点赞数、点赞用户id,并在用户信息表中插入点赞内容id(文章id)和时间(若需要);
5.数据库执行后端发出的更新指令;
6.后端通过接口将处理结果返回给前端;
7.前端接收信息,并将结果按既定样式展示出来。
大部分app都使用“点击【点赞】按钮或icon”这种方式来触发点赞功能。部分app为了维持设计的简洁性,会将按钮默认隐藏起来。
由于现有的点赞功能过于单一,缺乏个性化,已经影响了用户体验,而且,现有的实现逻辑缺乏可扩展性,为统一点赞功能的算法,增强算法的可扩展性,提升用户体验,有必要对点赞算法进行再设计及优化。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种点赞效果的实现方法点赞效果的优化算法,算法清晰、简洁,可扩展性好,动画顺畅,功能丰富,提升用户体验,用户可以进行更多的自定义设置,更能凸显点赞的个性化效果。
为达到以上目的,本发明采取的技术方案是:
一种点赞效果的优化算法,其特征在于,包括如下步骤:
自定义点赞控件likelayout,继承android系统提供的布局控件framelayout;
自定义列表list<drawable>对象mdrawables,是android系统提供的java列表对象,用于存储若干点赞的手势图片作为点赞图片,所述点赞图片为正方形图片,
自定义随机变量mrandom,是random类型,用于生成随机数,
自定义添加点赞图片的接口addheartview,该接口对外提供,具体包括以下参数:用户点击屏幕的横坐标x、纵坐标y,点击次数变量count,
根据点击次数变量count的值,随机获取若干点赞图片,
创建android系统提供的imageview展示图片的控件对象,
获取显示图片的动画集合animatorset变量animset,用来同时执行一系列显示图片的动画。
在上述技术方案的基础上,通过对对象mdrawables的增加、删除操作,实现对点赞图片的增加、删除。
在上述技术方案的基础上,根据点击次数变量count的值,随机获取若干点赞图片,具体步骤如下:
当为第一次点击时,获取默认第一张点赞图片,
从对象mdrawables中删除获取完毕的点赞图片,防止获取重复的图片,
当点击次数大于等于2时,则随机获取图片,具体步骤如下:
首先获取图片列表的大小size,根据mrandom变量和size的大小,会生成一个大于等于0小于size的整数,根据这个整数从剩余的图片列表中获取对应的图片,也就是随机生成的图片d,获取完之后从图片列表中删除该图片,防止下次点击生成重复的图片。
在上述技术方案的基础上,创建android系统提供的imageview展示图片的控件对象时,
根据图片的宽度值设置imageview控件对象的宽高,
根据用户点击坐标(x,y)的存储参数lp.leftmargin和lp.topmargin,来设置图片距离屏幕左边和上边的间距。
在上述技术方案的基础上,获取显示图片的动画集合animatorset变量animset,用来同时执行一系列显示图片的动画时,
所述动画为控件view的缩放动画。
在上述技术方案的基础上,进一步包括如下步骤:
获取消失动画,在显示动画执行结束后,调用消失动画,使动画连贯效果提升。
在上述技术方案的基础上,获取消失动画时,通过调节控件view的透明度的属性alpha,实现控件view的消失。
本发明所述的点赞效果的实现方法点赞效果的优化算法,算法清晰、简洁,可扩展性好,动画顺畅,功能丰富,提升用户体验,用户可以进行更多的自定义设置,更能凸显点赞的个性化效果。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的点赞效果的优化算法,包括如下步骤:
自定义点赞控件likelayout,继承android系统提供的布局控件framelayout;
自定义列表list<drawable>对象mdrawables,是android系统提供的java列表对象,用于存储若干点赞的手势图片作为点赞图片,所述点赞图片为正方形图片,
自定义随机变量mrandom,是random类型,用于生成随机数,
自定义添加点赞图片的接口addheartview,该接口对外提供,具体包括以下参数:用户点击屏幕的横坐标x、纵坐标y,点击次数变量count,
根据点击次数变量count的值,随机获取若干点赞图片,
创建android系统提供的imageview展示图片的控件对象,
获取显示图片的动画集合animatorset变量animset,用来同时执行一系列显示图片的动画。
在上述技术方案的基础上,通过对对象mdrawables的增加、删除操作,实现对点赞图片的增加、删除。
在上述技术方案的基础上,根据点击次数变量count的值,随机获取若干点赞图片,具体步骤如下:
当为第一次点击时,获取默认第一张点赞图片,
从对象mdrawables中删除获取完毕的点赞图片,防止获取重复的图片,
当点击次数大于等于2时,则随机获取图片,具体步骤如下:
首先获取图片列表的大小size,根据mrandom变量和size的大小,会生成一个大于等于0小于size的整数,根据这个整数从剩余的图片列表中获取对应的图片,也就是随机生成的图片d,获取完之后从图片列表中删除该图片,防止下次点击生成重复的图片。
具体算法可采用如下代码:
if(count%ids.length==0){
d=mdrawables.get(0);
mdrawables.remove(0);
}else{
intsize=mdrawables.size();
intrandom=mrandom.nextint(size);
d=mdrawables.get(random);
mdrawables.remove(random);
}
其中:
ids.length是图片总数,count%ids.length==0表示当用户点击了第一次或者循环完毕重新开始以后的第一次,都会展示第一张图片,d=mdrawables.get(0)就是从mdrawables图片列表中获取第一张图片,d是drawable类型的变量,表示一张图片,在后边的imageview控件中设置即可。
在上述技术方案的基础上,创建android系统提供的imageview展示图片的控件对象,具体算法可采用如下代码:
intsize=d.getintrinsicwidth();
framelayout.layoutparamslp=newframelayout.layoutparams(size,size);
lp.leftmargin=(int)(x);
lp.topmargin=(int)(y-size);
finalimageviewimg=newimageview(mcontext);
img.setimagedrawable(d);
img.setlayoutparams(lp);
其中:
size是根据图片d获取图片的宽度值,因为图片是正方形,所以获取宽度就行了,framelayout.layoutparams是帧布局参数,用来设置imageview控件对象的宽高的,是必须设置的参数,lp.leftmargin和lp.topmargin是用户点击的时候,根据点击坐标(x,y)来设置图片距离屏幕左边和上边的间距,决定了图片最后的显示位置;
imageview是图片控件,是android系统提供的用来显示图片的,setimagedrawable就是调用了imageview的api,来给图片设置给控件,setlayoutparams是设置参数的,设置之后图片控件的大小和距离屏幕左边和上边的间距就会生效。
在上述技术方案的基础上,获取显示图片的动画集合animatorset变量animset,用来同时执行一系列显示图片的动画,具体算法可采用如下代码:
objectanimatorscalex=objectanimator.offloat(view,"scalex",1.2f,1f);
objectanimatorscaley=objectanimator.offloat(view,"scaley",1.2f,1f);
animatorsetanimset=newanimatorset();
animset.playtogether(scalex,scaley);
其中:
objectanimator是android系统提供的显示属性动画的类,可以方便的给控件设置不同属性的动画,view对象就是步骤b生成的imageview对象,scalex和scaley是控件view的缩放的属性,1.2f和1f表示会从图片的1.2倍缩放到1倍,也就是缩放到原始大小,playtogether就是调用了animatorset的播放api,会同时执行scalex和scaley属性的动画。
在上述技术方案的基础上,进一步包括如下步骤:
获取消失动画,在显示动画执行结束后,调用消失动画,使动画连贯效果提升。
在上述技术方案的基础上,获取消失动画,具体算法可采用如下代码:
objectanimatoralpha=objectanimator.offloat(view,"alpha",1f,0.1f);
objectanimatorscalex=objectanimator.offloat(view,"scalex",1f,2f);
objectanimatorscaley=objectanimator.offloat(view,"scaley",1f,2f);
objectanimatortranslationy=objectanimator.offloat(view,"translationy",0f,-150f);
animatorsetanimset=newanimatorset();
animset.playtogether(alpha,scalex,scaley,translationy);
其中:
objectanimator是android系统提供的显示属性动画的类,可以方便的给控件设置不同属性的动画,view对象就是步骤b生成的imageview对象,scalex和scaley是控件view的缩放的属性,1.2f和2f表示会从图片的原始大小缩放到2倍,alpha是控件view的透明度的属性,1f和0.1f表示从不透明到0.1f的透明度变化,translationy表示将view从当前位置移动到网上减小150像素的位置,playtogether就是调用了animatorset的播放api,会同时执行alpha、scalex、scaley和translationy属性的动画,播放起来的效果就是网上移动的同时,控件会放大,同时透明度会变化,渐渐消失。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。