最赞回答 / 黄淘淘
因为游戏每升级一次就会触发TIME_CHANGED的消息队列发送一次,而每次的TIME_CHANGED消息队列都因为有 mHandler.sendEmptyMessage(NEXT_LEVEL)在继续发送,所以如果升级了游戏,前面那个游戏等级的TIME_CHANGED消息就要remove掉 这是我的理解
2015-08-10
最赞回答 / 为梦而战之学习
这个主要是使用了TranslateAnimation动画的原因 ,这种动画只是效果上的移动,并没有真正移动ImageView本身,也就是ImageView的真正位置值没有发生变化,你可以打印它们的(x,y)才查看一 下,换句话说当你点击 0和9位置上的ImageView时,虽然看到了交换的效果,但实质上0和9位置上的ImageView还是原来的那两个ImageView,点击的时候还是0和9对应的ImageView响应事件,而不是我们期望的让9和0对应的ImageView去响应事件,所以才在上面加一层布局来...
2015-08-08
最赞回答 / qq_o夜以罙_0
我的也是,不过原因找到了,主要是由于你创建动画层的时候,宽高是默认的,就是wrap那个,结果你第一次addview进去动画层的时候就自动把宽高设置成了item的宽高,所以你必须在创建动画层的时候设置他的宽高,其实很简单,只要你在addview(动画层)之前RelativeLayout.LayoutParams rp = new RelativeLayout.LayoutParams(mWidth, mHeight); mAnimLayout = new RelativeLayout(getContex...
2015-08-03
已采纳回答 / yestar
(1)游戏的RelativeLayout中添加成员变量isAnim,判断是否正处于进行交换图片的动画中private boolean isAnim = false;//正在进行动画(2)onClick方法最先判断,若正处于两个图片交换的动画中,对点击其它图片的事件不做响应public void onClick(View v) { if(isAnim) { return; }(3)动画开始isAni置为truepublic void onAnimationStart(Animation animat...
2015-07-27