繁体   English   中英

Android在相机上方显示可调整大小的矩形

[英]Android Displaying resizable rectangle above camera

我试图以此为指导,在相机视图上构建一个具有可调整大小矩形的Android程序: 如何在Android上使用用户触摸事件创建可调整大小的矩形?

我被困了一天,因为我无法查看相对布局上的显示,也找不到问题(我是相对较新的)。

这是我的XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<RelativeLayout
    android:id="@+id/camera_preview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <View
        android:id="@+id/camera_box"
        android:layout_alignParentTop="true"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:color/transparent">
    </View>

    <Button
        android:id="@+id/button_ChangeCamera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:text="Switch Camera"
        android:textColor="@android:color/holo_orange_dark"
        android:layout_marginTop="30dp"
        android:layout_marginRight="30dp"
        android:minWidth="100dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"/>
    <Button
        android:id="@+id/button_capture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp"
        android:background="@android:color/white"
        android:text="Capture"
        android:textColor="@android:color/holo_orange_dark"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

这是我的初始化:

public class TakePhoto extends Activity {
private Camera mCamera;
private PhotoHandler mPreview;
private PictureCallback mPicture;
private Button capture, switchCamera;
private View drawView;
private Context myContext;
private RelativeLayout cameraPreview;
private boolean cameraFront = false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_page);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    myContext = this;
    initialize();
}

public void initialize() {
    cameraPreview = (RelativeLayout) findViewById(R.id.camera_preview);

    mPreview = new PhotoHandler(myContext, mCamera);
    cameraPreview.addView(mPreview);

    capture = (Button) findViewById(R.id.button_capture);
    capture.setOnClickListener(captrureListener);

    switchCamera = (Button) findViewById(R.id.button_ChangeCamera);
    switchCamera.setOnClickListener(switchCameraListener);
    drawView = new DrawView(myContext);
    drawView = findViewById(R.id.camera_box);
    drawView.bringToFront();

}

//more code

}

DrawView会覆盖onDraw并实现onTouchEvent,基本上就像Nguyen Minh Binh在以下文章中发布的解决方案一样: 如何在Android上使用用户触摸事件创建可调整大小的矩形?

有人可以帮我解决我所缺少的吗?

谢谢

drawView = new DrawView(myContext);
drawView = findViewById(R.id.camera_box);

您创建了一个DrawView类的新对象,但是在下一行中,您将一个不同的对象分配给同一变量。 DrawView现在实际上已丢失。 您可以使用addView(drawView)代替第二行,但是最简单的方法是使用

<…package…DrawView android:id="@+id/camera_box"

在您的layout.xml中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM