安卓自定义控件_方向控制面板

近期公司需要做一个控制面板对摄像头进行方向控制,之前用一个圆形背景加4个圆形Button做的,同事可能感觉做的太敷衍了,而且点击效果都被手指挡住了,所以他给领导打小报告说让我重做,既然领导说做,哪有不做的道理

先看效果,左边的是按下时的效果, 没有按键时,颜色和上下右边的颜色是一致的,按键灵敏,使用简单

下面我们看看怎么用画布画出这个Panel(当然,颜色什么的可以可以换)

首先我们需要继承一个View,给View初始化一个isTouch数组,这个数组在你点击的时候记录你点击的那个方向,然后重绘面板的时候,会将点击的方向颜色变深;

然后初始化画笔,和一些默认尺寸,arrowLeft 和 arrowLeftDP 都是表示尺寸的, 为了自适应不同的屏幕大小,我们用arrowLeftDP来记录默认dp尺寸的大小,在初始化的时候将arrowLeftDP转化成PX(像素)赋给arrowLeft,所以下面所有的带DP和不带DP的尺寸变量都是这个原理

初始化的时候我们顺便设置一下触摸事件,后面我们要点击用到

public class PanelView extends View implements View.OnTouchListener {

    private final String TAG = "PanelView";
    boolean[] isTouch = new boolean[]{false,false,false,false};
    private Paint paint;
    private int smallCircleRadius = 180;
    private final int  strokeWidth = 12;
    private final int  halfStrokeWidth = strokeWidth/2;
    private int arrowLeft = -70;
    private int arrowTop = 280;
    private int arrowRight = 70;
    private int arrowBottom = 450;
    private final int smallCircleRadiusDP = 51;
    private int arrowLeftDP = -20;
    private int arrowTopDP = 80;
    private int arrowRightDP = 20;
    private int arrowBottomDP = 125;

    public PanelView(Context context) {
        super(context);
        setOnTouchListener(this);
        dpTopx(context);
    }

    public PanelView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        setOnTouchListener(this);
        dpTopx(context);
    }

    public PanelView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(co
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

baoolong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值