• 自定义控件(实现小飞机)


    1.效果图:按A就往左移动,按W就往上移动,按S就往下移动,按D往右移动

    2.planeView.java

     1 package com.example.app4;
     2 
     3 import android.content.Context;
     4 import android.graphics.Bitmap;
     5 import android.graphics.BitmapFactory;
     6 import android.graphics.Canvas;
     7 import android.graphics.Paint;
     8 import android.view.View;
     9 
    10 /**
    11  * Created by Administrator on 2018/5/16.
    12  */
    13 public class palneView extends View {
    14     private Bitmap plane;
    15     public float currentX;
    16     public float currentY;
    17 
    18     public palneView(Context context) {
    19         super(context);
    20         plane = BitmapFactory.decodeResource(context.getResources(),R.drawable.plane);
    21         setFocusable(true);
    22     }
    23 
    24     @Override
    25     protected void onDraw(Canvas canvas) {
    26         super.onDraw(canvas);
    27         Paint paint = new Paint();
    28         canvas.drawBitmap(plane,currentX,currentY,paint);
    29     }
    30 }

    3.MainActivity.java

     1 package com.example.app4;
     2 
     3 import android.support.v7.app.AppCompatActivity;
     4 import android.os.Bundle;
     5 import android.util.DisplayMetrics;
     6 import android.view.KeyEvent;
     7 import android.view.View;
     8 import android.view.Window;
     9 import android.view.WindowManager;
    10 
    11 public class MainActivity extends AppCompatActivity {
    12     public palneView pv;
    13     private int speed=10;
    14 
    15     @Override
    16     protected void onCreate(Bundle savedInstanceState) {
    17         super.onCreate(savedInstanceState);
    18         //去窗口标题
    19         requestWindowFeature(Window.FEATURE_NO_TITLE);
    20         //全屏
    21         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    22         pv= new palneView(MainActivity.this);
    23         setContentView(pv);
    24         DisplayMetrics metrics = new DisplayMetrics();
    25 
    26         //初始位置
    27         pv.currentX=metrics.widthPixels/2;
    28         pv.currentY=metrics.heightPixels/2;
    29 
    30         pv.setOnKeyListener(new View.OnKeyListener() {
    31             @Override
    32             public boolean onKey(View v, int keyCode, KeyEvent event) {
    33                 switch (event.getKeyCode()){
    34                     case KeyEvent.KEYCODE_W:
    35                         pv.currentY-=speed;
    36                         break;
    37                     case KeyEvent.KEYCODE_S:
    38                         pv.currentY+=speed;
    39                         break;
    40                     case KeyEvent.KEYCODE_A:
    41                         pv.currentX-=speed;
    42                         break;
    43                     case KeyEvent.KEYCODE_D:
    44                         pv.currentX+=speed;
    45                         break;
    46 
    47                 }
    48                 pv.invalidate();
    49                 return true;
    50             }
    51         });
    52     }
    53 }
  • 相关阅读:
    osg编译日志
    MFC加载大型osg模型
    osg gdal加载tif数据文件
    osg创建灯光
    ubuntu挂载新硬盘
    MFC加载osg模型
    nginx中Geoip_module模块的使用
    centos中释放缓存的方法
    python连接kafka生产者,消费者脚本
    python初始化环境记录
  • 原文地址:https://www.cnblogs.com/sunxiaoyan/p/9046527.html
Copyright © 2020-2023  润新知