Android ZXing 扫描仪 activity 转换不工作

Android ZXing scanner activity transition not working

我正在使用一个简单的 activity(来自这个 library)和 ZXing 来扫描条形码。 一切正常,但 MainActivity 和 ScannerActivity 之间的转换效果不佳。说到一半就被打断了。当从 ScannerActivity 返回到 MainActivity 时,转换会按预期进行。只有在加载 barcodescanner 时它看起来不太好。

你知道如何解决这个问题吗?

主要活动:

private void invokeScanner() {
    try {
        Intent intent = new Intent(this, ScannerActivity.class);
        stealFocus(et_loadInput);
        startActivityForResult(intent,0);
        this.overridePendingTransition(R.anim.detail_anim_up, R.anim.detail_anim_down);
    } catch (Exception e){
        Log.e(TAG, "couldn't open scanner");
        e.printStackTrace();
        openAlertDialog(Const.MSG_PROCESSING_ERROR);
    }
}

扫描仪活动:

public class ScannerActivity extends AbstractTitleBarActivity implements ZXingScannerView.ResultHandler{

private ZXingScannerView mScannerView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mScannerView = new ZXingScannerView(this);
    setContentView(mScannerView);

    this.tv_backTitle.setText(getString(R.string.TITLE_SEARCH_VIEW));
    this.tv_heading.setText("");

    TextView titleClose = (TextView) findViewById(R.id.btn_close);
    titleClose.setVisibility(View.VISIBLE);
    titleClose.setOnClickListener(titleCloseListener);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

@Override
public void onResume() {
    super.onResume();
    mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
    mScannerView.startCamera();          // Start camera on resume
}

@Override
public void onPause() {
    super.onPause();
    mScannerView.stopCamera();           // Stop camera on pause
}

@Override
protected boolean isBackBtnVisible() {
    return false;
}

@Override
protected boolean isLogoVisible() {
    return false;
}

@Override
public void handleResult(Result rawResult) {

    Log.v(TAG, rawResult.getText()); // Prints scan results
    Log.v(TAG, rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.)
    MainActivity.scanVal = rawResult.toString();
    MainActivity.loadVal = MainActivity.scanVal;
    finish();
    overridePendingTransition(R.anim.detail_anim_back_down,R.anim.detail_anim_back_up);


}

// listener for close button
protected TextView.OnClickListener titleCloseListener = new TextView.OnClickListener() {
    public void onClick(View v) {
        finish();
        overridePendingTransition(
                R.anim.detail_anim_back_down, R.anim.detail_anim_back_up);
    }
};

}

我实际上用这个 answer.

解决了我自己的问题 :D

我只是将 ZXingScannerView 放入一个片段中,并添加了一个高度为 0px 的表面视图作为兄弟。现在动画工作正常,条形码扫描仪加载时无需刷新完整 activity.