gpt4 book ai didi

android - 9 补丁投影技术适用于 ImageView ,但不适用于相机预览

转载 作者:搜寻专家 更新时间:2023-11-01 08:12:14 24 4
gpt4 key购买 nike

我使用以下 9 补丁图像来创建投影效果。

enter image description here

对于下面的 ImageView ,它工作得很好。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#FFFFFF"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center" >
<ImageView
android:id="@+id/image_test"
android:background="@drawable/dropshadow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pic1"
/>
</LinearLayout>

我可以获得完美的阴影效果。请注意,图片右侧/底部有一条 1 像素宽的红线。我特意在图片右侧/底部放置了 1 像素宽的红线,以证明 9 补丁图像没有像素覆盖我的原始图片。

enter image description here

但是,当我尝试在相机预览 View 上应用完全相同的技术时,事情变得复杂了。我对 API Demo 示例 com.example.android.apis.graphics.CameraActivity

做了轻微修改

我通过执行以下修改来修改 GUI View 。

class Preview extends ViewGroup implements SurfaceHolder.Callback {
// ...
Preview(Context context) {
// ...
mSurfaceView.setBackgroundDrawable(getResources().getDrawable(drawable.dropshadow));
this.setBackgroundColor(Color.WHITE);
// ...
}
}

我得到以下结果。请注意,阴影效果开始出现,在图片右边缘和底部边缘结束之前。它的距离是到达边缘末端之前的 9 个像素。

enter image description here

我很确定这两个项目的图像文件名 dropshadow.9.png 都是正确的。但是,我不知道为什么后者不能按预期工作?

最佳答案

这是因为您使用的是 SurfaceView,它为您提供了一个专用的绘图表面,不会遵守您在 9-patch 图像中定义的内容边界。

一个可能的解决方法是将相机的 SurfaceView 放在一个稍大的 View 之上,该 View 将阴影作为背景。

关于android - 9 补丁投影技术适用于 ImageView ,但不适用于相机预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8740528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com