我有一个简单的相机应用程序,我在alertdialog中使用surfaceview来显示取景器。我注意到如果我通过更改alertdialog的大小来手动调整取景器的大小,则surfaceChanged()回调不会在方向更改时触发。如果我评论setlayout线,它就会发射得很好。我错过了标志或配置设置吗?
感谢您的任何意见。
代码:
mBuilder = new AlertDialog.Builder(mContext);
mBuilder.setTitle("test dialog");
mAlertDialog = mBuilder.create();
mFrameLayout = new FrameLayout(mContext);
mSurfaceView = new SurfaceView(mContext);
mFrameLayout.addView(mSurfaceView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
mAlertDialog.setView(mFrameLayout, 0, 0, 0, 0);
mSurfaceView.getHolder().addCallback(mSHcallCallback);
mAlertDialog.show();
mAlertDialog.getWindow().setLayout(200, 600);
这是在活动类
之外定义的SurfaceHolder.Callback mSHcallCallback = new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Log.d(TAG, "surface changed h:"+height+", w:"+width);
// TODO Auto-generated method stub
}
};
答案 0 :(得分:0)