Android 游戏界面中有时候因为布局的美观,需要将两个图标交换位置。这两个图标不是简单地更改id号就可以的,下面是交换两个图标的方法。
原代码中相关程序:
未修改前:
float pic_x=200;
float pic_y=130;
需要修改的第一部分程序,这一部分利用定义pic_x,pic_y的将图标绘制在相应的界面位置中。
第一个图标位置绘图
if(backmusicFlag01)
{
canvas.drawBitmap(backMusicoff, pic_x, pic_y, paint);
}
else if(!backmusicFlag01)
{
canvas.drawBitmap(backMusicon,pic_x, pic_y, paint);
}
第二个图标利用pic_y加上边框的值再取一定的缝隙绘制第二个图标。
if(yinxiaoFlag01)
{
float x1=pic_x;
float y1=pic_y+MUSIC_HEIGHT+25;
canvas.drawBitmap(Yinxiaooff, x1, y1, paint);
}
else if(!yinxiaoFlag01)
{
float x1=pic_x;
float y1=pic_y+MUSIC_HEIGHT+25;
canvas.drawBitmap(Yinxiaoon, x1, y1, paint);
}
第二部分要修改的代码:
这一部分代码通过监听是否按下图标,如果按下图标则变换图标,代码中按下图标后,原先是背景音乐开变成背景音乐关;音效音乐开变成音效关
if(x>pic_x&&x<pic_x+MUSIC_WEIGHT&&y>pic_y&&y<pic_y+MUSIC_HEIGHT)
{
backmusicFlag02=!backmusicFlag02;
activity.setBackGroundMusicOn(backmusicFlag02);
backmusicFlag01=!backmusicFlag01;
}
if(x>pic_x&&x<pic_x+MUSIC_WEIGHT&&y>pic_y+MUSIC_HEIGHT+25&&y<pic_y+MUSIC_HEIGHT+25+MUSIC_HEIGHT)
{
yinxiaoFlag02=!yinxiaoFlag02;
activity.setSoundOn(yinxiaoFlag02);
yinxiaoFlag01=!yinxiaoFlag01;
}
改变后的代码:
修改后的第一部分代码:
if(yinxiaoFlag01)
{
canvas.drawBitmap(Yinxiaooff,pic_x ,pic_y , paint);
}
else if(!yinxiaoFlag01)
{
canvas.drawBitmap(Yinxiaoon, pic_x, pic_y, paint);
}
if(backmusicFlag01)
{
float x1=pic_x;
float y1=pic_y+MUSIC_HEIGHT+25;
canvas.drawBitmap(backMusicoff, x1, y1, paint);
}
else if(!backmusicFlag01)
{
float x1=pic_x;
float y1=pic_y+MUSIC_HEIGHT+25;
canvas.drawBitmap(backMusicon, x1, y1, paint);
}
修改后的第二部分代码:
if(x>pic_x&&x<pic_x+MUSIC_WEIGHT&&y>pic_y&&y<pic_y+MUSIC_HEIGHT)
{
yinxiaoFlag02=!yinxiaoFlag02;
activity.setSoundOn(yinxiaoFlag02);
yinxiaoFlag01=!yinxiaoFlag01;
}
if(x>pic_x&&x<pic_x+MUSIC_WEIGHT&&y>pic_y+MUSIC_HEIGHT+25&&y<pic_y+MUSIC_HEIGHT+25+MUSIC_HEIGHT)
{
backmusicFlag02=!backmusicFlag02;
activity.setBackGroundMusicOn(backmusicFlag02);
backmusicFlag01=!backmusicFlag01;
}
修改后效果展示:
修改前效果:
总结:
这种图标的修改,必修修改两部分,不然只修改第一部分代码后,当你点击这个图标后,它不会改变跳转的变化。必须也将要变化的动作的第二部分代码一起修改。