如何在安卓相机上绘制移动线条?

3
我想在摄像头上绘制一条移动的线,以等待进程结束。目前我有以下代码:
 public class OcrGraphic extends GraphicOverlay.Graphic {

    OcrGraphic(GraphicOverlay overlayt) {
        super(overlay);
        postInvalidate();
    }

    @Override
    public void draw(Canvas canvas) {
         //draw line
    }
}

问题在于我不仅想画一条线,而且想创建一个类似于线程的东西,以便在长时间的过程中移动线(向上和向下)。
这是我拥有的XML:
    <com.google.android.gms.samples.vision.ocrreader.ui.camera.CameraSourcePreview
        android:id="@+id/preview"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.gms.samples.vision.ocrreader.ui.camera.GraphicOverlay
            android:id="@+id/graphicOverlay"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <View
            android:layout_width="5dp"
            android:layout_height="1dp"
            android:background="#FF0000"
            android:id="@+id/line"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginTop="65dp"
            android:minHeight="5dp" />

    </com.google.android.gms.samples.vision.ocrreader.ui.camera.CameraSourcePreview>

'camereSourcePreview' 标签来自谷歌视觉 API。
1个回答

1
动画框架已经为您准备好了。
在您的布局xml文件中创建一行。类似于这样:
<View
  android:layout_width="match_parent"
  android:layout_height="1dp"
  android:background="#cccccc"
  android:id="@+id/line"/>

然后在您的anim资源文件夹中创建一个动画资源。

<set android:repeatMode="reverse"
xmlns:android="http://schemas.android.com/apk/res/android">

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromYDelta="100%"
    android:toYDelta="0"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:duration="300"
    />

在您的代码中,使用AnimationUtils获取视图并进行动画处理。
View line= (View) findViewById(R.id.line);
Animation upDown= AnimationUtils.loadAnimation(this, R.anim.up_down_anim);
line.startAnimation(upDown);

然后,为了完成动画,您可以调用(这里不确定)。
line.getAnimation().cancel();

https://developer.android.com/guide/topics/resources/animation-resource.html


谢谢你的回答,但它并不起作用。当我在xml中添加视图时,即使我将高度设置为1dp,它也会占据整个屏幕。我更新了我的预览帖子,向你展示我的xml文件。 - Kevin Vincent
你可能需要将该行代码包装到FrameLayout中。我从未使用过CameraSourcePreview,但我可以看到它扩展了ViewGroup,但我不知道它作为布局的行为如何。 - JDenais
它不工作。最后,我使用SurfaceView来覆盖相机。 - Kevin Vincent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接