首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用安卓相机放大我的定制相机?

如何使用安卓相机放大我的定制相机?
EN

Stack Overflow用户
提问于 2018-03-06 11:17:02
回答 1查看 1.1K关注 0票数 0

我做了我的工作,在制作自定义相机应用程序使用xamarin。我渲染相机,现在我必须实现变焦功能。不过,我不知道该怎么做。我搜索了一下,发现有startSmoothZoom(int )。但我怎么能用这个呢?有什么例子吗?当设备识别出捏手势时,我称之为这个功能。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-07 09:41:45

代码语言:javascript
复制
    private float oldDist = 1f;//to caculate Zoom in/out
    public override bool OnTouchEvent(MotionEvent e)
    {
        if (e.PointerCount == 1) {
        }
        switch (e.Action & MotionEventActions.Mask)
        {
            case MotionEventActions.Down:
                oldDist = getFingerSpacing(e);
                break;
            case MotionEventActions.Move:
                float newDist = getFingerSpacing(e);
                if (newDist > oldDist) {
                    //mCamera is your Camera which used to take picture, it should already exit in your custom Camera
                    handleZoom(true, mCamera);
                } else if (newDist<oldDist) {
                    handleZoom(false, mCamera);
        }
                oldDist = newDist;
                break;
        }
        return true;
    }

    //get fingers's distance
    private static float getFingerSpacing(MotionEvent e)
    {
        float x = e.GetX(0) - e.GetX(1);
        float y = e.GetY(0) - e.GetY(1);
        return (float)Math.Sqrt(x * x + y * y);
    }
    //Zoom
    private void handleZoom(Boolean isZoomIn, Camera camera)
    {
        Camera.Parameters parameters = camera.GetParameters();
        if (parameters.IsZoomSupported) {
            int maxZoom = parameters.MaxZoom;
            int zoom = parameters.Zoom;
            if (isZoomIn && zoom < maxZoom)
            {
                zoom++;
            }
            else if (zoom > 0)
            {
                zoom--;
            }
            parameters.Zoom=zoom;
            camera.SetParameters(parameters);
        } else {
            Android.Util.Log.Error("lv", "zoom not supported");
        }
    }
}    
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49129552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档