新增水质监测&虫害监测

This commit is contained in:
tongchao 2025-05-28 16:53:50 +08:00
parent 62838c1c81
commit 3fbebf29ca
40 changed files with 1724 additions and 296 deletions

Binary file not shown.

View File

@ -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'
}

View File

@ -78,6 +78,23 @@
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.smart_farm.WaterMonitoringActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.smart_farm.PestsMonitoringActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.photoview.PhotoViewActivty"
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
</application>
</manifest>

View File

@ -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
}
]
}

View File

@ -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<ActivityPhotoViewBinding> {
private List<String> imgs;
private int index = -1;
@Override
protected Class<ActivityPhotoViewBinding> 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;
}
}
}

View File

@ -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<ActivityFieldMonitoringBinding> {
private List<FileMonitoringEntity> 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<ActivityFieldMonitoringBinding> getBindingClass() {
@ -50,21 +52,27 @@ public class FieldMonitoringActivity extends BaseActivity<ActivityFieldMonitorin
protected void onFindView(Bundle savedInstanceState) {
binding.stationRecycler.setLayoutManager(new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false));
binding.stationRecycler.setHasFixedSize(true);
stationAdapter = new StationAdapter();
binding.stationRecycler.setAdapter(stationAdapter);
groupAdapter = new GroupAdapter();
binding.stationRecycler.setAdapter(groupAdapter);
}
private void showGroupMenu() {
private void showTeamMenu() {
List<CharSequence> 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<ActivityFieldMonitorin
private void showMonitorMenu() {
List<CharSequence> 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<CharSequence> 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<ActivityFieldMonitorin
onBackPressed();
}
});
binding.layoutGroup.setOnClickListener(new SingleClickListener() {
binding.layoutTeam.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
showGroupMenu();
showTeamMenu();
}
});
binding.layoutMonitor.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
showMonitorMenu();
if (selectGroup.getType().equals("monitor")) {
showMonitorMenu();
} else {
shoStationMenu();
}
}
});
stationAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
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<ActivityFieldMonitorin
protected void onSingleClick(View v) {
Bundle bundle = new Bundle();
bundle.putInt("status", 2);
bundle.putSerializable("monitor_list", (Serializable) selectStation.getMonitors().getExceptions());
bundle.putSerializable("monitor_list", (Serializable) selectGroup.getMonitors().getExceptions());
IntentUtil.startActivity(mContext, MonitorListActivity.class, bundle);
}
});
@ -137,7 +167,7 @@ public class FieldMonitoringActivity extends BaseActivity<ActivityFieldMonitorin
protected void onSingleClick(View v) {
Bundle bundle = new Bundle();
bundle.putInt("status", 3);
bundle.putSerializable("monitor_list", (Serializable) selectStation.getMonitors().getOffline());
bundle.putSerializable("monitor_list", (Serializable) selectGroup.getMonitors().getOffline());
IntentUtil.startActivity(mContext, MonitorListActivity.class, bundle);
}
});
@ -148,22 +178,32 @@ public class FieldMonitoringActivity extends BaseActivity<ActivityFieldMonitorin
String jsonData = JsonUtils.getJsonFromAssets(mContext, "file_monitoring.json");
mData = new Gson().fromJson(jsonData, new TypeToken<List<FileMonitoringEntity>>() {
}.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<FileMonitoringEntity.StationsEntity, BaseViewHolder> {
private class GroupAdapter extends BaseQuickAdapter<FileMonitoringEntity.GroupsEntity, BaseViewHolder> {
private int selectIndex = 0;
@ -172,12 +212,12 @@ public class FieldMonitoringActivity extends BaseActivity<ActivityFieldMonitorin
notifyDataSetChanged();
}
public StationAdapter() {
public GroupAdapter() {
super(R.layout.item_station);
}
@Override
protected void convert(@NonNull BaseViewHolder holder, FileMonitoringEntity.StationsEntity entity) {
protected void convert(@NonNull BaseViewHolder holder, FileMonitoringEntity.GroupsEntity entity) {
int pos = holder.getLayoutPosition();
View rootView = holder.getView(R.id.rootView);
if (selectIndex == pos) {
@ -185,10 +225,10 @@ public class FieldMonitoringActivity extends BaseActivity<ActivityFieldMonitorin
} else {
rootView.setBackgroundResource(R.drawable.bg_container_f5_raduis_10);
}
if (pos % 2 == 0) {
holder.setImageResource(R.id.img, R.mipmap.pic_station_2);
} else {
if (entity.getType().equals("monitor")) {
holder.setImageResource(R.id.img, R.mipmap.pic_station_1);
} else {
holder.setImageResource(R.id.img, R.mipmap.pic_station_2);
}
holder.setText(R.id.title, entity.getName());

View File

@ -19,7 +19,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
public class MonitorListActivity extends BaseActivity<ActivityMonitorListBinding> {
private List<FileMonitoringEntity.StationsEntity.MonitorsEntity.MonitorItemEntity> mData;
private List<FileMonitoringEntity.GroupsEntity.MonitorsEntity.MonitorItemEntity> mData;
private int mStatus = -1; // 1->正常设备 2->异常设备 3->离线设备
private MonitorAdapter monitorAdapter;
@ -38,7 +38,7 @@ public class MonitorListActivity extends BaseActivity<ActivityMonitorListBinding
@Override
protected void onQueryArguments() {
mStatus = getIntent().getIntExtra("status", -1);
mData = (List<FileMonitoringEntity.StationsEntity.MonitorsEntity.MonitorItemEntity>)
mData = (List<FileMonitoringEntity.GroupsEntity.MonitorsEntity.MonitorItemEntity>)
getIntent().getSerializableExtra("monitor_list");
}
@ -75,7 +75,7 @@ public class MonitorListActivity extends BaseActivity<ActivityMonitorListBinding
}
private class MonitorAdapter
extends BaseQuickAdapter<FileMonitoringEntity.StationsEntity.MonitorsEntity.MonitorItemEntity, BaseViewHolder> {
extends BaseQuickAdapter<FileMonitoringEntity.GroupsEntity.MonitorsEntity.MonitorItemEntity, BaseViewHolder> {
public MonitorAdapter() {
super(R.layout.item_monitor);
@ -83,7 +83,7 @@ public class MonitorListActivity extends BaseActivity<ActivityMonitorListBinding
@Override
protected void convert(@NonNull BaseViewHolder holder,
FileMonitoringEntity.StationsEntity.MonitorsEntity.MonitorItemEntity entity) {
FileMonitoringEntity.GroupsEntity.MonitorsEntity.MonitorItemEntity entity) {
holder.setText(R.id.title, entity.getName());
if (mStatus == 1) {
holder.setImageResource(R.id.statusDot, R.mipmap.ic_station_status_normal);

View File

@ -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.ActivityPestsMonitoringBinding;
import com.tairui.industrial_operation.util.SingleClickListener;
import android.view.View;
public class PestsMonitoringActivity extends BaseActivity<ActivityPestsMonitoringBinding> {
@Override
protected Class<ActivityPestsMonitoringBinding> 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();
}
});
}
}

View File

@ -35,6 +35,18 @@ public class SmartFarmActivity extends BaseActivity<ActivitySmartFarmBinding> {
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);
}
});
}
}

View File

@ -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<ActivityWaterMonitoringBinding> {
@Override
protected Class<ActivityWaterMonitoringBinding> 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();
}
});
}
}

View File

@ -9,8 +9,10 @@ public class FileMonitoringEntity {
@SerializedName("name")
private String name;
@SerializedName("groups")
private List<GroupsEntity> groups;
@SerializedName("stations")
private List<StationsEntity> stations;
private List<StationsEntityX> stations;
public String getName() {
return name;
@ -20,19 +22,31 @@ public class FileMonitoringEntity {
this.name = name;
}
public List<StationsEntity> getStations() {
public List<GroupsEntity> getGroups() {
return groups;
}
public void setGroups(List<GroupsEntity> groups) {
this.groups = groups;
}
public List<StationsEntityX> getStations() {
return stations;
}
public void setStations(List<StationsEntity> stations) {
public void setStations(List<StationsEntityX> 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<StationsEntity> 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<StationsEntity> getStations() {
return stations;
}
public void setStations(List<StationsEntity> stations) {
this.stations = stations;
}
public static class MonitorsEntity {
@SerializedName("normal")
private List<MonitorItemEntity> 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<SensorsEntity> 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<SensorsEntity> getSensors() {
return sensors;
}
public void setSensors(List<SensorsEntity> 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<NormalEntityX> normal;
@SerializedName("exceptions")
private List<ExceptionsEntityX> exceptions;
@SerializedName("offline")
private List<OfflineEntityX> offline;
public List<NormalEntityX> getNormal() {
return normal;
}
public void setNormal(List<NormalEntityX> normal) {
this.normal = normal;
}
public List<ExceptionsEntityX> getExceptions() {
return exceptions;
}
public void setExceptions(List<ExceptionsEntityX> exceptions) {
this.exceptions = exceptions;
}
public List<OfflineEntityX> getOffline() {
return offline;
}
public void setOffline(List<OfflineEntityX> 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;
}

View File

@ -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<String> imgs){
Bundle bundle = new Bundle();
bundle.putInt("index", 0);
bundle.putStringArrayList("imgs", imgs);
IntentUtil.startActivity(context, PhotoViewActivty.class, bundle);
}
}

View File

@ -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;
}
}

View File

@ -46,200 +46,493 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:orientation="vertical"
android:padding="12dp">
android:orientation="vertical">
<LinearLayout
android:id="@+id/layoutGroup"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
android:layout_margin="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:orientation="vertical"
android:padding="12dp">
<TextView
android:id="@+id/tvGroupName"
<LinearLayout
android:id="@+id/layoutTeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold"
tools:text="A区田间监测设备组" />
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:src="@mipmap/ic_arrow_down_black" />
<TextView
android:id="@+id/tvTeamName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold"
tools:text="A区田间监测设备组" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:src="@mipmap/ic_arrow_down_black" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/stationRecycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:scrollbars="none" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layoutMonitorStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/normalLayout"
android:layout_width="0dp"
android:layout_height="40dp"
android:background="@drawable/bg_container_f5_raduis_10"
android:padding="8dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/exceptionLayout"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/statusNormal"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/ic_station_status_normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="正常"
android:textColor="@color/color_green"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusNormal"
app:layout_constraintLeft_toRightOf="@id/statusNormal"
app:layout_constraintTop_toTopOf="@id/statusNormal" />
<TextView
android:id="@+id/tvNormalCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="5"
android:textColor="@color/color_green"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusNormal"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/statusNormal" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/exceptionLayout"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginLeft="12dp"
android:background="@drawable/bg_container_f5_raduis_10"
android:padding="8dp"
app:layout_constraintLeft_toRightOf="@id/normalLayout"
app:layout_constraintRight_toLeftOf="@id/offlineLayout"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/statusException"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/ic_station_status_exception"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="异常"
android:textColor="@color/color_txt_red"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusException"
app:layout_constraintLeft_toRightOf="@id/statusException"
app:layout_constraintTop_toTopOf="@id/statusException" />
<TextView
android:id="@+id/tvExceptionCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="5"
android:textColor="@color/color_txt_red"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusException"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/statusException" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/offlineLayout"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginLeft="12dp"
android:background="@drawable/bg_container_f5_raduis_10"
android:padding="8dp"
app:layout_constraintLeft_toRightOf="@id/exceptionLayout"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/statusOffline"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/ic_station_status_offline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="离线"
android:textColor="@color/color_txt_label"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusOffline"
app:layout_constraintLeft_toRightOf="@id/statusOffline"
app:layout_constraintTop_toTopOf="@id/statusOffline" />
<TextView
android:id="@+id/tvOfflineCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="5"
android:textColor="@color/color_txt_label"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusOffline"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/statusOffline" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/stationRecycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:scrollbars="none" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
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">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/normalLayout"
android:layout_width="0dp"
android:layout_height="40dp"
android:background="@drawable/bg_container_f5_raduis_10"
android:padding="8dp"
<LinearLayout
android:id="@+id/layoutMonitor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/exceptionLayout"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/statusNormal"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/ic_station_status_normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tvMonitorName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="正常"
android:textColor="@color/color_green"
android:textSize="12sp"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusNormal"
app:layout_constraintLeft_toRightOf="@id/statusNormal"
app:layout_constraintTop_toTopOf="@id/statusNormal" />
<TextView
android:id="@+id/tvNormalCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="5"
android:textColor="@color/color_green"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusNormal"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/statusNormal" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/exceptionLayout"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginLeft="12dp"
android:background="@drawable/bg_container_f5_raduis_10"
android:padding="8dp"
app:layout_constraintLeft_toRightOf="@id/normalLayout"
app:layout_constraintRight_toLeftOf="@id/offlineLayout"
app:layout_constraintTop_toTopOf="parent">
tools:text="监控-001" />
<ImageView
android:id="@+id/statusException"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/ic_station_status_exception"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:src="@mipmap/ic_arrow_down_black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="异常"
android:textColor="@color/color_txt_red"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusException"
app:layout_constraintLeft_toRightOf="@id/statusException"
app:layout_constraintTop_toTopOf="@id/statusException" />
</LinearLayout>
<TextView
android:id="@+id/tvExceptionCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="5"
android:textColor="@color/color_txt_red"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusException"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/statusException" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/offlineLayout"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginLeft="12dp"
android:background="@drawable/bg_container_f5_raduis_10"
android:padding="8dp"
app:layout_constraintLeft_toRightOf="@id/exceptionLayout"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="正常"
android:textColor="@color/color_green"
android:textSize="12sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/statusOffline"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/ic_station_status_offline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:layout_marginLeft="4dp"
android:src="@mipmap/ic_station_status_normal" />
</LinearLayout>
<ImageView
android:id="@+id/imgMonitor"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_monitor"
android:visibility="gone"
app:layout_constraintDimensionRatio="344:188"
app:layout_constraintTop_toBottomOf="@id/layoutMonitor" />
<LinearLayout
android:id="@+id/layoutStationInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/layoutMonitor">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="108dp"
android:layout_height="108dp"
android:src="@mipmap/pic_sensor_1" />
<ImageView
android:layout_width="108dp"
android:layout_height="108dp"
android:layout_marginLeft="10dp"
android:src="@mipmap/pic_sensor_2" />
<ImageView
android:layout_width="108dp"
android:layout_height="108dp"
android:layout_marginLeft="10dp"
android:src="@mipmap/pic_sensor_3" />
</LinearLayout>
<ImageView
android:layout_width="108dp"
android:layout_height="108dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_sensor_4" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="离线"
android:textColor="@color/color_txt_label"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusOffline"
app:layout_constraintLeft_toRightOf="@id/statusOffline"
app:layout_constraintTop_toTopOf="@id/statusOffline" />
android:layout_marginTop="12dp"
android:text="作物生长状态"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="作物名称"
android:textColor="@color/color_txt_label"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:text="甘蔗"
android:textColor="@color/color_txt_black"
android:textSize="14sp" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="生长阶段"
android:textColor="@color/color_txt_label"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:text="成熟期"
android:textColor="@color/color_txt_black"
android:textSize="14sp" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="植株形态"
android:textColor="@color/color_txt_label"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:text="果木型"
android:textColor="@color/color_txt_black"
android:textSize="14sp" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="叶片形态"
android:textColor="@color/color_txt_label"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:text="阔叶型"
android:textColor="@color/color_txt_black"
android:textSize="14sp" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="生长态势"
android:textColor="@color/color_txt_label"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:text="良好"
android:textColor="@color/color_txt_green"
android:textSize="14sp" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="田间有机质含量"
android:textColor="@color/color_txt_label"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:text="10%"
android:textColor="@color/color_txt_green"
android:textSize="14sp" />
</FrameLayout>
<TextView
android:id="@+id/tvOfflineCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="5"
android:layout_marginTop="12dp"
android:layout_gravity="left|center_vertical"
android:text="生长趋势图"
android:textColor="@color/color_txt_label"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/statusOffline"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/statusOffline" />
android:textSize="14sp" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_marginTop="12dp"
android:layout_height="wrap_content">
<ImageView
app:layout_constraintTop_toTopOf="parent"
android:src="@mipmap/pic_monitor_chart"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="334:156"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@ -247,77 +540,7 @@
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:padding="12dp">
<LinearLayout
android:id="@+id/layoutMonitor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tvMonitorName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold"
tools:text="监控-001" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:src="@mipmap/ic_arrow_down_black" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="正常"
android:textColor="@color/color_green"
android:textSize="12sp"
android:textStyle="bold" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:src="@mipmap/ic_station_status_normal" />
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_monitor"
app:layout_constraintDimensionRatio="344:188"
app:layout_constraintTop_toBottomOf="@id/layoutMonitor" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_f5f5f5">
<com.tairui.industrial_operation.widget.statusbar.StatusBarHeightView
android:id="@+id/statusbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintTop_toBottomOf="@id/statusbar">
<ImageView
android:id="@+id/btnBack"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="16dp"
android:padding="4dp"
android:src="@mipmap/ic_back_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="病虫害监测"
android:textColor="@color/color_txt_black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:orientation="vertical"
android:padding="12dp">
<LinearLayout
android:id="@+id/layoutTeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/tvTeamName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold"
android:text="A区田间监测设备组" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:src="@mipmap/ic_arrow_down_black" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="120dp"
android:layout_height="96dp"
android:layout_marginTop="12dp"
android:background="@drawable/bg_container_f5_raduis_10"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/ic_monitoring_water" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="病害监测分析仪"
android:textColor="@color/color_txt_black"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="120dp"
android:layout_height="96dp"
android:layout_marginLeft="12dp"
android:layout_marginTop="12dp"
android:background="@drawable/bg_container_f5_green_border_raduis_10"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/ic_monitoring_water" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="虫害监测分析仪"
android:textColor="@color/color_txt_black"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:padding="12dp">
<LinearLayout
android:id="@+id/layoutMonitor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tvMonitorName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="虫害监测分析仪-001"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:src="@mipmap/ic_arrow_down_black" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="正常"
android:textColor="@color/color_green"
android:textSize="12sp"
android:textStyle="bold" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:src="@mipmap/ic_station_status_normal" />
</LinearLayout>
<ImageView
android:id="@+id/pic1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_pests_1"
app:layout_constraintDimensionRatio="344:188"
app:layout_constraintTop_toBottomOf="@id/layoutMonitor" />
<ImageView
android:id="@+id/pic2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_pests_2"
app:layout_constraintDimensionRatio="344:56"
app:layout_constraintTop_toBottomOf="@id/pic1" />
<ImageView
android:id="@+id/pic3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:src="@mipmap/pic_pests_3"
app:layout_constraintDimensionRatio="344:156"
app:layout_constraintTop_toBottomOf="@id/pic2" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.tairui.industrial_operation.widget.statusbar.StatusBarHeightView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/black" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.tairui.industrial_operation.widget.CustomViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black" />
<ImageView
android:id="@+id/back"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="top|left"
android:layout_marginLeft="15dp"
android:layout_marginTop="12dp"
android:padding="2.5dp"
android:src="@mipmap/ic_back_white" />
<TextView
android:id="@+id/page"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|bottom"
android:layout_margin="12dp"
android:textColor="@color/white"
android:textSize="14sp" />
</FrameLayout>
</LinearLayout>

View File

@ -309,6 +309,7 @@
</LinearLayout>
<LinearLayout
android:id="@+id/layoutWaterMonitoring"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
@ -331,6 +332,7 @@
</LinearLayout>
<LinearLayout
android:id="@+id/layoutPestsMonitoring"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"

View File

@ -0,0 +1,264 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_f5f5f5">
<com.tairui.industrial_operation.widget.statusbar.StatusBarHeightView
android:id="@+id/statusbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintTop_toBottomOf="@id/statusbar">
<ImageView
android:id="@+id/btnBack"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="16dp"
android:padding="4dp"
android:src="@mipmap/ic_back_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="水质监测"
android:textColor="@color/color_txt_black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:orientation="vertical"
android:padding="12dp">
<LinearLayout
android:id="@+id/layoutTeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/tvTeamName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold"
android:text="A区田间监测设备组" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:src="@mipmap/ic_arrow_down_black" />
</LinearLayout>
<LinearLayout
android:layout_width="120dp"
android:layout_height="96dp"
android:layout_marginTop="12dp"
android:background="@drawable/bg_container_f5_green_border_raduis_10"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/ic_monitoring_water" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="水质参数分析仪"
android:textColor="@color/color_txt_black"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:padding="12dp">
<LinearLayout
android:id="@+id/layoutMonitor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tvMonitorName"
android:text="水质参数分析仪-001"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:src="@mipmap/ic_arrow_down_black" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="正常"
android:textColor="@color/color_green"
android:textSize="12sp"
android:textStyle="bold" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:src="@mipmap/ic_station_status_normal" />
</LinearLayout>
<ImageView
android:id="@+id/imgMonitor"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_monitor"
android:visibility="gone"
app:layout_constraintDimensionRatio="344:188"
app:layout_constraintTop_toBottomOf="@id/layoutMonitor" />
<LinearLayout
android:id="@+id/layoutStationInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/layoutMonitor">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="108dp"
android:layout_height="108dp"
android:src="@mipmap/pic_sensor_1" />
<ImageView
android:layout_width="108dp"
android:layout_height="108dp"
android:layout_marginLeft="10dp"
android:src="@mipmap/pic_sensor_2" />
<ImageView
android:layout_width="108dp"
android:layout_height="108dp"
android:layout_marginLeft="10dp"
android:src="@mipmap/pic_sensor_3" />
</LinearLayout>
<ImageView
android:layout_width="108dp"
android:layout_height="108dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_sensor_4" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="历史水质数据"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<ImageView
android:id="@+id/imgPic"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@mipmap/pic_water_monitoring"
app:layout_constraintDimensionRatio="334:200"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -9,6 +9,7 @@
<color name="color_tv_titile">#35353F</color>
<color name="color_tv_content">#666666</color>
<color name="color_txt_black">#444444</color>
<color name="color_txt_green">#25BF82</color>
<color name="color_f5f5f5">#F5F5F5</color>
<color name="color_txt_red">#FF4348</color>
<color name="color_txt_label">#999999</color>