diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + + + + + + + + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 170e274..c07978f 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -17,6 +17,7 @@ private static Context context; private static File audioDir; private static File imageDir; + private static File waterImageDir; private static File downloadDir; public static void initFileConfig(Context context) { @@ -42,6 +43,13 @@ Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹"); } } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); + } + } downloadDir = new File(parentDir, "DownloadFile"); if (!downloadDir.exists()) { boolean mkDownDir = downloadDir.mkdir(); @@ -101,6 +109,36 @@ return imageDir.toString(); } + static File getWaterImageFile() { + //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹 + if (waterImageDir == null) { + File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Demo"); + if (!parentDir.exists()) { + boolean mkdir = parentDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getWaterImageFile: 创建Demo文件夹"); + } + } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹"); + } + } + } + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()); + File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png"); + if (!imageFile.exists()) { + try { + imageFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return imageFile; + } + //储存下载文件的目录 static String getDownloadFilePath() { if (downloadDir == null) { diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 170e274..c07978f 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -17,6 +17,7 @@ private static Context context; private static File audioDir; private static File imageDir; + private static File waterImageDir; private static File downloadDir; public static void initFileConfig(Context context) { @@ -42,6 +43,13 @@ Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹"); } } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); + } + } downloadDir = new File(parentDir, "DownloadFile"); if (!downloadDir.exists()) { boolean mkDownDir = downloadDir.mkdir(); @@ -101,6 +109,36 @@ return imageDir.toString(); } + static File getWaterImageFile() { + //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹 + if (waterImageDir == null) { + File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Demo"); + if (!parentDir.exists()) { + boolean mkdir = parentDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getWaterImageFile: 创建Demo文件夹"); + } + } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹"); + } + } + } + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()); + File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png"); + if (!imageFile.exists()) { + try { + imageFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return imageFile; + } + //储存下载文件的目录 static String getDownloadFilePath() { if (downloadDir == null) { diff --git a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java index 407d70e..55a56a3 100644 --- a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java @@ -5,6 +5,11 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; @@ -13,9 +18,10 @@ import androidx.core.app.ActivityCompat; +import com.casic.dcms.ui.BigImageActivity; import com.casic.dcms.ui.CaseProcessActivity; import com.casic.dcms.utils.callback.IDownloadListener; -import com.casic.dcms.widgets.BigPictureDialog; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; import org.jetbrains.annotations.NotNull; @@ -24,7 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.util.List; +import java.util.ArrayList; import okhttp3.Call; import okhttp3.Callback; @@ -36,9 +42,61 @@ public class OtherUtils { private static final String TAG = "OtherUtils"; + /** + * 绘制文字到右下角 + */ + public static String drawTextToRightBottom(Context context, Bitmap bitmap, String name, String date, String time) { + //初始化画笔 + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.RED); + paint.setDither(true); // 获取跟清晰的图像采样 + paint.setFilterBitmap(true);// 过滤一些 + paint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + Rect nameBounds = new Rect(); + paint.getTextBounds(name, 0, name.length(), nameBounds); + Rect dateBounds = new Rect(); + paint.getTextBounds(date, 0, date.length(), dateBounds); + Rect timeBounds = new Rect(); + paint.getTextBounds(time, 0, time.length(), timeBounds); + + //添加水印 + android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); + if (bitmapConfig == null) { + bitmapConfig = Bitmap.Config.RGB_565; + } + bitmap = bitmap.copy(bitmapConfig, true); + + Canvas canvas = new Canvas(bitmap); + final int bitmapWidth = bitmap.getWidth(); + final int bitmapHeight = bitmap.getHeight(); + final int paddingRight = QMUIDisplayHelper.dp2px(context, 10); + //有几行就写几行 + canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 55), paint); + canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 30), paint); + canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 10), paint); + + //将带有水印的图片保存 + File file = FileUtils.getWaterImageFile(); + try { + FileOutputStream fos = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.flush(); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file.getAbsolutePath(); + } + //查看大图 - public static void showBigImage(Context context, int index, List imageList) { - new BigPictureDialog.Builder().setContext(context).setImageIndex(index).setImageList(imageList).build().show(); + public static void showBigImage(Context context, int index, ArrayList imageList) { + Intent intent = new Intent(context, BigImageActivity.class); + intent.putExtra("index", index); + intent.putStringArrayListExtra("images", imageList); + context.startActivity(intent); } //查看案卷处理记录 diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 170e274..c07978f 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -17,6 +17,7 @@ private static Context context; private static File audioDir; private static File imageDir; + private static File waterImageDir; private static File downloadDir; public static void initFileConfig(Context context) { @@ -42,6 +43,13 @@ Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹"); } } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); + } + } downloadDir = new File(parentDir, "DownloadFile"); if (!downloadDir.exists()) { boolean mkDownDir = downloadDir.mkdir(); @@ -101,6 +109,36 @@ return imageDir.toString(); } + static File getWaterImageFile() { + //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹 + if (waterImageDir == null) { + File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Demo"); + if (!parentDir.exists()) { + boolean mkdir = parentDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getWaterImageFile: 创建Demo文件夹"); + } + } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹"); + } + } + } + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()); + File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png"); + if (!imageFile.exists()) { + try { + imageFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return imageFile; + } + //储存下载文件的目录 static String getDownloadFilePath() { if (downloadDir == null) { diff --git a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java index 407d70e..55a56a3 100644 --- a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java @@ -5,6 +5,11 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; @@ -13,9 +18,10 @@ import androidx.core.app.ActivityCompat; +import com.casic.dcms.ui.BigImageActivity; import com.casic.dcms.ui.CaseProcessActivity; import com.casic.dcms.utils.callback.IDownloadListener; -import com.casic.dcms.widgets.BigPictureDialog; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; import org.jetbrains.annotations.NotNull; @@ -24,7 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.util.List; +import java.util.ArrayList; import okhttp3.Call; import okhttp3.Callback; @@ -36,9 +42,61 @@ public class OtherUtils { private static final String TAG = "OtherUtils"; + /** + * 绘制文字到右下角 + */ + public static String drawTextToRightBottom(Context context, Bitmap bitmap, String name, String date, String time) { + //初始化画笔 + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.RED); + paint.setDither(true); // 获取跟清晰的图像采样 + paint.setFilterBitmap(true);// 过滤一些 + paint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + Rect nameBounds = new Rect(); + paint.getTextBounds(name, 0, name.length(), nameBounds); + Rect dateBounds = new Rect(); + paint.getTextBounds(date, 0, date.length(), dateBounds); + Rect timeBounds = new Rect(); + paint.getTextBounds(time, 0, time.length(), timeBounds); + + //添加水印 + android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); + if (bitmapConfig == null) { + bitmapConfig = Bitmap.Config.RGB_565; + } + bitmap = bitmap.copy(bitmapConfig, true); + + Canvas canvas = new Canvas(bitmap); + final int bitmapWidth = bitmap.getWidth(); + final int bitmapHeight = bitmap.getHeight(); + final int paddingRight = QMUIDisplayHelper.dp2px(context, 10); + //有几行就写几行 + canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 55), paint); + canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 30), paint); + canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 10), paint); + + //将带有水印的图片保存 + File file = FileUtils.getWaterImageFile(); + try { + FileOutputStream fos = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.flush(); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file.getAbsolutePath(); + } + //查看大图 - public static void showBigImage(Context context, int index, List imageList) { - new BigPictureDialog.Builder().setContext(context).setImageIndex(index).setImageList(imageList).build().show(); + public static void showBigImage(Context context, int index, ArrayList imageList) { + Intent intent = new Intent(context, BigImageActivity.class); + intent.putExtra("index", index); + intent.putStringArrayListExtra("images", imageList); + context.startActivity(intent); } //查看案卷处理记录 diff --git a/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java new file mode 100644 index 0000000..4102901 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java @@ -0,0 +1,6 @@ +package com.casic.dcms.utils; + +import androidx.core.content.FileProvider; + +public class WaterImageFileProvider extends FileProvider { +} diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 170e274..c07978f 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -17,6 +17,7 @@ private static Context context; private static File audioDir; private static File imageDir; + private static File waterImageDir; private static File downloadDir; public static void initFileConfig(Context context) { @@ -42,6 +43,13 @@ Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹"); } } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); + } + } downloadDir = new File(parentDir, "DownloadFile"); if (!downloadDir.exists()) { boolean mkDownDir = downloadDir.mkdir(); @@ -101,6 +109,36 @@ return imageDir.toString(); } + static File getWaterImageFile() { + //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹 + if (waterImageDir == null) { + File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Demo"); + if (!parentDir.exists()) { + boolean mkdir = parentDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getWaterImageFile: 创建Demo文件夹"); + } + } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹"); + } + } + } + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()); + File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png"); + if (!imageFile.exists()) { + try { + imageFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return imageFile; + } + //储存下载文件的目录 static String getDownloadFilePath() { if (downloadDir == null) { diff --git a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java index 407d70e..55a56a3 100644 --- a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java @@ -5,6 +5,11 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; @@ -13,9 +18,10 @@ import androidx.core.app.ActivityCompat; +import com.casic.dcms.ui.BigImageActivity; import com.casic.dcms.ui.CaseProcessActivity; import com.casic.dcms.utils.callback.IDownloadListener; -import com.casic.dcms.widgets.BigPictureDialog; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; import org.jetbrains.annotations.NotNull; @@ -24,7 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.util.List; +import java.util.ArrayList; import okhttp3.Call; import okhttp3.Callback; @@ -36,9 +42,61 @@ public class OtherUtils { private static final String TAG = "OtherUtils"; + /** + * 绘制文字到右下角 + */ + public static String drawTextToRightBottom(Context context, Bitmap bitmap, String name, String date, String time) { + //初始化画笔 + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.RED); + paint.setDither(true); // 获取跟清晰的图像采样 + paint.setFilterBitmap(true);// 过滤一些 + paint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + Rect nameBounds = new Rect(); + paint.getTextBounds(name, 0, name.length(), nameBounds); + Rect dateBounds = new Rect(); + paint.getTextBounds(date, 0, date.length(), dateBounds); + Rect timeBounds = new Rect(); + paint.getTextBounds(time, 0, time.length(), timeBounds); + + //添加水印 + android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); + if (bitmapConfig == null) { + bitmapConfig = Bitmap.Config.RGB_565; + } + bitmap = bitmap.copy(bitmapConfig, true); + + Canvas canvas = new Canvas(bitmap); + final int bitmapWidth = bitmap.getWidth(); + final int bitmapHeight = bitmap.getHeight(); + final int paddingRight = QMUIDisplayHelper.dp2px(context, 10); + //有几行就写几行 + canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 55), paint); + canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 30), paint); + canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 10), paint); + + //将带有水印的图片保存 + File file = FileUtils.getWaterImageFile(); + try { + FileOutputStream fos = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.flush(); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file.getAbsolutePath(); + } + //查看大图 - public static void showBigImage(Context context, int index, List imageList) { - new BigPictureDialog.Builder().setContext(context).setImageIndex(index).setImageList(imageList).build().show(); + public static void showBigImage(Context context, int index, ArrayList imageList) { + Intent intent = new Intent(context, BigImageActivity.class); + intent.putExtra("index", index); + intent.putStringArrayListExtra("images", imageList); + context.startActivity(intent); } //查看案卷处理记录 diff --git a/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java new file mode 100644 index 0000000..4102901 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java @@ -0,0 +1,6 @@ +package com.casic.dcms.utils; + +import androidx.core.content.FileProvider; + +public class WaterImageFileProvider extends FileProvider { +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f5dc11e..fb128b7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -1,7 +1,10 @@ package com.casic.dcms.utils.retrofit; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.util.Log; +import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseCheckedBean; @@ -32,7 +35,10 @@ import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpConfig; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; import org.jetbrains.annotations.NotNull; @@ -289,9 +295,16 @@ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg */ public static Observable getImageUploadResult(File image) { + //改为上传带水印的图片 + Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath()); + String path = OtherUtils.drawTextToRightBottom(BaseApplication.getInstance(), bitmap, + StringHelper.getUserAccount(), + TimeOrDateUtil.rTimestampToDate(System.currentTimeMillis()), + TimeOrDateUtil.timestampToTime(System.currentTimeMillis())); + Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), image); + RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), new File(path)); MultipartBody.Part imagePart = MultipartBody.Part.createFormData("file", image.getName(), requestBody); return service.uploadImage(AuthenticationHelper.getToken(), imagePart); } diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 170e274..c07978f 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -17,6 +17,7 @@ private static Context context; private static File audioDir; private static File imageDir; + private static File waterImageDir; private static File downloadDir; public static void initFileConfig(Context context) { @@ -42,6 +43,13 @@ Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹"); } } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); + } + } downloadDir = new File(parentDir, "DownloadFile"); if (!downloadDir.exists()) { boolean mkDownDir = downloadDir.mkdir(); @@ -101,6 +109,36 @@ return imageDir.toString(); } + static File getWaterImageFile() { + //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹 + if (waterImageDir == null) { + File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Demo"); + if (!parentDir.exists()) { + boolean mkdir = parentDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getWaterImageFile: 创建Demo文件夹"); + } + } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹"); + } + } + } + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()); + File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png"); + if (!imageFile.exists()) { + try { + imageFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return imageFile; + } + //储存下载文件的目录 static String getDownloadFilePath() { if (downloadDir == null) { diff --git a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java index 407d70e..55a56a3 100644 --- a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java @@ -5,6 +5,11 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; @@ -13,9 +18,10 @@ import androidx.core.app.ActivityCompat; +import com.casic.dcms.ui.BigImageActivity; import com.casic.dcms.ui.CaseProcessActivity; import com.casic.dcms.utils.callback.IDownloadListener; -import com.casic.dcms.widgets.BigPictureDialog; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; import org.jetbrains.annotations.NotNull; @@ -24,7 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.util.List; +import java.util.ArrayList; import okhttp3.Call; import okhttp3.Callback; @@ -36,9 +42,61 @@ public class OtherUtils { private static final String TAG = "OtherUtils"; + /** + * 绘制文字到右下角 + */ + public static String drawTextToRightBottom(Context context, Bitmap bitmap, String name, String date, String time) { + //初始化画笔 + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.RED); + paint.setDither(true); // 获取跟清晰的图像采样 + paint.setFilterBitmap(true);// 过滤一些 + paint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + Rect nameBounds = new Rect(); + paint.getTextBounds(name, 0, name.length(), nameBounds); + Rect dateBounds = new Rect(); + paint.getTextBounds(date, 0, date.length(), dateBounds); + Rect timeBounds = new Rect(); + paint.getTextBounds(time, 0, time.length(), timeBounds); + + //添加水印 + android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); + if (bitmapConfig == null) { + bitmapConfig = Bitmap.Config.RGB_565; + } + bitmap = bitmap.copy(bitmapConfig, true); + + Canvas canvas = new Canvas(bitmap); + final int bitmapWidth = bitmap.getWidth(); + final int bitmapHeight = bitmap.getHeight(); + final int paddingRight = QMUIDisplayHelper.dp2px(context, 10); + //有几行就写几行 + canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 55), paint); + canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 30), paint); + canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 10), paint); + + //将带有水印的图片保存 + File file = FileUtils.getWaterImageFile(); + try { + FileOutputStream fos = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.flush(); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file.getAbsolutePath(); + } + //查看大图 - public static void showBigImage(Context context, int index, List imageList) { - new BigPictureDialog.Builder().setContext(context).setImageIndex(index).setImageList(imageList).build().show(); + public static void showBigImage(Context context, int index, ArrayList imageList) { + Intent intent = new Intent(context, BigImageActivity.class); + intent.putExtra("index", index); + intent.putStringArrayListExtra("images", imageList); + context.startActivity(intent); } //查看案卷处理记录 diff --git a/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java new file mode 100644 index 0000000..4102901 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java @@ -0,0 +1,6 @@ +package com.casic.dcms.utils; + +import androidx.core.content.FileProvider; + +public class WaterImageFileProvider extends FileProvider { +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f5dc11e..fb128b7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -1,7 +1,10 @@ package com.casic.dcms.utils.retrofit; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.util.Log; +import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseCheckedBean; @@ -32,7 +35,10 @@ import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpConfig; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; import org.jetbrains.annotations.NotNull; @@ -289,9 +295,16 @@ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg */ public static Observable getImageUploadResult(File image) { + //改为上传带水印的图片 + Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath()); + String path = OtherUtils.drawTextToRightBottom(BaseApplication.getInstance(), bitmap, + StringHelper.getUserAccount(), + TimeOrDateUtil.rTimestampToDate(System.currentTimeMillis()), + TimeOrDateUtil.timestampToTime(System.currentTimeMillis())); + Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), image); + RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), new File(path)); MultipartBody.Part imagePart = MultipartBody.Part.createFormData("file", image.getName(), requestBody); return service.uploadImage(AuthenticationHelper.getToken(), imagePart); } diff --git a/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java b/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java deleted file mode 100644 index f81e17e..0000000 --- a/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.widgets; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.appcompat.app.AlertDialog; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.luck.picture.lib.photoview.PhotoView; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -public class BigPictureDialog extends AlertDialog { - - private Context context; - private int index; - private List data; - private TextView pageNumberView; - private ViewPager imagePagerView; - private Window window; - private int maxWidth, maxHeight; - - private BigPictureDialog(Builder builder) { - super(builder.mContext, R.style.CustomDialogStyle); - this.context = builder.mContext; - this.index = builder.index; - this.data = builder.images; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_big_picture); - - pageNumberView = findViewById(R.id.pageNumberView); - imagePagerView = findViewById(R.id.imagePagerView); - initData(); - window = getWindow(); - - maxWidth = (int) (QMUIDisplayHelper.getScreenWidth(context) * 0.9); - maxHeight = (int) (QMUIDisplayHelper.getScreenHeight(context) * 0.8); - - setCancelable(true); - setCanceledOnTouchOutside(true); - } - - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); - WindowManager.LayoutParams layoutParams = window.getAttributes(); - layoutParams.width = maxWidth; - layoutParams.height = maxHeight; - window.setAttributes(layoutParams); - } - - private void initData() { - imagePagerView.setAdapter(new BigPictureAdapter()); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.setPageMargin(10);//控制两幅图之间的间距 - imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @SuppressLint("SetTextI18n") - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + data.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigPictureAdapter extends PagerAdapter { - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.FIT_XY); - LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(maxWidth, maxHeight); - photoView.setLayoutParams(layoutParams); - container.addView(view); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } - - public static class Builder { - private Context mContext; - private int index; - private List images; - - public Builder setContext(Context mContext) { - this.mContext = mContext; - return this; - } - - public Builder setImageIndex(int imageIndex) { - this.index = imageIndex; - return this; - } - - public Builder setImageList(List images) { - this.images = images; - return this; - } - - public BigPictureDialog build() { - return new BigPictureDialog(this); - } - } -} diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 170e274..c07978f 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -17,6 +17,7 @@ private static Context context; private static File audioDir; private static File imageDir; + private static File waterImageDir; private static File downloadDir; public static void initFileConfig(Context context) { @@ -42,6 +43,13 @@ Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹"); } } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); + } + } downloadDir = new File(parentDir, "DownloadFile"); if (!downloadDir.exists()) { boolean mkDownDir = downloadDir.mkdir(); @@ -101,6 +109,36 @@ return imageDir.toString(); } + static File getWaterImageFile() { + //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹 + if (waterImageDir == null) { + File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Demo"); + if (!parentDir.exists()) { + boolean mkdir = parentDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getWaterImageFile: 创建Demo文件夹"); + } + } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹"); + } + } + } + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()); + File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png"); + if (!imageFile.exists()) { + try { + imageFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return imageFile; + } + //储存下载文件的目录 static String getDownloadFilePath() { if (downloadDir == null) { diff --git a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java index 407d70e..55a56a3 100644 --- a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java @@ -5,6 +5,11 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; @@ -13,9 +18,10 @@ import androidx.core.app.ActivityCompat; +import com.casic.dcms.ui.BigImageActivity; import com.casic.dcms.ui.CaseProcessActivity; import com.casic.dcms.utils.callback.IDownloadListener; -import com.casic.dcms.widgets.BigPictureDialog; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; import org.jetbrains.annotations.NotNull; @@ -24,7 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.util.List; +import java.util.ArrayList; import okhttp3.Call; import okhttp3.Callback; @@ -36,9 +42,61 @@ public class OtherUtils { private static final String TAG = "OtherUtils"; + /** + * 绘制文字到右下角 + */ + public static String drawTextToRightBottom(Context context, Bitmap bitmap, String name, String date, String time) { + //初始化画笔 + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.RED); + paint.setDither(true); // 获取跟清晰的图像采样 + paint.setFilterBitmap(true);// 过滤一些 + paint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + Rect nameBounds = new Rect(); + paint.getTextBounds(name, 0, name.length(), nameBounds); + Rect dateBounds = new Rect(); + paint.getTextBounds(date, 0, date.length(), dateBounds); + Rect timeBounds = new Rect(); + paint.getTextBounds(time, 0, time.length(), timeBounds); + + //添加水印 + android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); + if (bitmapConfig == null) { + bitmapConfig = Bitmap.Config.RGB_565; + } + bitmap = bitmap.copy(bitmapConfig, true); + + Canvas canvas = new Canvas(bitmap); + final int bitmapWidth = bitmap.getWidth(); + final int bitmapHeight = bitmap.getHeight(); + final int paddingRight = QMUIDisplayHelper.dp2px(context, 10); + //有几行就写几行 + canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 55), paint); + canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 30), paint); + canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 10), paint); + + //将带有水印的图片保存 + File file = FileUtils.getWaterImageFile(); + try { + FileOutputStream fos = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.flush(); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file.getAbsolutePath(); + } + //查看大图 - public static void showBigImage(Context context, int index, List imageList) { - new BigPictureDialog.Builder().setContext(context).setImageIndex(index).setImageList(imageList).build().show(); + public static void showBigImage(Context context, int index, ArrayList imageList) { + Intent intent = new Intent(context, BigImageActivity.class); + intent.putExtra("index", index); + intent.putStringArrayListExtra("images", imageList); + context.startActivity(intent); } //查看案卷处理记录 diff --git a/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java new file mode 100644 index 0000000..4102901 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java @@ -0,0 +1,6 @@ +package com.casic.dcms.utils; + +import androidx.core.content.FileProvider; + +public class WaterImageFileProvider extends FileProvider { +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f5dc11e..fb128b7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -1,7 +1,10 @@ package com.casic.dcms.utils.retrofit; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.util.Log; +import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseCheckedBean; @@ -32,7 +35,10 @@ import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpConfig; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; import org.jetbrains.annotations.NotNull; @@ -289,9 +295,16 @@ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg */ public static Observable getImageUploadResult(File image) { + //改为上传带水印的图片 + Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath()); + String path = OtherUtils.drawTextToRightBottom(BaseApplication.getInstance(), bitmap, + StringHelper.getUserAccount(), + TimeOrDateUtil.rTimestampToDate(System.currentTimeMillis()), + TimeOrDateUtil.timestampToTime(System.currentTimeMillis())); + Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), image); + RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), new File(path)); MultipartBody.Part imagePart = MultipartBody.Part.createFormData("file", image.getName(), requestBody); return service.uploadImage(AuthenticationHelper.getToken(), imagePart); } diff --git a/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java b/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java deleted file mode 100644 index f81e17e..0000000 --- a/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.widgets; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.appcompat.app.AlertDialog; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.luck.picture.lib.photoview.PhotoView; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -public class BigPictureDialog extends AlertDialog { - - private Context context; - private int index; - private List data; - private TextView pageNumberView; - private ViewPager imagePagerView; - private Window window; - private int maxWidth, maxHeight; - - private BigPictureDialog(Builder builder) { - super(builder.mContext, R.style.CustomDialogStyle); - this.context = builder.mContext; - this.index = builder.index; - this.data = builder.images; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_big_picture); - - pageNumberView = findViewById(R.id.pageNumberView); - imagePagerView = findViewById(R.id.imagePagerView); - initData(); - window = getWindow(); - - maxWidth = (int) (QMUIDisplayHelper.getScreenWidth(context) * 0.9); - maxHeight = (int) (QMUIDisplayHelper.getScreenHeight(context) * 0.8); - - setCancelable(true); - setCanceledOnTouchOutside(true); - } - - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); - WindowManager.LayoutParams layoutParams = window.getAttributes(); - layoutParams.width = maxWidth; - layoutParams.height = maxHeight; - window.setAttributes(layoutParams); - } - - private void initData() { - imagePagerView.setAdapter(new BigPictureAdapter()); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.setPageMargin(10);//控制两幅图之间的间距 - imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @SuppressLint("SetTextI18n") - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + data.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigPictureAdapter extends PagerAdapter { - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.FIT_XY); - LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(maxWidth, maxHeight); - photoView.setLayoutParams(layoutParams); - container.addView(view); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } - - public static class Builder { - private Context mContext; - private int index; - private List images; - - public Builder setContext(Context mContext) { - this.mContext = mContext; - return this; - } - - public Builder setImageIndex(int imageIndex) { - this.index = imageIndex; - return this; - } - - public Builder setImageList(List images) { - this.images = images; - return this; - } - - public BigPictureDialog build() { - return new BigPictureDialog(this); - } - } -} diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..54d8cb4 --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 170e274..c07978f 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -17,6 +17,7 @@ private static Context context; private static File audioDir; private static File imageDir; + private static File waterImageDir; private static File downloadDir; public static void initFileConfig(Context context) { @@ -42,6 +43,13 @@ Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹"); } } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); + } + } downloadDir = new File(parentDir, "DownloadFile"); if (!downloadDir.exists()) { boolean mkDownDir = downloadDir.mkdir(); @@ -101,6 +109,36 @@ return imageDir.toString(); } + static File getWaterImageFile() { + //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹 + if (waterImageDir == null) { + File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Demo"); + if (!parentDir.exists()) { + boolean mkdir = parentDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getWaterImageFile: 创建Demo文件夹"); + } + } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹"); + } + } + } + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()); + File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png"); + if (!imageFile.exists()) { + try { + imageFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return imageFile; + } + //储存下载文件的目录 static String getDownloadFilePath() { if (downloadDir == null) { diff --git a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java index 407d70e..55a56a3 100644 --- a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java @@ -5,6 +5,11 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; @@ -13,9 +18,10 @@ import androidx.core.app.ActivityCompat; +import com.casic.dcms.ui.BigImageActivity; import com.casic.dcms.ui.CaseProcessActivity; import com.casic.dcms.utils.callback.IDownloadListener; -import com.casic.dcms.widgets.BigPictureDialog; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; import org.jetbrains.annotations.NotNull; @@ -24,7 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.util.List; +import java.util.ArrayList; import okhttp3.Call; import okhttp3.Callback; @@ -36,9 +42,61 @@ public class OtherUtils { private static final String TAG = "OtherUtils"; + /** + * 绘制文字到右下角 + */ + public static String drawTextToRightBottom(Context context, Bitmap bitmap, String name, String date, String time) { + //初始化画笔 + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.RED); + paint.setDither(true); // 获取跟清晰的图像采样 + paint.setFilterBitmap(true);// 过滤一些 + paint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + Rect nameBounds = new Rect(); + paint.getTextBounds(name, 0, name.length(), nameBounds); + Rect dateBounds = new Rect(); + paint.getTextBounds(date, 0, date.length(), dateBounds); + Rect timeBounds = new Rect(); + paint.getTextBounds(time, 0, time.length(), timeBounds); + + //添加水印 + android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); + if (bitmapConfig == null) { + bitmapConfig = Bitmap.Config.RGB_565; + } + bitmap = bitmap.copy(bitmapConfig, true); + + Canvas canvas = new Canvas(bitmap); + final int bitmapWidth = bitmap.getWidth(); + final int bitmapHeight = bitmap.getHeight(); + final int paddingRight = QMUIDisplayHelper.dp2px(context, 10); + //有几行就写几行 + canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 55), paint); + canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 30), paint); + canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 10), paint); + + //将带有水印的图片保存 + File file = FileUtils.getWaterImageFile(); + try { + FileOutputStream fos = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.flush(); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file.getAbsolutePath(); + } + //查看大图 - public static void showBigImage(Context context, int index, List imageList) { - new BigPictureDialog.Builder().setContext(context).setImageIndex(index).setImageList(imageList).build().show(); + public static void showBigImage(Context context, int index, ArrayList imageList) { + Intent intent = new Intent(context, BigImageActivity.class); + intent.putExtra("index", index); + intent.putStringArrayListExtra("images", imageList); + context.startActivity(intent); } //查看案卷处理记录 diff --git a/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java new file mode 100644 index 0000000..4102901 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java @@ -0,0 +1,6 @@ +package com.casic.dcms.utils; + +import androidx.core.content.FileProvider; + +public class WaterImageFileProvider extends FileProvider { +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f5dc11e..fb128b7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -1,7 +1,10 @@ package com.casic.dcms.utils.retrofit; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.util.Log; +import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseCheckedBean; @@ -32,7 +35,10 @@ import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpConfig; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; import org.jetbrains.annotations.NotNull; @@ -289,9 +295,16 @@ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg */ public static Observable getImageUploadResult(File image) { + //改为上传带水印的图片 + Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath()); + String path = OtherUtils.drawTextToRightBottom(BaseApplication.getInstance(), bitmap, + StringHelper.getUserAccount(), + TimeOrDateUtil.rTimestampToDate(System.currentTimeMillis()), + TimeOrDateUtil.timestampToTime(System.currentTimeMillis())); + Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), image); + RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), new File(path)); MultipartBody.Part imagePart = MultipartBody.Part.createFormData("file", image.getName(), requestBody); return service.uploadImage(AuthenticationHelper.getToken(), imagePart); } diff --git a/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java b/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java deleted file mode 100644 index f81e17e..0000000 --- a/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.widgets; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.appcompat.app.AlertDialog; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.luck.picture.lib.photoview.PhotoView; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -public class BigPictureDialog extends AlertDialog { - - private Context context; - private int index; - private List data; - private TextView pageNumberView; - private ViewPager imagePagerView; - private Window window; - private int maxWidth, maxHeight; - - private BigPictureDialog(Builder builder) { - super(builder.mContext, R.style.CustomDialogStyle); - this.context = builder.mContext; - this.index = builder.index; - this.data = builder.images; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_big_picture); - - pageNumberView = findViewById(R.id.pageNumberView); - imagePagerView = findViewById(R.id.imagePagerView); - initData(); - window = getWindow(); - - maxWidth = (int) (QMUIDisplayHelper.getScreenWidth(context) * 0.9); - maxHeight = (int) (QMUIDisplayHelper.getScreenHeight(context) * 0.8); - - setCancelable(true); - setCanceledOnTouchOutside(true); - } - - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); - WindowManager.LayoutParams layoutParams = window.getAttributes(); - layoutParams.width = maxWidth; - layoutParams.height = maxHeight; - window.setAttributes(layoutParams); - } - - private void initData() { - imagePagerView.setAdapter(new BigPictureAdapter()); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.setPageMargin(10);//控制两幅图之间的间距 - imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @SuppressLint("SetTextI18n") - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + data.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigPictureAdapter extends PagerAdapter { - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.FIT_XY); - LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(maxWidth, maxHeight); - photoView.setLayoutParams(layoutParams); - container.addView(view); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } - - public static class Builder { - private Context mContext; - private int index; - private List images; - - public Builder setContext(Context mContext) { - this.mContext = mContext; - return this; - } - - public Builder setImageIndex(int imageIndex) { - this.index = imageIndex; - return this; - } - - public Builder setImageList(List images) { - this.images = images; - return this; - } - - public BigPictureDialog build() { - return new BigPictureDialog(this); - } - } -} diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..54d8cb4 --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_big_picture.xml b/app/src/main/res/layout/dialog_big_picture.xml deleted file mode 100644 index bffbb84..0000000 --- a/app/src/main/res/layout/dialog_big_picture.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.gitignore b/.gitignore index 603b140..f0f71e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /captures .externalNativeBuild .cxx +.idea diff --git a/app/build.gradle b/app/build.gradle index 045dd9e..1cc4d59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,7 +52,7 @@ implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //图片加载框架 - implementation 'com.github.bumptech.glide:glide:4.5.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' //MVP网络请求框架retrofit2+rxjava implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' @@ -71,10 +71,10 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //Excel表格 implementation 'com.github.huangyanbin:SmartTable:1.7.1' - implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK - implementation 'com.getui:gtc:3.1.0.0' + implementation 'com.getui:gtsdk:3.1.4.0' //个推核心组件 + implementation 'com.getui:gtc:3.1.0.0' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //沉浸式状态栏。基础依赖包,必须要依赖 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25931cd..92c60e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -76,6 +76,7 @@ + + + + + + urls = getIntent().getStringArrayListExtra("images"); + if (urls == null || urls.size() == 0) { + return; + } + pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + imagePagerView.setAdapter(new BigImageAdapter(this, urls)); + imagePagerView.setCurrentItem(index); + imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 + imagePagerView.setPageMargin(10);//控制两幅图之间的间距 + imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); + imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); + pageNumberView.setTextColor(Color.RED); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + @Override + public void initEvent() { + + } + + static class BigImageAdapter extends PagerAdapter { + + private Context context; + private List data; + + BigImageAdapter(@NotNull Context context, @NotNull List imageList) { + this.context = context; + this.data = imageList; + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { + return view == object; + } + + @NotNull + @Override + public Object instantiateItem(@NotNull ViewGroup container, int position) { + View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); + PhotoView photoView = view.findViewById(R.id.photoView); + Glide.with(context).load(data.get(position)).into(photoView); + photoView.setScaleType(ImageView.ScaleType.FIT_XY); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, @NotNull Object object) { + container.removeView((View) object); + } + } + + //设置切换动画 + public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { + //自由控制缩放比例 + private static final float MAX_SCALE = 1f; + private static final float MIN_SCALE = 0.85f;//0.85f + + @Override + public void transformPage(@NotNull View page, float position) { + + if (position <= 1) { + float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); + page.setScaleX(scaleFactor); + if (position > 0) { + page.setTranslationX(-scaleFactor * 2); + } else if (position < 0) { + page.setTranslationX(scaleFactor * 2); + } + page.setScaleY(scaleFactor); + } else { + page.setScaleX(MIN_SCALE); + page.setScaleY(MIN_SCALE); + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc6bbca..6a93d0f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -114,7 +114,7 @@ private String id; private String changeState; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private MediaPlayer mediaPlayer; private QMUITipDialog submitDialog; @@ -293,7 +293,7 @@ //核实照片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -353,7 +353,7 @@ //处理照片 String processImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(processImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = processImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java index 23f3260..d4f61b1 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -148,7 +147,7 @@ //核实图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -173,7 +172,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -198,7 +197,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index e25aefd..2b65bb8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -122,7 +121,7 @@ //核实图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -147,7 +146,7 @@ //处理图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { @@ -172,7 +171,7 @@ //核查图片 String checkImages = data.getFileIdCheck(); if (!TextUtils.isEmpty(checkImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = checkImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 7455b6e..da63f04 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -114,7 +114,7 @@ private String caseReason; private String approvalResult; private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseDetailPresenterImpl caseDetailPresenter; @@ -179,7 +179,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java index 3079857..443bcc5 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -117,7 +116,7 @@ //最初始的案卷图片 String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { @@ -142,7 +141,7 @@ //案卷处理时候上传的图片 String handleImages = data.getFileIdProcess(); if (!TextUtils.isEmpty(handleImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = handleImages.split(","); for (String s : split) { if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java index 67621a8..2bf82a6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoDetailActivity.java @@ -171,7 +171,7 @@ String verifyImages = data.getFileIdVerify(); if (!TextUtils.isEmpty(verifyImages)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = verifyImages.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java index 7e88437..5e8eee6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseTodoHandledDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -118,7 +117,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index e65fa0a..cf3e900 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -121,7 +121,7 @@ private QMUITipDialog submitDialog, qmuiTipDialog; private UploadImagePresenterImpl uploadImagePresenter; private List imageList = new ArrayList<>();//服务器返回的拍照数据集 - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private String eorc = "请选择"; private String typeCode = "请选择"; private String typeDetailCode = "请选择";//默认值,防止用户不选择直接跳过 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 253c2ab..b4d3bac 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -89,7 +89,7 @@ private List smallClassBeans; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List imageList = new ArrayList<>();//上传到服务器的数据集 private String eorc = "请选择"; private String typeCode = "请选择"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 8a155f6..926aecb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -121,7 +120,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index c30bd0f..509d0be 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -139,7 +139,7 @@ private MediaPlayer mediaPlayer; private UploadImagePresenterImpl uploadImagePresenter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真实图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private CaseNextNodePresenterImpl caseNextNodePresenter; private CaseHandlePresenterImpl caseHandlePresenter; @@ -226,7 +226,7 @@ //图片 String images = data.getFileIdVerify(); if (!TextUtils.isEmpty(images)) { - List urls = new ArrayList<>(); + ArrayList urls = new ArrayList<>(); String[] split = images.split(","); for (String s : split) { if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index bfd99ef..1064b85 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -30,7 +30,6 @@ import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.BigPictureDialog; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -50,7 +49,6 @@ import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; import java.io.File; -import java.util.Collections; import butterknife.BindView; import butterknife.OnClick; @@ -254,11 +252,7 @@ pictureView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new BigPictureDialog.Builder() - .setContext(context) - .setImageIndex(0) - .setImageList(Collections.singletonList(realPath)) - .build().show(); + } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java index d78f2f5..7faa01b 100644 --- a/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ThreePackageUploadActivity.java @@ -75,7 +75,7 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private List realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真是图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 170e274..c07978f 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -17,6 +17,7 @@ private static Context context; private static File audioDir; private static File imageDir; + private static File waterImageDir; private static File downloadDir; public static void initFileConfig(Context context) { @@ -42,6 +43,13 @@ Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹"); } } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); + } + } downloadDir = new File(parentDir, "DownloadFile"); if (!downloadDir.exists()) { boolean mkDownDir = downloadDir.mkdir(); @@ -101,6 +109,36 @@ return imageDir.toString(); } + static File getWaterImageFile() { + //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹 + if (waterImageDir == null) { + File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Demo"); + if (!parentDir.exists()) { + boolean mkdir = parentDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getWaterImageFile: 创建Demo文件夹"); + } + } + waterImageDir = new File(parentDir, "WaterImageFile"); + if (!waterImageDir.exists()) { + boolean mkAudioDir = waterImageDir.mkdir(); + if (mkAudioDir) { + Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹"); + } + } + } + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()); + File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png"); + if (!imageFile.exists()) { + try { + imageFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return imageFile; + } + //储存下载文件的目录 static String getDownloadFilePath() { if (downloadDir == null) { diff --git a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java index 407d70e..55a56a3 100644 --- a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java @@ -5,6 +5,11 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; @@ -13,9 +18,10 @@ import androidx.core.app.ActivityCompat; +import com.casic.dcms.ui.BigImageActivity; import com.casic.dcms.ui.CaseProcessActivity; import com.casic.dcms.utils.callback.IDownloadListener; -import com.casic.dcms.widgets.BigPictureDialog; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; import org.jetbrains.annotations.NotNull; @@ -24,7 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.util.List; +import java.util.ArrayList; import okhttp3.Call; import okhttp3.Callback; @@ -36,9 +42,61 @@ public class OtherUtils { private static final String TAG = "OtherUtils"; + /** + * 绘制文字到右下角 + */ + public static String drawTextToRightBottom(Context context, Bitmap bitmap, String name, String date, String time) { + //初始化画笔 + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.RED); + paint.setDither(true); // 获取跟清晰的图像采样 + paint.setFilterBitmap(true);// 过滤一些 + paint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + Rect nameBounds = new Rect(); + paint.getTextBounds(name, 0, name.length(), nameBounds); + Rect dateBounds = new Rect(); + paint.getTextBounds(date, 0, date.length(), dateBounds); + Rect timeBounds = new Rect(); + paint.getTextBounds(time, 0, time.length(), timeBounds); + + //添加水印 + android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); + if (bitmapConfig == null) { + bitmapConfig = Bitmap.Config.RGB_565; + } + bitmap = bitmap.copy(bitmapConfig, true); + + Canvas canvas = new Canvas(bitmap); + final int bitmapWidth = bitmap.getWidth(); + final int bitmapHeight = bitmap.getHeight(); + final int paddingRight = QMUIDisplayHelper.dp2px(context, 10); + //有几行就写几行 + canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 55), paint); + canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 30), paint); + canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, + bitmapHeight - QMUIDisplayHelper.dp2px(context, 10), paint); + + //将带有水印的图片保存 + File file = FileUtils.getWaterImageFile(); + try { + FileOutputStream fos = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.flush(); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file.getAbsolutePath(); + } + //查看大图 - public static void showBigImage(Context context, int index, List imageList) { - new BigPictureDialog.Builder().setContext(context).setImageIndex(index).setImageList(imageList).build().show(); + public static void showBigImage(Context context, int index, ArrayList imageList) { + Intent intent = new Intent(context, BigImageActivity.class); + intent.putExtra("index", index); + intent.putStringArrayListExtra("images", imageList); + context.startActivity(intent); } //查看案卷处理记录 diff --git a/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java new file mode 100644 index 0000000..4102901 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/WaterImageFileProvider.java @@ -0,0 +1,6 @@ +package com.casic.dcms.utils; + +import androidx.core.content.FileProvider; + +public class WaterImageFileProvider extends FileProvider { +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f5dc11e..fb128b7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -1,7 +1,10 @@ package com.casic.dcms.utils.retrofit; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.util.Log; +import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseCheckedBean; @@ -32,7 +35,10 @@ import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpConfig; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; import org.jetbrains.annotations.NotNull; @@ -289,9 +295,16 @@ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg */ public static Observable getImageUploadResult(File image) { + //改为上传带水印的图片 + Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath()); + String path = OtherUtils.drawTextToRightBottom(BaseApplication.getInstance(), bitmap, + StringHelper.getUserAccount(), + TimeOrDateUtil.rTimestampToDate(System.currentTimeMillis()), + TimeOrDateUtil.timestampToTime(System.currentTimeMillis())); + Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), image); + RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), new File(path)); MultipartBody.Part imagePart = MultipartBody.Part.createFormData("file", image.getName(), requestBody); return service.uploadImage(AuthenticationHelper.getToken(), imagePart); } diff --git a/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java b/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java deleted file mode 100644 index f81e17e..0000000 --- a/app/src/main/java/com/casic/dcms/widgets/BigPictureDialog.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.widgets; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.appcompat.app.AlertDialog; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.luck.picture.lib.photoview.PhotoView; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -public class BigPictureDialog extends AlertDialog { - - private Context context; - private int index; - private List data; - private TextView pageNumberView; - private ViewPager imagePagerView; - private Window window; - private int maxWidth, maxHeight; - - private BigPictureDialog(Builder builder) { - super(builder.mContext, R.style.CustomDialogStyle); - this.context = builder.mContext; - this.index = builder.index; - this.data = builder.images; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_big_picture); - - pageNumberView = findViewById(R.id.pageNumberView); - imagePagerView = findViewById(R.id.imagePagerView); - initData(); - window = getWindow(); - - maxWidth = (int) (QMUIDisplayHelper.getScreenWidth(context) * 0.9); - maxHeight = (int) (QMUIDisplayHelper.getScreenHeight(context) * 0.8); - - setCancelable(true); - setCanceledOnTouchOutside(true); - } - - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); - WindowManager.LayoutParams layoutParams = window.getAttributes(); - layoutParams.width = maxWidth; - layoutParams.height = maxHeight; - window.setAttributes(layoutParams); - } - - private void initData() { - imagePagerView.setAdapter(new BigPictureAdapter()); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.setPageMargin(10);//控制两幅图之间的间距 - imagePagerView.setPageTransformer(true, new ZoomOutPageTransformer()); - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @SuppressLint("SetTextI18n") - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + data.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigPictureAdapter extends PagerAdapter { - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.FIT_XY); - LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(maxWidth, maxHeight); - photoView.setLayoutParams(layoutParams); - container.addView(view); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } - - public static class Builder { - private Context mContext; - private int index; - private List images; - - public Builder setContext(Context mContext) { - this.mContext = mContext; - return this; - } - - public Builder setImageIndex(int imageIndex) { - this.index = imageIndex; - return this; - } - - public Builder setImageList(List images) { - this.images = images; - return this; - } - - public BigPictureDialog build() { - return new BigPictureDialog(this); - } - } -} diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..54d8cb4 --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_big_picture.xml b/app/src/main/res/layout/dialog_big_picture.xml deleted file mode 100644 index bffbb84..0000000 --- a/app/src/main/res/layout/dialog_big_picture.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_big_picture.xml b/app/src/main/res/layout/item_big_picture.xml index 489867f..28b4b7c 100644 --- a/app/src/main/res/layout/item_big_picture.xml +++ b/app/src/main/res/layout/item_big_picture.xml @@ -2,10 +2,11 @@ + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> \ No newline at end of file