Android 相机开发 Camera-附带扫码遮罩界面实现原理(自动聚焦)

本文介绍了Android相机开发中的相机遮罩界面实现,通过自定义ViewFindView来创建遮罩效果,并讨论了自动聚焦的功能。在FrameLayout中,相同大小的控件会显示最上面的。此外,还提到了DimenUtil工具类和MainActivity的使用。提供的代码注释详尽,能帮助开发者理解并实现类似功能。
摘要由CSDN通过智能技术生成

相机遮罩实现原理,FrameLayout中如果控件一样大,同一时间只能见到最上面的。

1.自定义ViewFindView,相机遮罩界面

public class ViewFinderView extends View {

    //相机遮罩框外面的线,阴影区域,滚动线
    private Paint border, area, line;
    //相机遮罩框中间透明区域
    private Rect center;
    //屏幕大小
    private int screenHeight, screenWidth;
    //滚动线的起始点
    private int startX, startY, endX, endY;
    //滚动线向下滚动标识
    private boolean isDown = true;
    //滚动线速度
    private static final int SPEED = 2;
    //中间区域宽高(dp),
    public static final int centerHeight = 300;
    public static final int centerWidth = 300;

    public ViewFinder(Context context) {
        super(context);
    }

    public ViewFinder(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        //setAlpha一定要在setStyle后面,否则不起作用
        border = new Paint(Paint.ANTI_ALIAS_FLAG);
        border.setColor(Color.BLUE);
        border.setStyle(Paint.Style.STROKE);
        border.setStrokeWidth(5f);
        border.setAlpha(10);

        area = new Paint(Paint.ANTI_ALIAS_FLAG);
        area.setStyle(Paint.Style.FILL);
        area.setColor(Color.GRAY);
        area.setAlpha(180);

        screenHeight = DimenUtil.getScreenSize(context).heightPixels;
        screenWidth = DimenUtil.getScreenSize(context).widthPixels;
        center = getCenterRect(context, 300, 300);

        line = new Paint(Paint.ANTI_ALIAS_FLAG);
        line.setStyle(Paint.Style.STROKE);
        line.setColor(Color.GREEN);
        //设置滚动线的起始点
        startX = center.left;
        startY = center.top;
        endX = center.right;
        endY = center.top;
    }

    public ViewFinder(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    /**
     * 根据尺寸获取中间区大小
     *
     * @param context
     * @param height
     * @param width
     * &#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值