Skip to content

Commit

Permalink
缩放控制器添加垂直方向的
Browse files Browse the repository at this point in the history
  • Loading branch information
maning0303 committed Jan 10, 2019
1 parent a2c3179 commit da33622
Show file tree
Hide file tree
Showing 9 changed files with 594 additions and 65 deletions.
4 changes: 3 additions & 1 deletion app/src/main/java/com/maning/zxingcodedemo/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,9 @@ public void scanCode(View view) {
//扫描线的颜色
.setScanColor("#FFFF00")
//是否显示缩放控制器
.isShowZoomController(false)
.isShowZoomController(true)
//显示位置
.setZoomControllerLocation(MNScanConfig.ZoomControllerLocation.Bottom)
.builder();
MNScanManager.startScan(this, scanConfig, new MNScanCallback() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
Expand All @@ -47,8 +46,10 @@
import com.google.zxing.client.android.camera.CameraManager;
import com.google.zxing.client.android.manager.BeepManager;
import com.google.zxing.client.android.manager.InactivityTimer;
import com.google.zxing.client.android.model.MNScanConfig;
import com.google.zxing.client.android.utils.CommonUtils;
import com.google.zxing.client.android.utils.ZXingUtils;
import com.google.zxing.client.android.view.VerticalSeekBar;

import java.util.Collection;
import java.util.Map;
Expand Down Expand Up @@ -83,18 +84,26 @@ public final class CaptureActivity extends Activity implements SurfaceHolder.Cal
private LinearLayout btn_photo;
private RelativeLayout btn_dialog_bg;
private ImageView ivScreenshot;
//闪光灯是否打开
private boolean is_light_on = false;
private boolean beepFlag = true;
private boolean vibrateFlag = true;
private boolean zoomControllerFlag = true;
private int exitAnime = 0;

private SurfaceView surfaceView;
private ImageView mIvScanZoomIn;
private ImageView mIvScanZoomOut;
private SeekBar mSeekBarZoom;
private LinearLayout mLlRoomController;
private Context context;
private VerticalSeekBar mSeekBarZoomVertical;
private ImageView mIvScanZoomOutVertical;
private LinearLayout mLlRoomControllerVertical;
private ImageView mIvScanZoomInVertical;

//传递数据
//闪光灯是否打开
private boolean is_light_on = false;
private boolean beepFlag = true;
private boolean vibrateFlag = true;
private boolean zoomControllerFlag = true;
private int exitAnime = 0;
private MNScanConfig.ZoomControllerLocation zoomControllerLocation;

public Handler getHandler() {
return handler;
Expand All @@ -119,13 +128,19 @@ public void onCreate(Bundle icicle) {

private void initIntent() {
Intent intent = getIntent();
String hintText = intent.getStringExtra(MNScanManager.INTENT_KEY_HINTTEXT);
String scanColor = intent.getStringExtra(MNScanManager.INTENT_KEY_SCSNCOLOR);
boolean photoFlag = intent.getBooleanExtra(MNScanManager.INTENT_KEY_PHOTO_FLAG, true);
beepFlag = intent.getBooleanExtra(MNScanManager.INTENT_KEY_BEEP_FLAG, true);
vibrateFlag = intent.getBooleanExtra(MNScanManager.INTENT_KEY_VIBRATE_FLAG, true);
exitAnime = intent.getIntExtra(MNScanManager.INTENT_KEY_ACTIVITY_EXIT_ANIME, 0);
zoomControllerFlag = intent.getBooleanExtra(MNScanManager.INTENT_KEY_ZOOM_CONTROLLER, true);

MNScanConfig mnScanConfig = (MNScanConfig) intent.getSerializableExtra(MNScanManager.INTENT_KEY_CONFIG_MODEL);


String hintText = mnScanConfig.getScanHintText();
String scanColor = mnScanConfig.getScanColor();
boolean photoFlag = mnScanConfig.isShowPhotoAlbum();
beepFlag = mnScanConfig.isShowBeep();
vibrateFlag = mnScanConfig.isShowVibrate();
exitAnime = mnScanConfig.getActivityExitAnime();
zoomControllerFlag = mnScanConfig.isShowZoomController();
zoomControllerLocation = mnScanConfig.getZoomControllerLocation();

if (!TextUtils.isEmpty(hintText)) {
viewfinderView.setHintText(hintText);
}
Expand Down Expand Up @@ -424,6 +439,19 @@ public void onClick(View v) {
mIvScanZoomIn = (ImageView) findViewById(R.id.iv_scan_zoom_in);
mIvScanZoomOut = (ImageView) findViewById(R.id.iv_scan_zoom_out);
mSeekBarZoom = (SeekBar) findViewById(R.id.seek_bar_zoom);
mLlRoomController = (LinearLayout) findViewById(R.id.ll_room_controller);

mSeekBarZoomVertical = (VerticalSeekBar) findViewById(R.id.seek_bar_zoom_vertical);
mIvScanZoomOutVertical = (ImageView) findViewById(R.id.iv_scan_zoom_out_vertical);
mIvScanZoomInVertical = (ImageView) findViewById(R.id.iv_scan_zoom_in_vertical);
mLlRoomControllerVertical = (LinearLayout) findViewById(R.id.ll_room_controller_vertical);

mSeekBarZoomVertical.setMaxProgress(100);
mSeekBarZoomVertical.setProgress(0);
mSeekBarZoomVertical.setThumbSize(8, 8);
mSeekBarZoomVertical.setUnSelectColor(Color.parseColor("#b4b4b4"));
mSeekBarZoomVertical.setSelectColor(Color.parseColor("#FFFFFF"));

mIvScanZoomIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Expand All @@ -436,10 +464,24 @@ public void onClick(View v) {
zoomOut(10);
}
});
mIvScanZoomInVertical.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
zoomIn(10);
}
});
mIvScanZoomOutVertical.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
zoomOut(10);
}
});

mSeekBarZoom.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
cameraManager.setZoom(progress);
mSeekBarZoomVertical.setProgress(progress);
}

@Override
Expand All @@ -452,7 +494,24 @@ public void onStopTrackingTouch(SeekBar seekBar) {

}
});
mLlRoomController = (LinearLayout) findViewById(R.id.ll_room_controller);

mSeekBarZoomVertical.setOnSlideChangeListener(new VerticalSeekBar.SlideChangeListener() {
@Override
public void onStart(VerticalSeekBar slideView, int progress) {

}

@Override
public void onProgress(VerticalSeekBar slideView, int progress) {
cameraManager.setZoom(progress);
mSeekBarZoom.setProgress(progress);
}

@Override
public void onStop(VerticalSeekBar slideView, int progress) {

}
});
}

private void zoomOut(int value) {
Expand All @@ -461,6 +520,7 @@ private void zoomOut(int value) {
progress = 0;
}
mSeekBarZoom.setProgress(progress);
mSeekBarZoomVertical.setProgress(progress);
cameraManager.setZoom(progress);
}

Expand All @@ -470,6 +530,7 @@ private void zoomIn(int value) {
progress = 100;
}
mSeekBarZoom.setProgress(progress);
mSeekBarZoomVertical.setProgress(progress);
cameraManager.setZoom(progress);
}

Expand All @@ -481,14 +542,38 @@ private void updateZoomController() {
if (framingRect == null) {
return;
}
//动态修改位置
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mLlRoomController.getLayoutParams();
layoutParams.width = framingRect.right - framingRect.left - CommonUtils.dip2px(context, 20);
layoutParams.setMargins(0, framingRect.bottom + CommonUtils.dip2px(context, 10), 0, 0);
mLlRoomController.setLayoutParams(layoutParams);
//显示
if (zoomControllerFlag) {
mLlRoomController.setVisibility(View.VISIBLE);
int size10 = CommonUtils.dip2px(context, 10);

if (zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Left) {
//垂直方向
RelativeLayout.LayoutParams layoutParamsVertical = (RelativeLayout.LayoutParams) mLlRoomControllerVertical.getLayoutParams();
layoutParamsVertical.height = framingRect.bottom - framingRect.top - size10 * 2;
layoutParamsVertical.setMargins(framingRect.left - size10 - layoutParamsVertical.width, framingRect.top + size10, 0, 0);
mLlRoomControllerVertical.setLayoutParams(layoutParamsVertical);

mLlRoomControllerVertical.setVisibility(View.VISIBLE);
} else if (zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Right) {
//垂直方向
RelativeLayout.LayoutParams layoutParamsVertical = (RelativeLayout.LayoutParams) mLlRoomControllerVertical.getLayoutParams();
layoutParamsVertical.height = framingRect.bottom - framingRect.top - size10 * 2;
layoutParamsVertical.setMargins(framingRect.right + size10, framingRect.top + size10, 0, 0);
mLlRoomControllerVertical.setLayoutParams(layoutParamsVertical);

mLlRoomControllerVertical.setVisibility(View.VISIBLE);
} else if (zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Bottom) {
//横向
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mLlRoomController.getLayoutParams();
layoutParams.width = framingRect.right - framingRect.left - size10 * 2;
layoutParams.setMargins(0, framingRect.bottom + size10, 0, 0);
mLlRoomController.setLayoutParams(layoutParams);

mLlRoomController.setVisibility(View.VISIBLE);
}
}


}


Expand All @@ -514,15 +599,31 @@ public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
if (startY - moveY > 50) {
//向上滑
if (zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Left
|| zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Right) {
//垂直方向
//向上滑
zoomIn(1);
}
} else if (moveY - startY > 50) {
//向下滑
if (zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Left
|| zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Right) {
//垂直方向
//向下滑
zoomOut(1);
}
} else if (startX - moveX > 50) {
//向左滑
zoomOut(1);
if (zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Bottom) {
//垂直方向
//向左滑
zoomOut(1);
}
} else if (moveX - startX > 50) {
//向右滑
zoomIn(1);
if (zoomControllerLocation == MNScanConfig.ZoomControllerLocation.Bottom) {
//垂直方向
//向右滑
zoomIn(1);
}
}
}
return super.onTouchEvent(event);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,7 @@ public class MNScanManager {


//跳转传入的数据
//提示文案
public static final String INTENT_KEY_HINTTEXT = "INTENT_KEY_HINTTEXT";
//扫描线的颜色
public static final String INTENT_KEY_SCSNCOLOR = "INTENT_KEY_SCSNCOLOR";
//相机是否显示
public static final String INTENT_KEY_PHOTO_FLAG = "INTENT_KEY_PHOTO_FLAG";
//识别声音
public static final String INTENT_KEY_BEEP_FLAG = "INTENT_KEY_BEEP_FLAG";
//识别震动
public static final String INTENT_KEY_VIBRATE_FLAG = "INTENT_KEY_VIBRATE_FLAG";
//扫描退出动画
public static final String INTENT_KEY_ACTIVITY_EXIT_ANIME = "INTENT_KEY_ACTIVITY_EXIT_ANIME";
//是否显示缩放控制器
public static final String INTENT_KEY_ZOOM_CONTROLLER = "INTENT_KEY_ZOOM_CONTROLLER";
public static final String INTENT_KEY_CONFIG_MODEL = "INTENT_KEY_CONFIG_MODEL";


public static void startScan(Activity activity, MNScanCallback scanCallback) {
Expand All @@ -48,21 +35,8 @@ public static void startScan(Activity activity, MNScanConfig mnScanConfig, MNSca
mnScanConfig = new MNScanConfig.Builder().builder();
}
Intent intent = new Intent(activity.getApplicationContext(), CaptureActivity.class);
//是否显示相册按钮
intent.putExtra(MNScanManager.INTENT_KEY_PHOTO_FLAG, mnScanConfig.isShowPhotoAlbum());
//识别声音
intent.putExtra(MNScanManager.INTENT_KEY_BEEP_FLAG, mnScanConfig.isShowBeep());
//识别震动
intent.putExtra(MNScanManager.INTENT_KEY_VIBRATE_FLAG, mnScanConfig.isShowVibrate());
//扫码框的颜色
intent.putExtra(MNScanManager.INTENT_KEY_SCSNCOLOR, mnScanConfig.getScanColor());
//扫码框上面的提示文案
intent.putExtra(MNScanManager.INTENT_KEY_HINTTEXT, mnScanConfig.getScanHintText());
//退出动画
intent.putExtra(MNScanManager.INTENT_KEY_ACTIVITY_EXIT_ANIME, mnScanConfig.getActivityExitAnime());
//是否显示缩放控制器
intent.putExtra(MNScanManager.INTENT_KEY_ZOOM_CONTROLLER, mnScanConfig.isShowZoomController());

//传递数据
intent.putExtra(MNScanManager.INTENT_KEY_CONFIG_MODEL, mnScanConfig);
ActResultRequest actResultRequest = new ActResultRequest(activity);
actResultRequest.startForResult(intent, scanCallback);
activity.overridePendingTransition(mnScanConfig.getActivityOpenAnime(), android.R.anim.fade_out);
Expand Down
Loading

0 comments on commit da33622

Please sign in to comment.