【问题标题】:Draw Circle in Preview in CameraX describing TapToFocus在描述 TapToFocus 的 CameraX 中的 Preview 中绘制圆
【发布时间】:2020-10-21 15:13:35
【问题描述】:

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

I want to have a circle in the preview like the image has

【问题讨论】:

  • 来自 CameraX 问题跟踪器的 response 可能会对您有所帮助。
  • 我无法在上面的网站上找到如何登录。那里没有创建帐户方法。请指导。

标签: android android-camera android-camera2 android-camerax


【解决方案1】:

有很多方法可以围绕PreviewView 的点击位置绘制对焦环并为其设置动画,其中一些方法比其他方法更精美。一种简单的方法是:

  1. 创建一个环的Drawable,例如this

  2. PreviewView 之上布局一个包含DrawableImageView,并最初隐藏它。

<FrameLayout ...>

    <androidx.camera.view.PreviewView
        ... />

    <ImageView
        android:id="@+id/focusRing"
        android:src="@drawable/focus_ring"
        android:visibility="invisible"
        ... />

</FrameLayout>
  1. PreviewView 上设置触摸监听器。在触摸事件中,使用事件的坐标来显示它周围的环。
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.
        });
}

【讨论】:

  • 感谢您的帮助。看过你在上述主题上的工作很多。感谢您的努力。如果可能,请分享一些文档,这些文档将为我提供有关 CameraX 库的更多知识。再次感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 2015-07-04
  • 2014-12-29
  • 2012-02-01
  • 2019-07-20
  • 2014-03-29
相关资源
最近更新 更多