package com.zy.bvvm.ui.vaccination; import android.app.Dialog; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Point; import android.graphics.drawable.Drawable; import android.nfc.Tag; import android.os.Build; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.text.TextUtils; import android.util.Log; import android.view.Display; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.ScaleAnimation; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.hjq.bar.OnTitleBarListener; import com.hjq.bar.TitleBar; import com.hjq.image.GlideFactory; import com.hjq.image.ImageLoader; import com.hjq.permissions.OnPermission; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; import com.zy.bvvm.R; import com.zy.bvvm.helper.ActivityStackManager; import com.zy.bvvm.helper.GPS.LocationUtils; import com.zy.bvvm.helper.NfcUtil; import com.zy.bvvm.helper.SPUtils; import com.zy.bvvm.mvp.MvpLazyFragment; import com.zy.bvvm.ui.bean.CategoryTimesBean; import com.zy.bvvm.ui.login.LoginActivity; import com.zy.bvvm.ui.vaccination.categoryTimes.CategoryTimesContract; import com.zy.bvvm.ui.vaccination.categoryTimes.CategoryTimesPresenter; import com.zy.bvvm.ui.vaccination.save.ChipModel; import com.zy.bvvm.widget.EvvmMsgDiago; /** * 点击扫描 */ public class FirstFragment extends MvpLazyFragment implements CategoryTimesContract.View { @BindView(R.id.iv_first_background) ImageView first_background; @BindView(R.id.tv_button_scanning) ImageView button_scanning; @BindView(R.id.first_title) TitleBar first_title; private static String TAG = "FirstFragment"; private AlphaAnimation alphaAnimation; public static FirstFragment newInstance() { return new FirstFragment(); } @Override protected int getLayoutId() { return R.layout.first_fragment; } @Override protected int getTitleId() { return 0; } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) @Override protected void initView() { //闪烁   // alphaAnimation = new AlphaAnimation(0.1f, 1.0f); // alphaAnimation.setDuration(1000); // alphaAnimation.setRepeatCount(Animation.INFINITE); // alphaAnimation.setRepeatMode(Animation.REVERSE); // imgLuotuo.setAnimation(alphaAnimation); // alphaAnimation.start(); first_title.setOnTitleBarListener(new OnTitleBarListener() { @Override public void onLeftClick(View v) { } @Override public void onTitleClick(View v) { } @Override public void onRightClick(View v) { getExit(); } }); setImage(); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { //相当于Fragment的onResume,为true时,Fragment已经可见 SPUtils.remove("INOCULATOR_LIST"); } else { //相当于Fragment的onPause,为false时,Fragment不可见 } } //提交未上传的数据 private void uploadChip() { String user_id = (String) SPUtils.get("USER_ID", ""); if (!user_id.equals("")) { ArrayList chipModelList = (ArrayList) SPUtils.get("CHIP_MODEL_LIST_" + user_id, new ArrayList()); for (ChipModel chipModel : chipModelList) { // getPresenter().forDoctor(chipModel.getChipNumber(),chipModel.getTextRecord(),chipModel.getInoculatorIds(),chipModel.getLongitude(),chipModel.getLatitude()); } } } @Override protected void initData() { getPresenter().categoryTimesList(); //获取屏幕宽高 // WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); // int height = wm.getDefaultDisplay().getHeight(); // // Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.doctor_index_btn); //获取imageview的高度 // // RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.hjfgrl); // // RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); // // //设置上边距为 (屏幕的上黄金分割面积 + imageview的高/2) 达到imageview中间点处于黄金分割线的效果 // layoutParams.topMargin = (int) (height * 0.425) - (bitmap.getHeight() / 2); // // //这个api设置相对布局,位置的 // // params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); // // relativeLayout.setLayoutParams(layoutParams); // Log.e("WindowManager", "" + height + " --" + bitmap.getHeight()); } @Override public void categoryTimesListError(String msg) { } @Override public void categoryTimesListSuccess(List data) { for (CategoryTimesBean.DataBean bean : data) { SPUtils.put("CATEGORY_TIMES_" + bean.getCode2(), bean.getOvertimes() + ""); SPUtils.put("CATEGORY_NORMAL_UP" + bean.getCode2(), TextUtils.isEmpty(bean.getNormalUp()) ? "0.05" : bean.getNormalUp()); SPUtils.put("CATEGORY_NORMAL_DOWN" + bean.getCode2(), TextUtils.isEmpty(bean.getNormalDown()) ? "0.05" : bean.getNormalDown()); } } @Override public boolean isStatusBarEnabled() { // 使用沉浸式状态栏 return !super.isStatusBarEnabled(); } @OnClick(value = R.id.tv_button_scanning) public void onViewClicked() { getCameraPermission(); } /** * 点击进行下一步扫描或者读取NFC页面 */ private void getCameraPermission() { XXPermissions.with(getBindingActivity()) //.constantRequest() //可设置被拒绝后继续申请,直到用户授权或者永久拒绝 //.permission(Permission.SYSTEM_ALERT_WINDOW, Permission.REQUEST_INSTALL_PACKAGES) //支持请求6.0悬浮窗权限8.0请求安装权限 .permission(Permission.CAMERA) //不指定权限则自动获取清单中的危险权限 .request(new OnPermission() { @Override public void hasPermission(List granted, boolean isAll) { if (isAll) { //toast("获取权限成功"); if (!checkGpsAndNfc()) { return; } if (SPUtils.get("switch_state", "close").equals("open")) { startActivity(QrCodeActivity.class); //扫描页面 } else { startActivity(ReadingActivity02.class); //NFC页面 } } else { toast("获取权限成功,部分权限未正常授予"); } } @Override public void noPermission(List denied, boolean quick) { if (quick) { toast("未获取到照相机权限,请手动授予"); //如果是被永久拒绝就跳转到应用权限系统设置页面 XXPermissions.gotoPermissionSettings(getBindingActivity()); } else { toast("获取照相机权限失败,无法使用扫一扫"); } } }); } @Override public void onLoading() { } @Override public void onComplete() { } @Override public void onEmpty() { } @Override public void onError() { } @Override public void onDestroy() { // alphaAnimation.cancel(); super.onDestroy(); } @Override protected CategoryTimesPresenter createPresenter() { return new CategoryTimesPresenter(); } private void setImage() { // first_background.setScaleType(ImageView.ScaleType.FIT_XY); // ImageLoader.loadImage(first_background, R.mipmap.button_scanning); // Display defaultDisplay = getActivity().getWindowManager().getDefaultDisplay(); // Point point = new Point(); // defaultDisplay.getSize(point); // int width = point.x; // int height = point.y; // RequestOptions options = new RequestOptions() // .error(R.mipmap.button_scanning2) // .placeholder(R.mipmap.button_scanning2) // .override(width, height); // Glide.with(getActivity()).load(R.mipmap.button_scanning2).apply(options).into(first_background); //背景边框动画效果 ScaleAnimation animation = (ScaleAnimation) AnimationUtils.loadAnimation(getActivity(), R.anim.scale); // animation.setDuration(2000); //设置持续时间 animation.setFillAfter(true); //设置动画结束之后的状态是否是动画的最终状态,true,表示是保持动画结束时的最终状态 animation.setRepeatCount(10000); //设置循环次数,0为1次 first_background.startAnimation(animation); } /** * 判断是否支持GPS和NFC功能 */ protected boolean checkGpsAndNfc() { switch (NfcUtil.isOPen(getActivity())) { case 0: toast("您的手机没有NFC功能, 不能使用"); return false; case 1: toast("NFC功能未开启"); return false; } if (!LocationUtils.isOPen(getActivity())) { toast("GPS功能未开启"); return false; } return true; } private void getExit() { new EvvmMsgDiago.Builder(getActivity()) .setTitle("您确定要退出吗?") .setConfirm("确定") .setCancel("取消") // 设置 null 表示不显示取消按钮 //.setAutoDismiss(false) // 设置点击按钮后不关闭对话框 .setListener(new EvvmMsgDiago.OnListener() { @Override public void onConfirm(Dialog dialog) { //退出的操作 startActivity(LoginActivity.class); // SPUtils.logout(); // 进行内存优化,销毁掉所有的界面 ActivityStackManager.getInstance().finishAllActivities(LoginActivity.class); } @Override public void onCancel(Dialog dialog) { //toast("取消了"); } }) .show(); } }