最简单的自定义控件

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

第一步:重写控件

  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);
    }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值