发一个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;
- /**
- * 求某公司包养
- *
- * @author Bison
- *
- */
- public class PukeActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // 这个事隐藏标题栏,不解释
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- // 隐藏状态栏,你懂的
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- /*
- * 开始有考虑使屏幕上扑克的排列随屏幕的分辨率变动 结果貌似不好做,注释掉了 Display display =
- * getWindowManager().getDefaultDisplay(); int screenWidth =
- * display.getWidth(); int screenHeight = display.getHeight();
- */
- // 使用代码锁定横屏
- 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;
- /**
- * 牌桌,会被老婆骂,最好不要上去,你懂的
- *
- * 扑克图片来源,和牌桌背景在文章的下面。 扑克背面图等我没上传,玩家自行百度
- *
- * @author Bison
- *
- */
- 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