Android 在CameraX中的预览中绘制圆,描述TapToFocus

Android 在CameraX中的预览中绘制圆,描述TapToFocus,android,android-camera,android-camera2,android-camerax,Android,Android Camera,Android Camera2,Android Camerax,我正在尝试使用CameraX Api实现TapToFocus功能。我已经成功实现了它,但不知道如何在预览上画一个圆圈来描述用户按下的位置 在预览视图中,围绕轻触位置绘制聚焦环并设置其动画的方法有很多种,有些方法比其他方法更为奇特。一种简单的方法是: 创建戒指的可绘制的,例如 在预览视图的顶部布置一个包含可绘制的的图像视图,并最初将其隐藏 来自CameraX问题跟踪器的这篇文章可能会对您有所帮助。我无法找到如何在上面的网站上登录。那里没有创建帐户的方法。请导游。谢谢你的帮助。我经常看到你在上述

我正在尝试使用CameraX Api实现TapToFocus功能。我已经成功实现了它,但不知道如何在预览上画一个圆圈来描述用户按下的位置


预览视图
中,围绕轻触位置绘制聚焦环并设置其动画的方法有很多种,有些方法比其他方法更为奇特。一种简单的方法是:

  • 创建戒指的
    可绘制的
    ,例如

  • 预览视图
    的顶部布置一个包含可绘制的
    图像视图
    ,并最初将其隐藏


  • 来自CameraX问题跟踪器的这篇文章可能会对您有所帮助。我无法找到如何在上面的网站上登录。那里没有创建帐户的方法。请导游。谢谢你的帮助。我经常看到你在上述主题上的工作。感谢你的努力。如果可能的话,请分享一些文档,这些文档将为我提供有关CameraX库的更多知识。再次感谢你
    <FrameLayout ...>
    
        <androidx.camera.view.PreviewView
            ... />
    
        <ImageView
            android:id="@+id/focusRing"
            android:src="@drawable/focus_ring"
            android:visibility="invisible"
            ... />
    
    </FrameLayout>
    
    private void animateFocusRing(float x, float y) {
        ImageView focusRing = findViewById(R.id.focusRing);
    
        // Move the focus ring so that its center is at the tap location (x, y)
        float width = focusRing.getWidth();
        float height = focusRing.getHeight();
        focusRing.setX(x - width / 2);
        focusRing.setY(y - height / 2);
    
        // Show focus ring
        focusRing.setVisibility(View.VISIBLE);
        focusRing.setAlpha(1F);
    
        // Animate the focus ring to disappear
        focusRing.animate()
            .setStartDelay(500)
            .setDuration(300)
            .alpha(0F)
            .setListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationEnd(Animator animator) {
                    focusRing.setVisibility(View.INVISIBLE);
                }
    
                // The rest of AnimatorListener's methods.
            });
    }