Commit 5177bca5 authored by zhang_z's avatar zhang_z

添加扫码相关;

parent 03a0c2a0
...@@ -81,5 +81,6 @@ dependencies { ...@@ -81,5 +81,6 @@ dependencies {
compile 'com.github.ybq:Android-SpinKit:1.1.0' compile 'com.github.ybq:Android-SpinKit:1.1.0'
compile 'com.youth.banner:banner:1.4.10' compile 'com.youth.banner:banner:1.4.10'
compile 'cn.jzvd:jiaozivideoplayer:6.0.0' compile 'cn.jzvd:jiaozivideoplayer:6.0.0'
compile 'me.dm7.barcodescanner:zxing:1.9.8'
compile(name: 'zx_print_library-debug', ext: 'aar') compile(name: 'zx_print_library-debug', ext: 'aar')
} }
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.CAMERA" />
<application <application
android:name=".App" android:name=".App"
android:allowBackup="true" android:allowBackup="true"
......
...@@ -64,6 +64,9 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin ...@@ -64,6 +64,9 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
mViewBinding.etSearch.setOnFocusChangeListener((view, b) -> { mViewBinding.etSearch.setOnFocusChangeListener((view, b) -> {
mPresenter.searchBarFocusChanged(b); mPresenter.searchBarFocusChanged(b);
}); });
mViewBinding.btnScan.setOnClickListener(view -> {
this.showScanFragment();
});
} }
@Override @Override
...@@ -121,7 +124,7 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin ...@@ -121,7 +124,7 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
@Override @Override
public void showCartDialog(Saleorder saleorder, List<Saledetail> saledetails) { public void showCartDialog(Saleorder saleorder, List<Saledetail> saledetails) {
mCartDialog.setSaleorder(saleorder).setSaledetails(saledetails).show(this); mCartDialog.setSaleorder(saleorder).setSaledetails(saledetails).show(this);
} }
@Override @Override
public void showMsDialog(List<Ms> mss) { public void showMsDialog(List<Ms> mss) {
...@@ -143,6 +146,11 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin ...@@ -143,6 +146,11 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
if (!mSearchFragment.isAdded()) this.start(mSearchFragment); if (!mSearchFragment.isAdded()) this.start(mSearchFragment);
} }
@Override
public void showScanFragment() {
this.start(mScanFragment);
}
@Override @Override
public void resetSearchBar() { public void resetSearchBar() {
mViewBinding.etSearch.setText(""); mViewBinding.etSearch.setText("");
......
...@@ -102,6 +102,11 @@ interface StoreContract { ...@@ -102,6 +102,11 @@ interface StoreContract {
*/ */
void showSearchFragment(); void showSearchFragment();
/**
* 显示扫码页面
*/
void showScanFragment();
/** /**
* 重置搜索栏 * 重置搜索栏
*/ */
......
package com.xingdata.zzdpos.ui.store.fragment; 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.R;
import com.xingdata.zzdpos.base.BaseFragment; import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentStoreScanBinding; import com.xingdata.zzdpos.databinding.FragmentStoreScanBinding;
import com.xingdata.zzdpos.ui.store.StorePresenter; 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 @Override
public int getLayoutId() { public int getLayoutId() {
return R.layout.fragment_store_scan; return R.layout.fragment_store_scan;
...@@ -14,6 +32,90 @@ public class ScanFragment extends BaseFragment<StorePresenter, FragmentStoreScan ...@@ -14,6 +32,90 @@ public class ScanFragment extends BaseFragment<StorePresenter, FragmentStoreScan
@Override @Override
public void initView() { 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 @@ ...@@ -3,11 +3,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto"> 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_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent" />
android:background="@color/gray_zhouyu"
android:orientation="vertical">
</android.support.design.widget.CoordinatorLayout>
</layout> </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