自定义view完成简单的小游戏----手指兔子
来源:互联网 发布:机关游泳馆办卡通知 编辑:程序博客网 时间:2024/04/29 03:48
虽然Android提供了很多继承了View类的UI组件,但是在实际开发中,还会出现不足以满足程序需要的情况。这时,用户就可以通过View类来开发自己的组件。
下面我们就来自定义View来实现一个小游戏--手指兔子。
1、首先自定义一个RabbitView继承于View类,病重写构造方法,然后根据需要重写相应的方法
public class RabbitView extends View { public float bitmapX;//小兔子显示位置的X坐标 public float bitmapY;//小兔子显式位置的Y坐标
//重写构造方法 public RabbitView(Context context) { super(context);
//设置小兔子默认显式的位置XY坐标 bitmapX = 100; bitmapY = 100; }
//重写onDraw方法 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);
//创建并实例化Paint对象 Paint paint = new Paint();
//根据图片生成位图对象 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.rabbit);
//绘制小兔子 canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
//判断图片是否回收 if(bitmap.isRecycled()){
//强制回收图片 bitmap.recycle(); } }}
2、在MainActivity中的onCreate()方法中作如下处理:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//获得布局 RelativeLayout relativeLayout = (RelativeLayout) findViewById(activity_main);
//创建并实例化RabbitView类 final RabbitView rabbit = new RabbitView(this);//为小兔子添加触摸事件监听器 rabbit.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) {//设置小兔子显示位置的XY坐标 rabbit.bitmapX = event.getX(); rabbit.bitmapY = event.getY();//重绘rabbit组件 rabbit.invalidate(); return true; } });//将rabbit添加到布局中 relativeLayout.addView(rabbit); }}接下来就可以玩一玩儿啦,小兔子会随着你的手指的拖动轨迹而移动的,快去试试吧~
0 0
- 自定义view完成简单的小游戏----手指兔子
- 自定义ViewGroup[跟随手指移动的view]
- 自定义view,跟随手指滑动的圆球
- 自定义View圆圈跟随手指的demo
- 自定义跟随手指移动view
- 自定义的View,实现一个跟随手指的小球
- android从零开始-开发自定义View-跟随手指移动的小球
- 自定义圆形View:实现跟随手指移动的小球
- 自定义view的进度条与手指移动事件
- 简单的view 自定义
- 简单的自定义View
- 简单的自定义view
- Android 自定义view实例:跟踪手指小球
- android自定义View 五子棋小游戏
- Android自定义View之跟随手指一起滑动的五色的小球
- Android自定义简单的View
- Android自定义简单的View
- Android自定义简单的View
- MyEclipse10破解后续~~~~破解不成功
- 安卓6.0开启系统权限问题(地理位置、相机等),MPermissions的简单使用
- UEFI/GPT、BIOS/MBR、DiskPart
- #pragma pack(1)
- 百度短网址API java HttpClient
- 自定义view完成简单的小游戏----手指兔子
- 二叉树的深度
- android.view.InflateException: Binary XML file line #102: Error inflating class null
- 谷歌浏览器安装PostMan
- com.alibaba.fastjson.JSOnException:exepct '[' ,but {
- 支付宝集成过程详解——运行DEMO
- c语言如何操作内存(数据类型、函数在内存中解析简介)
- Spring MVC 拦截器
- windows下判断网卡是否是虚拟网卡的方式