ImageView/ImageButton 相机预览上的叠加层未显示
ImageView/ImageButton overlay on camera preview not displayed
此 link 中的非常标准的叠加层 tutorial 用于开发带叠加层的相机预览。但是,当我将 <Button/>
更改为 <ImageView/>
或 <ImageButton/>
时,图像不会显示。我得到的只是相机预览,同时使用 <ImageView/>
和使用 <ImageButton/>
图像没有显示,但是在应该显示图像的地方有小白线。图片显示在 mipmap-xxhdpi
中。这些按钮将用于启动另一个 activity 或在用户点击时拍照。
我在 Whosebug 上查看了问题,但答案 here 对我不起作用。
其他相关细节
minSdkVersion 是 16,compileSdkVersion 是 25。当我 运行 模拟器中的应用程序在 API-21 或以上时,我得到的是黑屏。
Q1:如何在相机预览上叠加<ImageView/>
或<ImageButton/>
?
Q2: 黑屏是否与相机 API(旧)被弃用有关,我有构建单独的 类 以考虑不同的 API?
喜欢下面的代码
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
//do something
} else {
//do something else
}
根据你的第一个问题,我认为问题是你使用的表面视图的高度大于 imageView 的高度并且等于 imageButton 因此在 ImageView 的情况下没有显示并且在情况下显示线条ImageButton(提示:think 3d)here 是 android material 设计高度和 shadows.Try 增加 ImageView 或 ImageButton 高度的指南。
现在回答你的第二个问题,应该不是因为老 API 尝试 this 回答。
所以我的问题还没有在模拟器中解决。但是,我能够接触到一系列设备 (5) 运行 API15,19,21,21,24。这是对我有用的代码。 API15是我把minSdkVersion改成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
.
获得了在模拟器中工作的相同代码
此 link 中的非常标准的叠加层 tutorial 用于开发带叠加层的相机预览。但是,当我将 <Button/>
更改为 <ImageView/>
或 <ImageButton/>
时,图像不会显示。我得到的只是相机预览,同时使用 <ImageView/>
和使用 <ImageButton/>
图像没有显示,但是在应该显示图像的地方有小白线。图片显示在 mipmap-xxhdpi
中。这些按钮将用于启动另一个 activity 或在用户点击时拍照。
我在 Whosebug 上查看了问题,但答案 here 对我不起作用。
其他相关细节
minSdkVersion 是 16,compileSdkVersion 是 25。当我 运行 模拟器中的应用程序在 API-21 或以上时,我得到的是黑屏。
Q1:如何在相机预览上叠加<ImageView/>
或<ImageButton/>
?
Q2: 黑屏是否与相机 API(旧)被弃用有关,我有构建单独的 类 以考虑不同的 API?
喜欢下面的代码
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
//do something
} else {
//do something else
}
根据你的第一个问题,我认为问题是你使用的表面视图的高度大于 imageView 的高度并且等于 imageButton 因此在 ImageView 的情况下没有显示并且在情况下显示线条ImageButton(提示:think 3d)here 是 android material 设计高度和 shadows.Try 增加 ImageView 或 ImageButton 高度的指南。
现在回答你的第二个问题,应该不是因为老 API 尝试 this 回答。
所以我的问题还没有在模拟器中解决。但是,我能够接触到一系列设备 (5) 运行 API15,19,21,21,24。这是对我有用的代码。 API15是我把minSdkVersion改成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
.