Commit 5177bca5 authored by zhang_z's avatar zhang_z

添加扫码相关;

parent 03a0c2a0
......@@ -81,5 +81,6 @@ dependencies {
compile 'com.github.ybq:Android-SpinKit:1.1.0'
compile 'com.youth.banner:banner:1.4.10'
compile 'cn.jzvd:jiaozivideoplayer:6.0.0'
compile 'me.dm7.barcodescanner:zxing:1.9.8'
compile(name: 'zx_print_library-debug', ext: 'aar')
}
......@@ -6,6 +6,8 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:name=".App"
android:allowBackup="true"
......
......@@ -64,6 +64,9 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
mViewBinding.etSearch.setOnFocusChangeListener((view, b) -> {
mPresenter.searchBarFocusChanged(b);
});
mViewBinding.btnScan.setOnClickListener(view -> {
this.showScanFragment();
});
}
@Override
......@@ -121,7 +124,7 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
@Override
public void showCartDialog(Saleorder saleorder, List<Saledetail> saledetails) {
mCartDialog.setSaleorder(saleorder).setSaledetails(saledetails).show(this);
}
}
@Override
public void showMsDialog(List<Ms> mss) {
......@@ -143,6 +146,11 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
if (!mSearchFragment.isAdded()) this.start(mSearchFragment);
}
@Override
public void showScanFragment() {
this.start(mScanFragment);
}
@Override
public void resetSearchBar() {
mViewBinding.etSearch.setText("");
......
......@@ -102,6 +102,11 @@ interface StoreContract {
*/
void showSearchFragment();
/**
* 显示扫码页面
*/
void showScanFragment();
/**
* 重置搜索栏
*/
......
package com.xingdata.zzdpos.ui.store.fragment;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.TypedValue;
import com.blankj.utilcode.util.ToastUtils;
import com.google.zxing.Result;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentStoreScanBinding;
import com.xingdata.zzdpos.ui.store.StorePresenter;
public class ScanFragment extends BaseFragment<StorePresenter, FragmentStoreScanBinding> {
import me.dm7.barcodescanner.core.IViewFinder;
import me.dm7.barcodescanner.core.ViewFinderView;
import me.dm7.barcodescanner.zxing.ZXingScannerView;
public class ScanFragment extends BaseFragment<StorePresenter, FragmentStoreScanBinding> implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;
@Override
public int getLayoutId() {
return R.layout.fragment_store_scan;
......@@ -14,6 +32,90 @@ public class ScanFragment extends BaseFragment<StorePresenter, FragmentStoreScan
@Override
public void initView() {
mScannerView = new ZXingScannerView(mContext) {
@Override
protected IViewFinder createViewFinderView(Context context) {
return new CustomViewFinderView(context);
}
};
mViewBinding.contentFrame.addView(mScannerView);
}
@Override
public void handleResult(Result result) {
ToastUtils.showShort("Contents = " + result.getText() + ", Format = " + result.getBarcodeFormat().toString());
// Note:
// * Wait 2 seconds to resume the preview.
// * On older devices continuously stopping and resuming camera preview can result in freezing the app.
// * I don't know why this is the case but I don't have the time to figure out.
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mScannerView.resumeCameraPreview(ScanFragment.this);
}
}, 2000);
}
@Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera();
}
private static class CustomViewFinderView extends ViewFinderView {
public static final String TRADE_MARK_TEXT = "ZXing";
public static final int TRADE_MARK_TEXT_SIZE_SP = 40;
public final Paint PAINT = new Paint();
public CustomViewFinderView(Context context) {
super(context);
init();
}
public CustomViewFinderView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
PAINT.setColor(Color.WHITE);
PAINT.setAntiAlias(true);
float textPixelSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
TRADE_MARK_TEXT_SIZE_SP, getResources().getDisplayMetrics());
PAINT.setTextSize(textPixelSize);
setSquareViewFinder(true);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawTradeMark(canvas);
}
private void drawTradeMark(Canvas canvas) {
Rect framingRect = getFramingRect();
float tradeMarkTop;
float tradeMarkLeft;
if (framingRect != null) {
tradeMarkTop = framingRect.bottom + PAINT.getTextSize() + 10;
tradeMarkLeft = framingRect.left;
} else {
tradeMarkTop = 10;
tradeMarkLeft = canvas.getHeight() - PAINT.getTextSize() - 10;
}
canvas.drawText(TRADE_MARK_TEXT, tradeMarkLeft, tradeMarkTop, PAINT);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
</layout>
\ No newline at end of file
......@@ -3,11 +3,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.CoordinatorLayout
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_zhouyu"
android:orientation="vertical">
android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>
</layout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment