本文实例讲述了Android实现在屏幕上移动图片的方法。分享给大家供大家参考。具体实现方法如下:
1. Speed.java文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package net.obviam.droidz.model.components; public class Speed { public static final int DIRECTION_RIGHT = 1 ; public static final int DIRECTION_LEFT = - 1 ; public static final int DIRECTION_UP = - 1 ; public static final int DIRECTION_DOWN = 1 ; private float xv = 1 ; // velocity value on the X axis private float yv = 1 ; // velocity value on the Y axis private int xDirection = DIRECTION_RIGHT; private int yDirection = DIRECTION_DOWN; public Speed() { this .xv = 1 ; this .yv = 1 ; } public Speed( float xv, float yv) { this .xv = xv; this .yv = yv; } public float getXv() { return xv; } public void setXv( float xv) { this .xv = xv; } public float getYv() { return yv; } public void setYv( float yv) { this .yv = yv; } public int getxDirection() { return xDirection; } public void setxDirection( int xDirection) { this .xDirection = xDirection; } public int getyDirection() { return yDirection; } public void setyDirection( int yDirection) { this .yDirection = yDirection; } // changes the direction on the X axis public void toggleXDirection() { xDirection = xDirection * - 1 ; } // changes the direction on the Y axis public void toggleYDirection() { yDirection = yDirection * - 1 ; } } |
2. main.java文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
public void run() { Canvas canvas; Log.d(TAG, "Starting game loop" ); while (running) { canvas = null ; // try locking the canvas for exclusive pixel editing // in the surface try { canvas = this .surfaceHolder.lockCanvas(); synchronized (surfaceHolder) { // update game state this .gamePanel.update(); // render state to the screen // draws the canvas on the panel this .gamePanel.render(canvas); } } finally { // in case of an exception the surface is not left in // an inconsistent state if (canvas != null ) { surfaceHolder.unlockCanvasAndPost(canvas); } } // end finally } } public void update() { // check collision with right wall if heading right if (droid.getSpeed().getxDirection() == Speed.DIRECTION_RIGHT && droid.getX() + droid.getBitmap().getWidth() / 2 >= getWidth()) { droid.getSpeed().toggleXDirection(); } // check collision with left wall if heading left if (droid.getSpeed().getxDirection() == Speed.DIRECTION_LEFT && droid.getX() - droid.getBitmap().getWidth() / 2 <= 0 ) { droid.getSpeed().toggleXDirection(); } // check collision with bottom wall if heading down if (droid.getSpeed().getyDirection() == Speed.DIRECTION_DOWN && droid.getY() + droid.getBitmap().getHeight() / 2 >= getHeight()) { droid.getSpeed().toggleYDirection(); } // check collision with top wall if heading up if (droid.getSpeed().getyDirection() == Speed.DIRECTION_UP && droid.getY() - droid.getBitmap().getHeight() / 2 <= 0 ) { droid.getSpeed().toggleYDirection(); } // Update the lone droid droid.update(); } |
希望本文所述对大家的Android程序设计有所帮助。