第二章:Android游戏开发之前台渲染

1.布局管理

  安卓的四种布局模式:

  线性布局

  表格布局

  相对布局

  单帧布局

  坐标布局

      目前安卓建议不要用坐标布局,容易因屏幕尺寸或者其他问题产生问题。这几种布局我没有展开说,是因为就是拖拽就可以实现,目前没看到什么好展开讲得东西。

2.常用控件及其事件处理

  目前只学到一招,为button等控件增加click的监听。首先我们的activity类需要实现OnClickListener接口。并实现接口的onClick方法。并为button加上相应的setOnClickListener(this)方法。

3.图形和动画

  自定义图形,要新建activity 继承自View ,并实现View的onDraw(Canvas canvas)方法。具体的绘图是用canvas实现的。最后我们可以将实现的View直接拖到相应的布局中。那么在自定义视图中如何实现自定义事件呢?(这里先留一个伏笔,后面我们遇到会解决这个问题)

  绘制已经存在的图片,我们用bitmap方法实现。先新建一个bitmap,然后用canvas.drawBitmap()系列的方法实现。、

  安卓主要有两种类型的动画,一种是渐变动画(图像变换),一种是帧动画(顺序播放动画帧),渐变动画有4中类型,alpha透明度,scale尺寸伸缩,translate位置变化,rotate旋转。使用渐变动画的时候,按如下步骤:

  1、在res/drawable-mdpi文件夹下放一个图片img

  2、res目录下建立一个anim文件夹

  3、新建一个myanim.xml文件

  4、编写渐变效果。这个要看各个动画的规范。

  

<?xml version="1.0" encoding="utf-8"?><!-- XML的版本以及编码方式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
  <alpha
    android:fromAlpha="0.1" 
    android:toAlpha="1.0" 
    android:duration="8000" 
  /> <!-- 透明度的变换 -->
  <scale
    android:interpolator= "@android:anim/accelerate_decelerate_interpolator" 
    android:fromXScale="0.0" 
    android:toXScale="1.4" 
    android:fromYScale="0.0" 
    android:toYScale="1.4" 
    android:pivotX="50%" 
    android:pivotY="50%"
    android:fillAfter="false" 
    android:duration="10000"
  /> <!-- 尺寸的变换 -->
  <translate
    android:fromXDelta="30" 
    android:toXDelta="0" 
    android:fromYDelta="30"
    android:toYDelta="50" 
    android:duration="10000" 
  /> <!-- 尺位置的变换 -->
  <rotate
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fromDegrees="0" 
    android:toDegrees="+350" 
    android:pivotX="50%" 
    android:pivotY="50%"
    android:duration="10000"
  /> <!-- 旋转变换 -->
</set>

  5、在布局中加入ImageView,

  6、修改java文件,加载一个动画 myAnimation = AnimationUtils.loadAnimation(this,R.anim.myAnimation);加载容器ImageView = ? ;开始动画myAnimation.startAnimation(myAnimation);

4.多媒体开发

  音频:音频有两种,SoundPool适合短促的时间要求较高,MediaPlayer适合长但是时间要求不高。soundPool是异步调用的,初始化和播放是两个线程。而mediaplayer同步的。两种initSound的方法不同。mediaPlayer = MediaPlayer.create(this,R.raw.sound);

  soundPool = new SoundPool(4,AudioManager.STREAM_MUSIC,100));

  soundPoolMap = new HashMap<Integer,Integer>);

  soundPoolMap.put(1,soundPool.load(this,R.raw.sound,1));

  播放的方法也不同,对于mediaPlayer,我们先判断isPlaying的状态,然后调用mediaPlayer.start();播放即可。而对于soundPool,我们需要调用soundPool.play(soundPoolMap.get(sound),volume,volume,1,loop,1f));的方法进行播放。

  视频:这个地方视频一直加不进去视频(用的surfaceView)具体的开发,在今后如果遇到需要重新学习。

  照相功能:就是利用camera的功能。这里也先跳过这部分的学习。

  ok,第二章学习到此结束。

  

posted @ 2012-07-21 11:57  庸蛹  阅读(272)  评论(0编辑  收藏  举报