Я новичок в Android и разрабатываю приложение для камеры. Я использую SurfaceView для отображения предварительного просмотра камеры, который отлично работает. А затем используйте setLayoutParams (), чтобы изменить размер поверхности, который не работает. Размер поверхности не изменился.
что-то не так с моим кодом?
Очень ценю любые предложения или слова.
Большое спасибо!
Мой код:
//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);
}