android - 无法使用 setLayoutParams 调整相机预览的大小
问题描述
我是 Android 新手,我正在开发一个相机应用程序。我使用表面视图来显示工作正常的相机预览。然后使用 setLayoutParams() 调整不工作的表面视图的大小。surfaceview 的大小没有改变。
我的代码有什么问题吗?
如果有任何建议或话,非常感谢。
非常感谢 !
我的代码:
//init surfaceview and surfaceholder
private void initSurHolderRear()
{
if ( null == mSurViewRear )
{
mSurViewRear = new SurfaceView(this);
}
WindowManager.LayoutParams parms;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
{
parms = new WindowManager.LayoutParams(
1, 1,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
);
parms.gravity = Gravity.START | Gravity.TOP;
}
else
{
parms = new WindowManager.LayoutParams(
1, 1,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
);
parms.gravity = Gravity.START | Gravity.TOP;
}
( (WindowManager) ( this.getSystemService(Context.WINDOW_SERVICE) ) ).addView(mSurViewRear, parms);
mSurHolderRear = mSurViewRear.getHolder();
mSurHolderRear.addCallback(this);
}
//start camera preview
private void startPreview() {
try {
mCamRear.setPreviewDisplay(mSurHolderRear);
mCamRear.startPreview();
startRearRecording(mSurHolderRear);
} catch (Exception e) {
e.printStackTrace();
Log.v(LOG_TAG, "Failed to startPreview, e: " + e);
}
}
//resize camera preview
public void resizePreview()
{
ViewGroup.LayoutParams parms = mSurViewRear.getLayoutParams();
parms.width = 1000;
parms.height = 1000;
mSurViewRear.setLayoutParams(parms);
}
解决方案
推荐阅读
- reactjs - MUI 选择变体 =“填充”垂直未对齐的文本
- javascript - ecmascript 制作中的混乱
- android - 只有 ACCESS_COARSE_LOCATION 不适用于最低精度位置
- python - 蟒龟形状
- asp.net-mvc - 如何访问 ActionFilter 中的属性?
- node.js - 如何在 node.js 中禁用 SSL 验证
- python - osmnx 如何在 HPC 集群中使用?
- javascript - 使用文件系统解析和编写 json 布尔变量
- c - 如何使用代码注释禁用覆盖检查?
- visual-studio-code - 使用简单文件对话框时,是否可以在 VSCode 中获得组合的打开文件夹/打开文件对话框?