第十集:弹球

1.画小球,和上集的水波一样

    class GameView extends SurfaceView implements Callback, Runnable {        private Paint paint = null;        private Path path; // 画自定义图形        private SurfaceHolder sh = null;        public GameView(Context context) {            super(context);            paint = new Paint();            paint.setColor(Color.RED);            // 设置画笔类型            paint.setStyle(Style.STROKE);            path = new Path();            sh = this.getHolder();            // 注册一个监听,就是在View改变的时候执行是调用。            sh.addCallback(this);        }        @Override        public void surfaceDestroyed(SurfaceHolder holder) {            // 销毁的时候执行内容        }        @Override        public boolean onTouchEvent(MotionEvent event) {            switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                // 按下的瞬间                if (list.size() < 10) {                    list.add(new Ball(event.getX(), event.getY(), 5));                }                break;            case MotionEvent.ACTION_MOVE:                // 移动                break;            default:                break;            }            invalidate();            // 不把事件传递给父窗体            return true;        }        @Override        public void surfaceCreated(SurfaceHolder holder) {            // 创建时候执行            new Thread(this).start();        }        class Ball {            public Ball(float x, float y, int r) {                this.x = x;                this.y = y;                this.r = r;                paint = new Paint();                paint.setColor(Color.RED);                paint.setStyle(Style.FILL_AND_STROKE);// 填充和画边。                paint.setStrokeWidth(5);                speedx = new Random().nextInt(3);                speedy = new Random().nextInt(3);            }            float x = 0;            float y = 0;            int r = 0;            int speedx = 0;            int speedy = 0;            Paint paint;// 这个用来画球自己            public void move() {                x = x + speedx;                y = y + speedy;            }            public void drawCicle(Canvas canvas) {                canvas.drawCircle(x, y, r, paint);            }        }        List<Ball> list = new ArrayList<Ball>();        private void drawView() {            Canvas canvas = sh.lockCanvas();            // 刷背景,原来的图像就擦出了。            canvas.drawColor(Color.BLACK);            canvas.drawPath(path, paint);            for (Ball b : list) {                b.drawCicle(canvas);            }            sh.unlockCanvasAndPost(canvas);        }        @Override        public void surfaceChanged(SurfaceHolder holder, int format, int width,                int height) {            // 修改的时候执行        }        @Override        protected void onDraw(final Canvas canvas) {            super.onDraw(canvas);        }        @Override        public void run() {            while (true) {                drawView();                for (Ball b : list) {                    b.move();                }                try {                    Thread.sleep(100);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }    }

2.全屏

在AndroidMainifest.xml 中的<application><activity 中

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

3.让小球无规律拖动

  public void move() {                x = x + new Random().nextInt(6)-3;                y = y + new Random().nextInt(6)-3;   }

4.加入声音

在res下新建文件夹raw,将音频文件放入。放入a.mp3

private MediaPlayer mediaPlayer = null;mediaPlayer = MediaPlayer.create(context, R.raw.a);mediaPlayer.start();//sleep();mediaPlayer.stop();

第十集完

更多相关文章

  1. Android(安卓)Intent Flag组合使用
  2. 初学Android,图形图像之打砖块游戏(二十八)
  3. Android沉浸式状态栏实现
  4. android odex反编译
  5. Android Listview设置监听器并获取子项数据
  6. Android SDK 使用技巧
  7. android Gallery 仿iPhone 图片滑动
  8. Android httpClient Get&Post方法
  9. Android 自定义控件实现点击波浪效果(九)

随机推荐

  1. 【方法】Oracle用户密码含特殊字符时的登
  2. C语言进阶(二)--- 整型存放练习
  3. 【DB笔试面试732】在Oracle中,Oracle Clus
  4. C语言实现计算器
  5. C语言编程笔试题(一)
  6. C语言数据的存储-上
  7. 【DB笔试面试645】在Oracle中,当收集表的
  8. 【DB笔试面试494】Oracle中哪个包用于生
  9. C语言之结构体内存的对齐
  10. C语言数据的存储-下