Android游戏开发中如何将两个图标交换位置

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;
            }

修改后效果展示:

修改前效果:

总结:

这种图标的修改,必修修改两部分,不然只修改第一部分代码后,当你点击这个图标后,它不会改变跳转的变化。必须也将要变化的动作的第二部分代码一起修改。

时间: 2024-07-30 10:06:54

Android游戏开发中如何将两个图标交换位置的相关文章

android游戏开发中图形绘制:Canvas和Paint的使用

android游戏开发中,使用android.graphics中的类来绘制2D向量图和文字. 一 画布Canvas 在Android中的绘图应该继承View组件,并重写它的onDraw(Canvas canvas)方法. Canvas代表指定View上的画布,常用方法如图: 二 画刷Paint Paint代表Canvas上的画刷,主要用于绘制风格,包括画刷颜色.画刷笔触粗细.填充风格等. 大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关. 常用方法如图: 三 路径Path Path表示

Android 游戏开发(一)了解View

Android游戏当中主要的除了控制类外就是显示类View.SurfaceView是从View基类中派生出来的显示类.android游戏开发中常用的三种视图是:view.SurfaceView和GLSurfaceView. View:显示视图,内置画布,提供图形绘制函数.触屏事件.按键事件函数等:必须在UI主线程内更新画面,速度较慢. SurfaceView:基于view视图进行拓展的视图类,更适合2D游戏的开发:是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view

Android开发中单元测试的两种方式

Android开发中单元测试的两种方式 一位优秀的程序员也同样不能保证自己的程序没有bug,因此编写合适的测试程序是完全有必要的,这样也会降低程序在后期出现各种奇奇怪怪bug的可能,降低维护成本,未雨绸缪将bug扼杀在摇篮之中. 看到网上有很多依旧用写java单元测试的方式在写android程序的单元测试程序--junit,当然我一直都反感将不合时宜的东西强搬到新的技术应用以获取一席之地的这种做法,不断的应用新的方法提高效率,完善程序才是真理!废话不多说,直接说到今天的重点:Android开发中

[Android游戏开发学习笔记]View和SurfaceView

本文为阅读http://blog.csdn.net/xiaominghimi/article/details/6089594的笔记. 在Android游戏中充当主要角色的,除了控制类就是显示类.而在Android中涉及到显示的是View类,及继承自它的SurfaceView类和SurfaceView的其他子类等. 这里先只说View和SurfaceView.SurfaceView的直接子类有GLSurfaceView和VideoView,可以看出GL和视频播放以及CAmera摄像头一般均使用Su

【读书笔记-《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)

3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里的name是自定义的,不是索引变量."@+"表示新声明,"@"表示引用,例如:"@+id/tv" 表示新声明一个id,是id名为tv的组件:"@id/tv" 表示引用id名为tv的组件. 给按钮添加点击事件响应  想知道按钮是否被

【读书笔记-《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)

Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm.下面详细介绍下这些计量单位之间的区别和联系.in:英寸(长度单位):mm:毫米(长度单位):pt:磅/点,1/72英寸(一个标准的长度单位):sp:全名 scaled pixels-best for text size,放大像素,与刻度无关,可以根据用户的字体大小就行缩放,主要用来处理字体的大小:

[Android游戏开发]八款开源 Android 游戏引擎 (巨好的资源)

初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情. 事实上,这种想法完全是没有必要且不符合实际的,作为能和苹果iOS分庭抗礼的Android(各种意义上),当然也会有相当数量的游戏引擎存

[Android游戏开发]游戏框架的搭建

通常情况下,游戏开发的基本框架中,一般包括以下模块: 窗口管理(Window management):该模块负责在Android平台上创建.运行.暂停.恢复游戏界面等功能. 输入模块(Input):该模块和视窗管理模块是密切相关的,用来监测追踪用户的输入(比如触摸事件.按键事件.加速计事件等). 文件输入输出(File I/O):此模块用来读取assets文件下图片.音频等资源. 图像模块(Graphics):在实际游戏开发中,这个模块或许是最复杂的部分.它负责加载图片并把它们绘制到屏幕上. 音

【读书笔记-《Android游戏编程之从零开始》】5.Android 游戏开发常用的系统控件(ProgressBar、Seekbar)

3.7 ProgressBar ProgressBar类官方文档地址:http://developer.android.com/reference/android/widget/ProgressBar.html 在Android应用开发中,ProgressBar(运行进度条)是比较常用到的组件,例如下载进度.安装程序进度.加载资源进度显示等.在Android中提供了两种样式来分别表示在不同状态下显示的进度条,下面来实现这两种样式.默认进度条是圆形,通过style属性来指定系统进度条的大小:sty