http://blog.csdn.net/hopezhangbo/article/details/7434284
发一个Android斗地主游戏的牌桌实现。
为了节约内存资源,每张扑克牌都是剪切形成的,当然这也是当前编程的主流方法。
1、主Activity
- package
com.bison; -
- import
android.app.Activity; - import
android.content.pm.ActivityInfo; - import
android.os.Bundle; - import
android.view.Window; - import
android.view.WindowManager; -
-
- public
class PukeActivity extends Activity { -
-
@Override -
public void onCreate(Bundle savedInstanceState) { -
super.onCreate(savedInstanceState); -
// 这个事隐藏标题栏,不解释 -
requestWindowFeature(Window.FEATURE_NO_TITLE); -
// 隐藏状态栏,你懂的 -
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, -
WindowManager.LayoutParams.FLAG_FULLSCREEN); -
-
-
// 使用代码锁定横屏 -
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); -
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);这个是竖屏 -
setContentView(new GameView(this)); -
} - }
2、牌桌页面
- package
com.bison; -
- import
android.content.Context; - import
android.graphics.Bitmap; - import
android.graphics.BitmapFactory; - import
android.graphics.Canvas; - import
android.graphics.Rect; - import
android.view.MotionEvent; - import
android.view.SurfaceHolder; - import
android.view.SurfaceView; -
- import
com.bison.utils.Person; -
-
- public
class GameView extends SurfaceView implements SurfaceHolder.Callback { -
private FlushThread thread = null;// 刷帧线程 -
private Bitmap sourceBitmap = null;// 扑克图片来源 -
private Bitmap backgroundDesk = null;// 牌桌背景 -
private Bitmap backgroundPuke = null;// 扑克背面 -
-
private final Person person; -
private int pukeWidth = 0;// 扑克的宽 -
private int pukeHeight = 0;// 扑克的高 -
private int deskWidth = 0;// 牌桌的宽 -
private int deskHeight = 0;// 牌桌的高 -
private int left = 0;// 我自己首张牌左距离 -
-
public GameView(Context context) { -
super(context); -
getHolder().addCallback(this); -
this.thread = new FlushThread(getHolder(), this);// 实例化线程 -
initBitmap();// 实例化图片 -
this.person = new Person();// 实例化Person类 -
this.left = deskWidth / 2 - (16 * 25 + pukeWidth) / 2;// 左距开始时赋值 -
} -
-
private void initBitmap() { // 初始化图片 -
sourceBitmap = BitmapFactory.decodeResource(getResources(), -
R.drawable.smallcard); -
pukeWidth = sourceBitmap.getWidth() / 14;// 每张扑克的宽高 -
pukeHeight = sourceBitmap.getHeight