最简单的自定义控件

创建一个跟随手指移动的控件

第一步:重写控件

  1. 新建一个类,继承自View
  2. 定义两个字段,表示x,y在屏幕上的坐标
  3. 在构造函数上给x,y赋值
  4. 重写onDraw方法
  5. 创建并实例化Paint对象
  6. 根据图片生成位图对象
  7. 绘制图像
  8. 回收图像
public float bitmapX,bitmapY;
    public RabbitView(Context context)
    {
        super(context);
        bitmapX = 290;
        bitmapY = 160;
    }
    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        Paint paint=new Paint();      //创建并实例化Paint对象
        Bitmap bitmap= BitmapFactory.decodeResource(this.getResources(),R.mipmap.ic_launcher_round);
        //根据图片生成图片对象
        canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
        //绘制要移动的图片对象
        if (bitmap.isRecycled())//判断图像是否回收
        {
            bitmap.recycle();//强制回收图片
        }
    }

第二歩:引用控件并设置移动事件

  1. 获取布局
  2. 创建并实例化自定义控件类
  3. 为控件添加触摸监听设备
  4. 在监听事件方法里设置控件x、y的位置并重绘控件
  5. 将控件实例添加到布局中
@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FrameLayout frameLayout=findViewById(R.id.myLayout);
        final RabbitView rabbit=new RabbitView(this);
        rabbit.setOnTouchListener(new View.OnTouchListener()
        {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent)
            {
                rabbit.bitmapY=motionEvent.getY();
                rabbit.bitmapX=motionEvent.getX();
                rabbit.invalidate();//重绘
                return true;
            }
        });
        frameLayout.addView(rabbit);
    }

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/MantisShrimp/article/details/82949639