此链接中有一个非常标准的叠加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
}
答案 0 :(得分:0)
根据您的第一个问题,我认为问题在于您使用的表面视图的高度大于imageView的高度,并且等于imageButton,因此在ImageView的情况下没有显示,并且在ImageButton的情况下显示行(提示:想想3d)here是android材质设计高程和阴影的指南。尝试增加ImageView或ImageButton的高程。
现在提出第二个问题,不应该是因为旧API尝试this回答。
答案 1 :(得分:0)
所以我的问题还没有在模拟器中解决。但是,我能够获得运行API15,19,21,21,24的各种设备(5)。这是适合我的代码。仅在我将minSdkVersion更改为15之后才使用API15。
使用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
获得了在模拟器中使用的相同代码。