未显示相机预览上的ImageView / ImageButton叠加

时间:2017-06-23 08:32:13

标签: android camera imageview overlay imagebutton

此链接中有一个非常标准的叠加tutorial,用于开发带叠加的相机预览。但是,当我将<Button/>更改为<ImageView/><ImageButton/>时,图像不会显示。所有我得到的是使用<ImageView/>时的相机预览,并且在使用<ImageButton/>时,图像不显示,但是在应该有图像的地方显示小的白线。图像存在于mipmap-xxhdpi中。这些按钮将用于启动另一项活动或用户点击图片。

我已经在StackOverFlow上查询了问题,但回答here并不适合我。

其他相关详情

minSdkVersion为16,compileSdkVersion为25.当我在API-21或更高版本的模拟器中运行应用程序时,我得到的是黑屏。

Q1: 如何在相机预览上叠加<ImageView/><ImageButton/>

Q2: 黑色屏幕是否会与不推荐使用的Camera API(旧版)有关,我必须构建单独的类来考虑不同的API?< / p>

与下面的代码一样

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    //do something
} else {
    //do something else
}

2 个答案:

答案 0 :(得分:0)

根据您的第一个问题,我认为问题在于您使用的表面视图的高度大于imageView的高度,并且等于imageButton,因此在ImageView的情况下没有显示,并且在ImageButton的情况下显示行(提示:想想3d)here是android材质设计高程和阴影的指南。尝试增加ImageView或ImageButton的高程。

现在提出第二个问题,不应该是因为旧API尝试this回答。

答案 1 :(得分:0)

所以我的问题还没有在模拟器中解决。但是,我能够获得运行API15,19,21,21,24的各种设备(5)。这是适合我的代码。仅在我将minSdkVersion更改为15之后才使用API​​15。

使用here给出的步骤构建自定义相机。当您编辑XML时。使用此代码

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<FrameLayout
    android:id="@+id/camera_preview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"/>

<ImageView
    android:id="@+id/button_capture"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/your_file_name"/>
</FrameLayout>

至于获取黑屏,必须在API21及以上版本的设备(Settings->App->Select your app->Permisions->Camera)设置中授予应用权限。

修改:在invalidating cache and restarting后使用clean project获得了在模拟器中使用的相同代码。