diff --git a/.gradle/7.3.3/checksums/checksums.lock b/.gradle/7.3.3/checksums/checksums.lock index 79228c2..8b05469 100644 Binary files a/.gradle/7.3.3/checksums/checksums.lock and b/.gradle/7.3.3/checksums/checksums.lock differ diff --git a/.gradle/7.3.3/checksums/md5-checksums.bin b/.gradle/7.3.3/checksums/md5-checksums.bin index 74d1082..3890deb 100644 Binary files a/.gradle/7.3.3/checksums/md5-checksums.bin and b/.gradle/7.3.3/checksums/md5-checksums.bin differ diff --git a/.gradle/7.3.3/checksums/sha1-checksums.bin b/.gradle/7.3.3/checksums/sha1-checksums.bin index 047c617..d3aecac 100644 Binary files a/.gradle/7.3.3/checksums/sha1-checksums.bin and b/.gradle/7.3.3/checksums/sha1-checksums.bin differ diff --git a/.gradle/7.3.3/executionHistory/executionHistory.bin b/.gradle/7.3.3/executionHistory/executionHistory.bin index f038e65..139357d 100644 Binary files a/.gradle/7.3.3/executionHistory/executionHistory.bin and b/.gradle/7.3.3/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.3.3/executionHistory/executionHistory.lock b/.gradle/7.3.3/executionHistory/executionHistory.lock index f303cdf..4e8af92 100644 Binary files a/.gradle/7.3.3/executionHistory/executionHistory.lock and b/.gradle/7.3.3/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.3.3/fileHashes/fileHashes.bin b/.gradle/7.3.3/fileHashes/fileHashes.bin index c37a49f..d2327c3 100644 Binary files a/.gradle/7.3.3/fileHashes/fileHashes.bin and b/.gradle/7.3.3/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.3.3/fileHashes/fileHashes.lock b/.gradle/7.3.3/fileHashes/fileHashes.lock index 78061e5..55d799b 100644 Binary files a/.gradle/7.3.3/fileHashes/fileHashes.lock and b/.gradle/7.3.3/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin index 644c90c..a63618c 100644 Binary files a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin and b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index da5a3c1..f81e4b0 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 40aae3d..8f0026a 100644 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index a8f594d..7fbcbb3 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/app/build.gradle b/app/build.gradle index cfa42e5..8b4b15c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -124,4 +124,9 @@ dependencies { implementation project(path: ':DialogXMaterialYou') implementation 'com.github.zhpanvip:bannerviewpager:3.5.12' + + implementation 'com.github.AAChartModel:AAChartCore:-SNAPSHOT' + + implementation 'com.github.li-xiaojun:XPopup:v2.2.23' + } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fe1c279..7402031 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -78,6 +78,23 @@ android:exported="false" android:screenOrientation="portrait" /> + + + + + \ No newline at end of file diff --git a/app/src/main/assets/file_monitoring.json b/app/src/main/assets/file_monitoring.json index 8924381..d88c7e2 100644 --- a/app/src/main/assets/file_monitoring.json +++ b/app/src/main/assets/file_monitoring.json @@ -1,7 +1,7 @@ [ { "name": "A区田间监测设备组", - "stations": [ + "groups": [ { "name": "生长监控", "type": "monitor", @@ -28,40 +28,40 @@ "status": 0 }, { - "name": "监控0012", + "name": "监控012", "status": 0 }, { - "name": "监控0013", + "name": "监控013", "status": 0 } ], "exceptions": [ { "name": "监控006", - "status": 0 + "status": 1 }, { "name": "监控007", - "status": 0 + "status": 1 }, { "name": "监控008", - "status": 0 + "status": 1 }, { "name": "监控0011", - "status": 0 + "status": 1 } ], "offline": [ { "name": "监控009", - "status": 0 + "status": 2 }, { "name": "监控010", - "status": 0 + "status": 2 } ] } @@ -69,21 +69,40 @@ { "name": "生长监测站", "type": "station", - "sensors": [ + "stations": [ { - "type": "temperature", - "value": "15", - "status": 0 - }, - { - "type": "humidity", - "value": "83", - "status": 1 - }, - { - "type": "stalk_height", - "value": "3.5", - "status": 0 + "name": "监测站-001", + "status": 0, + "crops_name": "甘蔗", + "grow_step": "成熟期", + "plant_type": "果木型", + "petiole_type": "阔叶型", + "growth_pattern": "良好", + "growth_pattern_status": 0, + "organic_matter": "10", + "organic_matter_type": 0, + "sensors": [ + { + "type": "temperature", + "value": "15", + "status": 0 + }, + { + "type": "humidity", + "value": "83", + "status": 1 + }, + { + "type": "stalk_height", + "value": "3.5", + "status": 0 + }, + { + "type": "sugar", + "value": "15", + "status": 0 + } + ] } ] } @@ -91,9 +110,10 @@ }, { "name": "B区田间监测设备组", - "stations": [ + "groups": [ { - "name": "生长监测站1", + "name": "生长监控", + "type": "monitor", "monitors": { "normal": [ { @@ -120,25 +140,25 @@ "exceptions": [ { "name": "监控006", - "status": 0 + "status": 1 }, { "name": "监控007", - "status": 0 + "status": 1 }, { "name": "监控008", - "status": 0 + "status": 1 } ], "offline": [ { "name": "监控009", - "status": 0 + "status": 2 }, { "name": "监控010", - "status": 0 + "status": 2 } ] } diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/photoview/PhotoViewActivty.java b/app/src/main/java/com/tairui/industrial_operation/ui/photoview/PhotoViewActivty.java new file mode 100644 index 0000000..8155525 --- /dev/null +++ b/app/src/main/java/com/tairui/industrial_operation/ui/photoview/PhotoViewActivty.java @@ -0,0 +1,106 @@ +package com.tairui.industrial_operation.ui.photoview; + +import java.util.List; + +import com.bumptech.glide.Glide; +import com.gyf.immersionbar.ImmersionBar; +import com.lxj.xpopup.photoview.PhotoView; +import com.tairui.industrial_operation.base.BaseActivity; +import com.tairui.industrial_operation.databinding.ActivityPhotoViewBinding; +import com.tairui.industrial_operation.util.SingleClickListener; + +import android.os.Bundle; +import android.view.View; +import android.view.ViewGroup; +import androidx.viewpager.widget.PagerAdapter; +import androidx.viewpager.widget.ViewPager; + +public class PhotoViewActivty extends BaseActivity { + + private List imgs; + private int index = -1; + + @Override + protected Class getBindingClass() { + return ActivityPhotoViewBinding.class; + } + + + @Override + protected void initStatusBar() { + ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar() + .statusBarDarkFont(false).init(); + } + + @Override + protected void onQueryArguments() { + index = getIntent().getIntExtra("index", -1); + imgs = getIntent().getStringArrayListExtra("imgs"); + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + binding.viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + binding.page.setText((position + 1) + "/" + imgs.size()); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + binding.viewPager.setIsCanScroll(true); + binding.viewPager.setAdapter(new SamplePagerAdapter()); + if (index != -1) { + binding.viewPager.setCurrentItem(index); + binding.page.setText((index + 1) + "/" + imgs.size()); + } + } + + @Override + protected void onBindListener() { + binding.back.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + onBackPressed(); + } + }); + } + + private class SamplePagerAdapter extends PagerAdapter { + + @Override + public int getCount() { + return imgs.size(); + } + + @Override + public View instantiateItem(ViewGroup container, int position) { + PhotoView photoView = new PhotoView(container.getContext()); + String url = imgs.get(position); + Glide.with(PhotoViewActivty.this).load(url).into(photoView); + photoView.setOnClickListener(view -> finish()); + // Now just add PhotoView to ViewPager and return it + container.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + return photoView; + } + + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + container.removeView((View) object); + } + + @Override + public boolean isViewFromObject(View view, Object object) { + return view == object; + } + + } +} diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/FieldMonitoringActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/FieldMonitoringActivity.java index df28543..922dfd6 100644 --- a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/FieldMonitoringActivity.java +++ b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/FieldMonitoringActivity.java @@ -16,6 +16,7 @@ import com.tairui.industrial_operation.base.BaseActivity; import com.tairui.industrial_operation.databinding.ActivityFieldMonitoringBinding; import com.tairui.industrial_operation.ui.smart_farm.entity.FileMonitoringEntity; import com.tairui.industrial_operation.util.ArrayUtil; +import com.tairui.industrial_operation.util.DensityUtils; import com.tairui.industrial_operation.util.IntentUtil; import com.tairui.industrial_operation.util.JsonUtils; import com.tairui.industrial_operation.util.SingleClickListener; @@ -29,11 +30,12 @@ import androidx.recyclerview.widget.RecyclerView; public class FieldMonitoringActivity extends BaseActivity { private List mData; - private FileMonitoringEntity selectGroup; - private FileMonitoringEntity.StationsEntity selectStation; - private FileMonitoringEntity.StationsEntity.MonitorsEntity.MonitorItemEntity selectMonitor; + private FileMonitoringEntity selectTeam; + private FileMonitoringEntity.GroupsEntity selectGroup; + private FileMonitoringEntity.GroupsEntity.MonitorsEntity.MonitorItemEntity selectMonitor; + private FileMonitoringEntity.GroupsEntity.StationsEntity selectStation; - private StationAdapter stationAdapter; + private GroupAdapter groupAdapter; @Override protected Class getBindingClass() { @@ -50,21 +52,27 @@ public class FieldMonitoringActivity extends BaseActivity menus = new ArrayList<>(); for (FileMonitoringEntity item : mData) { menus.add(item.getName()); } - PopMenu.show(binding.layoutGroup, menus) + PopMenu.show(binding.layoutTeam, menus) .setBackgroundColorRes(R.color.white) .setOnMenuItemClickListener((dialog, text, index) -> { - selectGroup = mData.get(index); - selectStation = selectGroup.getStations().get(0); - selectMonitor = selectStation.getMonitors().getNormal().get(0); + selectTeam = mData.get(index); + selectGroup = selectTeam.getGroups().get(0); + if (selectGroup.getType().equals("monitor")) { + selectMonitor = selectGroup.getMonitors().getNormal().get(0); + selectStation = null; + } else { + selectStation = selectGroup.getStations().get(0); + selectMonitor = null; + } initView(); return false; }).setItemDivider(new ItemDivider(15, 15, 1)); @@ -72,15 +80,30 @@ public class FieldMonitoringActivity extends BaseActivity menus = new ArrayList<>(); - for (FileMonitoringEntity.StationsEntity.MonitorsEntity.MonitorItemEntity item : selectStation.getMonitors() + for (FileMonitoringEntity.GroupsEntity.MonitorsEntity.MonitorItemEntity item : selectGroup.getMonitors() .getNormal()) { menus.add(item.getName()); } - PopMenu.show(binding.layoutGroup, menus) + PopMenu.show(binding.layoutMonitor, menus) + .setBackgroundColorRes(R.color.white) + .setWidth(DensityUtils.dp2px(mContext,100)) + .setOnMenuItemClickListener((dialog, text, index) -> { + selectMonitor = selectGroup.getMonitors().getNormal().get(index); + setText(binding.tvMonitorName, selectMonitor.getName()); + return false; + }).setItemDivider(new ItemDivider(15, 15, 1)); + } + + private void shoStationMenu() { + List menus = new ArrayList<>(); + for (FileMonitoringEntity.GroupsEntity.StationsEntity item : selectGroup.getStations()) { + menus.add(item.getName()); + } + PopMenu.show(binding.layoutMonitor, menus) .setBackgroundColorRes(R.color.white) .setOnMenuItemClickListener((dialog, text, index) -> { - selectMonitor = selectStation.getMonitors().getNormal().get(index); - setText(binding.tvMonitorName, selectMonitor.getName()); + selectStation = selectGroup.getStations().get(index); + setText(binding.tvMonitorName, selectStation.getName()); return false; }).setItemDivider(new ItemDivider(15, 15, 1)); } @@ -93,33 +116,40 @@ public class FieldMonitoringActivity extends BaseActivity { - selectStation = selectGroup.getStations().get(i); - selectMonitor = selectStation.getMonitors().getNormal().get(0); - stationAdapter.setSelect(i); - setText(binding.tvNormalCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getNormal()))); - setText(binding.tvExceptionCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getExceptions()))); - setText(binding.tvOfflineCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getOffline()))); - setText(binding.tvMonitorName, selectMonitor.getName()); + groupAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> { + selectGroup = selectTeam.getGroups().get(i); + groupAdapter.setSelect(i); + if (selectGroup.getType().equals("monitor")) { + selectMonitor = selectGroup.getMonitors().getNormal().get(0); + selectStation = null; + } else { + selectStation = selectGroup.getStations().get(0); + selectMonitor = null; + } + initView(); }); binding.normalLayout.setOnClickListener(new SingleClickListener() { @Override protected void onSingleClick(View v) { Bundle bundle = new Bundle(); bundle.putInt("status", 1); - bundle.putSerializable("monitor_list", (Serializable) selectStation.getMonitors().getNormal()); + bundle.putSerializable("monitor_list", (Serializable) selectGroup.getMonitors().getNormal()); IntentUtil.startActivity(mContext, MonitorListActivity.class, bundle); } }); @@ -128,7 +158,7 @@ public class FieldMonitoringActivity extends BaseActivity>() { }.getType()); - selectGroup = mData.get(0); - selectStation = selectGroup.getStations().get(0); - selectMonitor = selectStation.getMonitors().getNormal().get(0); + selectTeam = mData.get(0); + selectGroup = selectTeam.getGroups().get(0); + selectMonitor = selectGroup.getMonitors().getNormal().get(0); initView(); } private void initView() { - setText(binding.tvGroupName, selectGroup.getName()); - stationAdapter.setNewData(selectGroup.getStations()); - setText(binding.tvNormalCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getNormal()))); - setText(binding.tvExceptionCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getExceptions()))); - setText(binding.tvOfflineCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getOffline()))); - setText(binding.tvMonitorName, selectMonitor.getName()); + setText(binding.tvTeamName, selectTeam.getName()); + groupAdapter.setNewData(selectTeam.getGroups()); + if (selectMonitor != null) { + setText(binding.tvNormalCount, String.valueOf(ArrayUtil.size(selectGroup.getMonitors().getNormal()))); + setText(binding.tvExceptionCount, String.valueOf(ArrayUtil.size(selectGroup.getMonitors().getExceptions()))); + setText(binding.tvOfflineCount, String.valueOf(ArrayUtil.size(selectGroup.getMonitors().getOffline()))); + setText(binding.tvMonitorName, selectMonitor.getName()); + setGone(binding.layoutMonitorStatus, true); + setGone(binding.layoutStationInfo, false); + setGone(binding.imgMonitor, true); + } else { + setText(binding.tvMonitorName, selectStation.getName()); + setGone(binding.layoutStationInfo, true); + setGone(binding.layoutMonitorStatus, false); + setGone(binding.imgMonitor, false); + } } - private class StationAdapter extends BaseQuickAdapter { + private class GroupAdapter extends BaseQuickAdapter { private int selectIndex = 0; @@ -172,12 +212,12 @@ public class FieldMonitoringActivity extends BaseActivity { - private List mData; + private List mData; private int mStatus = -1; // 1->正常设备 2->异常设备 3->离线设备 private MonitorAdapter monitorAdapter; @@ -38,7 +38,7 @@ public class MonitorListActivity extends BaseActivity) + mData = (List) getIntent().getSerializableExtra("monitor_list"); } @@ -75,7 +75,7 @@ public class MonitorListActivity extends BaseActivity { + extends BaseQuickAdapter { public MonitorAdapter() { super(R.layout.item_monitor); @@ -83,7 +83,7 @@ public class MonitorListActivity extends BaseActivity { + + @Override + protected Class getBindingClass() { + return ActivityPestsMonitoringBinding.class; + } + + @Override + protected void initStatusBar() { + ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar() + .statusBarDarkFont(true).init(); + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + onBackPressed(); + } + }); + } + +} diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/SmartFarmActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/SmartFarmActivity.java index af3b70e..2cfa347 100644 --- a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/SmartFarmActivity.java +++ b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/SmartFarmActivity.java @@ -35,6 +35,18 @@ public class SmartFarmActivity extends BaseActivity { IntentUtil.startActivity(mContext, FieldMonitoringActivity.class); } }); + binding.layoutWaterMonitoring.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + IntentUtil.startActivity(mContext, WaterMonitoringActivity.class); + } + }); + binding.layoutPestsMonitoring.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + IntentUtil.startActivity(mContext, PestsMonitoringActivity.class); + } + }); } } diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/WaterMonitoringActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/WaterMonitoringActivity.java new file mode 100644 index 0000000..de57d35 --- /dev/null +++ b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/WaterMonitoringActivity.java @@ -0,0 +1,33 @@ +package com.tairui.industrial_operation.ui.smart_farm; + +import com.gyf.immersionbar.ImmersionBar; +import com.tairui.industrial_operation.base.BaseActivity; +import com.tairui.industrial_operation.databinding.ActivityWaterMonitoringBinding; +import com.tairui.industrial_operation.util.SingleClickListener; + +import android.view.View; + +public class WaterMonitoringActivity extends BaseActivity { + + @Override + protected Class getBindingClass() { + return ActivityWaterMonitoringBinding.class; + } + + @Override + protected void initStatusBar() { + ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar() + .statusBarDarkFont(true).init(); + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + onBackPressed(); + } + }); + } + +} diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/entity/FileMonitoringEntity.java b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/entity/FileMonitoringEntity.java index a15e0f5..6d02461 100644 --- a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/entity/FileMonitoringEntity.java +++ b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/entity/FileMonitoringEntity.java @@ -9,8 +9,10 @@ public class FileMonitoringEntity { @SerializedName("name") private String name; + @SerializedName("groups") + private List groups; @SerializedName("stations") - private List stations; + private List stations; public String getName() { return name; @@ -20,19 +22,31 @@ public class FileMonitoringEntity { this.name = name; } - public List getStations() { + public List getGroups() { + return groups; + } + + public void setGroups(List groups) { + this.groups = groups; + } + + public List getStations() { return stations; } - public void setStations(List stations) { + public void setStations(List stations) { this.stations = stations; } - public static class StationsEntity { + public static class GroupsEntity { @SerializedName("name") private String name; + @SerializedName("type") + private String type; @SerializedName("monitors") private MonitorsEntity monitors; + @SerializedName("stations") + private List stations; public String getName() { return name; @@ -42,6 +56,14 @@ public class FileMonitoringEntity { this.name = name; } + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + public MonitorsEntity getMonitors() { return monitors; } @@ -50,6 +72,14 @@ public class FileMonitoringEntity { this.monitors = monitors; } + public List getStations() { + return stations; + } + + public void setStations(List stations) { + this.stations = stations; + } + public static class MonitorsEntity { @SerializedName("normal") private List normal; @@ -100,6 +130,288 @@ public class FileMonitoringEntity { return status; } + public void setStatus(Integer status) { + this.status = status; + } + } + + } + + public static class StationsEntity { + @SerializedName("name") + private String name; + @SerializedName("status") + private Integer status; + @SerializedName("crops_name") + private String cropsName; + @SerializedName("grow_step") + private String growStep; + @SerializedName("plant_type") + private String plantType; + @SerializedName("petiole_type") + private String petioleType; + @SerializedName("growth_pattern") + private String growthPattern; + @SerializedName("growth_pattern_status") + private Integer growthPatternStatus; + @SerializedName("organic_matter") + private String organicMatter; + @SerializedName("organic_matter_type") + private Integer organicMatterType; + @SerializedName("sensors") + private List sensors; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getCropsName() { + return cropsName; + } + + public void setCropsName(String cropsName) { + this.cropsName = cropsName; + } + + public String getGrowStep() { + return growStep; + } + + public void setGrowStep(String growStep) { + this.growStep = growStep; + } + + public String getPlantType() { + return plantType; + } + + public void setPlantType(String plantType) { + this.plantType = plantType; + } + + public String getPetioleType() { + return petioleType; + } + + public void setPetioleType(String petioleType) { + this.petioleType = petioleType; + } + + public String getGrowthPattern() { + return growthPattern; + } + + public void setGrowthPattern(String growthPattern) { + this.growthPattern = growthPattern; + } + + public Integer getGrowthPatternStatus() { + return growthPatternStatus; + } + + public void setGrowthPatternStatus(Integer growthPatternStatus) { + this.growthPatternStatus = growthPatternStatus; + } + + public String getOrganicMatter() { + return organicMatter; + } + + public void setOrganicMatter(String organicMatter) { + this.organicMatter = organicMatter; + } + + public Integer getOrganicMatterType() { + return organicMatterType; + } + + public void setOrganicMatterType(Integer organicMatterType) { + this.organicMatterType = organicMatterType; + } + + public List getSensors() { + return sensors; + } + + public void setSensors(List sensors) { + this.sensors = sensors; + } + + public static class SensorsEntity { + @SerializedName("type") + private String type; + @SerializedName("value") + private String value; + @SerializedName("status") + private Integer status; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + } + } + } + + public static class StationsEntityX { + @SerializedName("name") + private String name; + @SerializedName("type") + private String type; + @SerializedName("monitors") + private MonitorsEntityX monitors; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public MonitorsEntityX getMonitors() { + return monitors; + } + + public void setMonitors(MonitorsEntityX monitors) { + this.monitors = monitors; + } + + public static class MonitorsEntityX { + @SerializedName("normal") + private List normal; + @SerializedName("exceptions") + private List exceptions; + @SerializedName("offline") + private List offline; + + public List getNormal() { + return normal; + } + + public void setNormal(List normal) { + this.normal = normal; + } + + public List getExceptions() { + return exceptions; + } + + public void setExceptions(List exceptions) { + this.exceptions = exceptions; + } + + public List getOffline() { + return offline; + } + + public void setOffline(List offline) { + this.offline = offline; + } + + public static class NormalEntityX { + @SerializedName("name") + private String name; + @SerializedName("status") + private Integer status; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + } + + public static class ExceptionsEntityX { + @SerializedName("name") + private String name; + @SerializedName("status") + private Integer status; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + } + + public static class OfflineEntityX { + @SerializedName("name") + private String name; + @SerializedName("status") + private Integer status; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getStatus() { + return status; + } + public void setStatus(Integer status) { this.status = status; } diff --git a/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java b/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java index 9dce0d4..a89ad74 100644 --- a/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java +++ b/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java @@ -1,8 +1,12 @@ package com.tairui.industrial_operation.util; +import java.util.ArrayList; + +import com.tairui.industrial_operation.ui.photoview.PhotoViewActivty; import com.tairui.industrial_operation.widget.loading.LoadingDialog; import android.content.Context; +import android.os.Bundle; public class AppUtil { @@ -21,4 +25,11 @@ public class AppUtil { return null; } } + + public static void startPhotoView(Context context, ArrayList imgs){ + Bundle bundle = new Bundle(); + bundle.putInt("index", 0); + bundle.putStringArrayList("imgs", imgs); + IntentUtil.startActivity(context, PhotoViewActivty.class, bundle); + } } diff --git a/app/src/main/java/com/tairui/industrial_operation/widget/CustomViewPager.java b/app/src/main/java/com/tairui/industrial_operation/widget/CustomViewPager.java new file mode 100644 index 0000000..2768c62 --- /dev/null +++ b/app/src/main/java/com/tairui/industrial_operation/widget/CustomViewPager.java @@ -0,0 +1,58 @@ +package com.tairui.industrial_operation.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import androidx.viewpager.widget.ViewPager; + +/** + * @author kpinfo + */ +public class CustomViewPager extends ViewPager { + + private boolean isCanScroll; + + public CustomViewPager(Context context) { + super(context); + } + + public CustomViewPager(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (isCanScroll) { + //允许滑动则应该调用父类的方法 + try { + return super.onTouchEvent(ev); + } catch (Exception e) { + return false; + } + } else { + //禁止滑动则不做任何操作,直接返回true即可 + return true; + } + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + try { + if (isCanScroll) { + return super.onInterceptTouchEvent(ev); + } + } catch (Exception e) { + return false; + } + return false; + } + + /** + * 设置是否允许滑动,true是可以滑动,false是禁止滑动 + * + * @param isCanScroll 是否可以滚动 + */ + public void setIsCanScroll(boolean isCanScroll) { + this.isCanScroll = isCanScroll; + } +} diff --git a/app/src/main/res/layout/activity_field_monitoring.xml b/app/src/main/res/layout/activity_field_monitoring.xml index e71484b..4930a46 100644 --- a/app/src/main/res/layout/activity_field_monitoring.xml +++ b/app/src/main/res/layout/activity_field_monitoring.xml @@ -46,200 +46,493 @@ - + + android:orientation="vertical"> + android:layout_margin="16dp" + android:background="@drawable/bg_container_white_raduis_10" + android:orientation="vertical" + android:padding="12dp"> - + android:gravity="center" + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + android:layout_marginLeft="16dp" + android:layout_marginRight="16dp" + android:layout_marginBottom="16dp" + android:background="@drawable/bg_container_white_raduis_10" + android:padding="12dp"> - - - - - - - - - - + tools:text="监控-001" /> + android:layout_width="16dp" + android:layout_height="16dp" + android:layout_marginLeft="8dp" + android:src="@mipmap/ic_arrow_down_black" /> - + - - - - - - + + + android:layout_marginLeft="4dp" + android:src="@mipmap/ic_station_status_normal" /> + + + + + + + + + + + + + + + + + + android:layout_marginTop="12dp" + android:text="作物生长状态" + android:textColor="@color/color_txt_black" + android:textSize="18sp" + android:textStyle="bold" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:textSize="14sp" /> - + + + + + + + + @@ -247,77 +540,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_pests_monitoring.xml b/app/src/main/res/layout/activity_pests_monitoring.xml new file mode 100644 index 0000000..24780cd --- /dev/null +++ b/app/src/main/res/layout/activity_pests_monitoring.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_photo_view.xml b/app/src/main/res/layout/activity_photo_view.xml new file mode 100644 index 0000000..5d48e9f --- /dev/null +++ b/app/src/main/res/layout/activity_photo_view.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_smart_farm.xml b/app/src/main/res/layout/activity_smart_farm.xml index aa0e9ac..40bfcfa 100644 --- a/app/src/main/res/layout/activity_smart_farm.xml +++ b/app/src/main/res/layout/activity_smart_farm.xml @@ -309,6 +309,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/ic_back_white.png b/app/src/main/res/mipmap-xxhdpi/ic_back_white.png new file mode 100644 index 0000000..8282b0c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_back_white.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_monitoring_water.png b/app/src/main/res/mipmap-xxhdpi/ic_monitoring_water.png new file mode 100644 index 0000000..a7ee0d0 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_monitoring_water.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_monitor_chart.png b/app/src/main/res/mipmap-xxhdpi/pic_monitor_chart.png new file mode 100644 index 0000000..2405803 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_monitor_chart.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_pests_1.png b/app/src/main/res/mipmap-xxhdpi/pic_pests_1.png new file mode 100644 index 0000000..fcad3ab Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_pests_1.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_pests_2.png b/app/src/main/res/mipmap-xxhdpi/pic_pests_2.png new file mode 100644 index 0000000..ca5f229 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_pests_2.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_pests_3.png b/app/src/main/res/mipmap-xxhdpi/pic_pests_3.png new file mode 100644 index 0000000..778c4f6 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_pests_3.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_sensor_1.png b/app/src/main/res/mipmap-xxhdpi/pic_sensor_1.png new file mode 100644 index 0000000..a547335 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_sensor_1.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_sensor_2.png b/app/src/main/res/mipmap-xxhdpi/pic_sensor_2.png new file mode 100644 index 0000000..b7a1480 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_sensor_2.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_sensor_3.png b/app/src/main/res/mipmap-xxhdpi/pic_sensor_3.png new file mode 100644 index 0000000..ed850ff Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_sensor_3.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_sensor_4.png b/app/src/main/res/mipmap-xxhdpi/pic_sensor_4.png new file mode 100644 index 0000000..aea4ecc Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_sensor_4.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/pic_water_monitoring.png b/app/src/main/res/mipmap-xxhdpi/pic_water_monitoring.png new file mode 100644 index 0000000..254e074 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_water_monitoring.png differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 81e6c50..7b8bfb8 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,6 +9,7 @@ #35353F #666666 #444444 + #25BF82 #F5F5F5 #FF4348 #999999