//首先定义 3个代表不同爱心的drawable,以及他们的和drawables
private Drawable red
private Drawable yellow
private Drawable blue
private Drawable[] drawables
//接下去我们初始化:
//初始化显示的图片
drawables = new Drawable[3]
red = getResources().getDrawable(R.mipmap.red)
yellow = getResources().getDrawable(R.mipmap.yellow)
blue = getResources().getDrawable(R.mipmap.blue)
//赋值给drawables
drawables[0]=red
drawables[1]=yellow
drawables[2]=blue
这样,下次取值时候只要使用如下代码,就能随机获取到爱心了:
drawables[random.nextInt(3)]//表示0-2的随机数,注意,3是取不到的。
一.使用 transition 实现会用到 steps(count, position) 方法,它是一个 timing function ,会把过渡分成 count 步 position 的默认值是 end ,还可以为 start 。假如现在有一个动画分成5段, end 会在第一段的时间执行完后才到第一段的终点即第二段的起点,一次类推执行动画,当执行到最后一段时,到达不了最后一步的终点就会到回到起点重新开始执行动画;而 start 是先到第一段的终点,等第一段的时间执行完后,到达第二段的终点,以此类推,能到达最后一段的终点。
具体实现如下:
效果图:
未完待续。。。
需要学习JavaScript语言和HTML语言使用方法
HTML结构
该“点赞”红心按钮的HTML结构是将心形按钮放在一个超链接的后面或下面,它的HTML结果如下:
<div class="feed" id="feed1">
<p>jQuery之家 <a href="http://www.htmleaf.com/">http://www.htmleaf.com/</a></p>
<div class="heart" id="like3" rel="like"></div>
<div class="likeCount" id="likeCount3">24</div>
</div>
CSS样式
整个“点赞”烟花爆炸效果实际上是使用背景图片的连续播放来完成的,它使用一张很长的雪碧(Sprite)图片,然后在点击红心按钮是逐帧进行播放。下面是开始时显示第一帧的CSS样式:
.heart {
background: url(images/web_heart_animation.png)
background-position: left
background-repeat: no-repeat
height: 50px
width: 50px
cursor: pointer
position: absolute
left:-14px
background-size:1450px//实际背景图片尺寸2900px
}
.heart:hover{
background-position: right//显示最后一个红心帧
}
.likeCount{
margin-top: 13px
margin-left: 28px
font-size: 16px
color: #999999
}
下面的代码是逐帧播放红心背景图片,它使用CSS3 keyframe帧动画来完成。
@-webkit-keyframes heartBlast {
0% {background-position: left}
100% {background-position: right}
}
@keyframes heartBlast {
0% {background-position: left}
100% {background-position: right}
}
.heartAnimation {
-webkit-animation-name: heartBlast//webkit内核浏览器
animation-name: heartBlast
-webkit-animation-duration: .8s
animation-duration: .8s
-webkit-animation-iteration-count: 1
animation-iteration-count: 1
-webkit-animation-timing-function: steps(28)//共28个背景图片帧
animation-timing-function: steps(28)
background-position: right
}
JavaScript
在这个“点赞”红心动画特效中使用jQuery代码来使红心按钮在点击时与相应的总点赞数量进行联动。你可以通过ajax来进行数据库操作。当用户点赞时,总数量加1,取消点赞时,总数量减1。
<script>
$(document).ready(function(){
$('body').on("click",'.heart',function(){
var A=$(this).attr("id")
var B=A.split("like")//splitting like1 to 1
var messageID=B[1]
$(this).css("background-position","")
var D=$(this).attr("rel")
$.ajax({
type: "POST",
url: "message_like_ajax.php",
data: dataString,
cache: false,
success: function(data){
$("#likeCount"+messageID).html(data)
if(D === 'like') {
$(this).addClass("heartAnimation").attr("rel","unlike")//applying animation class
}
else{
$(this).removeClass("heartAnimation").attr("rel","like")
$(this).css("background-position","left")
}
})//ajax end
})//heart click end
})
</script>