app/build.gradle
@@ -28,7 +28,7 @@ minSdk 23 targetSdk 30 versionCode 1 versionName "1.1.3"//版本规则1.1是产品功能迭代用的,最后一位1是我们修复bug用的 versionName "1.2.1"//版本规则1.2是产品功能迭代用的,最后一位1是我们修复bug用的 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true manifestPlaceholders = mfph @@ -136,7 +136,7 @@ implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1' //图片加载库 implementation 'com.github.bumptech.glide:glide:4.12.0' implementation 'com.github.bumptech.glide:glide:4.13.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' app/src/main/java/com/hdl/photovoltaic/broadcast/NetworkChangeReceiver.java
@@ -21,7 +21,7 @@ @Override public void onReceive(Context context, Intent intent) { //todo 已经在NetworkUtils里面实现 //todo 已经转在NetworkUtils里面实现 // ConnectivityManager connectionManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo(); // if (networkInfo != null && networkInfo.isAvailable()) { app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -10,7 +10,7 @@ public static final String POST_Mqtt_GetRemoteInfo = "/home-wisdom/app/mqtt/getRemoteInfo"; //region -----警报消息中心(住宅)--------- //获取未处理消息数量 public static final String POST_Message_UntreatedCount = "/home-wisdom/app/powerStation/message/untreatedCount"; public static final String POST_Message_UntreatedCount = "/home-wisdom/app/powerStation/message/unCount"; //消息列表 public static final String POST_Message_List = "/home-wisdom/app/powerStation/message/listByPage"; //获取消息详情 app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
@@ -1,14 +1,17 @@ package com.hdl.photovoltaic.other; import android.content.Context; import android.graphics.Bitmap; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.dcloud.zxing2.WriterException; import com.google.gson.Gson; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import com.hdl.photovoltaic.utils.GlideUtils; import java.util.Hashtable; @@ -100,5 +103,23 @@ } } /** * 没有数据界面的样式 * * @param is_data true有数据,false没数据 * @param parent 父容器 * @param imageView 显示gif控件 * @param str 描述文本 */ public void nullDataUpdateUi(Context mContext, View parent, ImageView imageView, TextView textView, String str, boolean is_data) { if (is_data) { parent.setVisibility(View.GONE); } else { parent.setVisibility(View.VISIBLE); GlideUtils.getDrawableGifAnimation(mContext, imageView); textView.setText(str); } } } app/src/main/java/com/hdl/photovoltaic/ui/adapter/LanguageAdapter.java
@@ -55,11 +55,15 @@ if (position == this.mList.size() - 1) { holder.item_bottom_line_v.setVisibility(View.GONE); } holder.itemView.setTag(position);//标记位置 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (noOnclickListener != null) { noOnclickListener.onClick(holder.getAdapterPosition(), itemData); try { if (noOnclickListener != null) { noOnclickListener.onClick((int) holder.itemView.getTag(), itemData); } } catch (Exception ignored) { } } }); app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
@@ -3,12 +3,16 @@ import android.os.Bundle; import android.os.SystemClock; import android.view.View; import android.widget.TextView; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseFragment; import com.hdl.photovoltaic.config.ConstantManage; @@ -16,6 +20,7 @@ import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch; import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch; import com.hdl.photovoltaic.enums.MessageStateType; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlMessageLogic; @@ -224,17 +229,8 @@ EventBus.getDefault().removeStickyEvent(eventBus); postEventBus(MessageFunctionTabSwitch.nascent); HdlLogLogic.print("正在点击【消息】"); } } else if (eventBus.getTopic().equals(ConstantManage.message_count)) { if (eventBus.getType().equals(MessageStateType.untreated)) { String s = getText(R.string.message_nascent) + "(" + HdlMessageLogic.getInstance().getNascentMessageMemoryList().size() + ")"; viewBinding.messageTabNascentTitleTv.setText(s); } else if (eventBus.getType().equals(MessageStateType.processed)) { String s = getText(R.string.message_recover) + "(" + HdlMessageLogic.getInstance().getRecoverMessageMemoryList().size() + ")"; viewBinding.messageTabRecoverTitleTv.setText(s); } } } } app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java
@@ -4,12 +4,17 @@ import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseFragment; @@ -18,11 +23,14 @@ import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch; import com.hdl.photovoltaic.enums.MessageStateType; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlMessageLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.ui.adapter.MessageAdapter; import com.hdl.photovoltaic.ui.bean.HouseIdBean; import com.hdl.photovoltaic.ui.bean.MessageBean; import com.hdl.photovoltaic.utils.GlideUtils; import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; import org.greenrobot.eventbus.EventBus; @@ -124,15 +132,30 @@ this.messageNascentAdapter.setList(mList); this.messageNascentAdapter.notifyDataSetChanged(); } //刷新【发生中】信息数量总数 this.refreshNascentCount(); this.nullDataUpdateUi(); if (mList.size() > 0) { BaseEventBus baseEventBus = new BaseEventBus(); baseEventBus.setTopic(ConstantManage.message_count); baseEventBus.setType(MessageStateType.untreated); baseEventBus.setData(mList.size()); EventBus.getDefault().post(baseEventBus); } } /** * 刷新【发生中】信息数量总数 */ private void refreshNascentCount() { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { TextView textView = _mActivity.findViewById(R.id.message_tab_nascent_title_tv); if (textView != null) { textView.setText(getText(R.string.message_nascent)); if (mList.size() > 0) { String s = getText(R.string.message_nascent) + "(" + mList.size() + ")"; textView.setText(s); } } } }); } @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) @@ -146,8 +169,10 @@ if (eventBus.getType().equals(MessageFunctionTabSwitch.nascent.toString())) { initData(); getNascentMessageList(true); getUnreadCount(); // 取消粘性事件 EventBus.getDefault().removeStickyEvent(eventBus); } } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) { @@ -155,6 +180,7 @@ //消息详情回调 initData(); updateListData(); getUnreadCount(); } } } @@ -162,7 +188,7 @@ /** * 获取发生中的消息列表 * * @param isShowLoading 是否启动 true启动 * @param isShowLoading 是否启动加载框 true启动 */ private void getNascentMessageList(boolean isShowLoading) { if (mList.size() == 0) { @@ -222,4 +248,64 @@ // List<MessageBean> newData = HdlMessageLogic.getInstance().getAllMessageList(); // return newData; // } /** * 读取消息【未读数量】 */ private void getUnreadCount() { HdlMessageLogic.getInstance().getMessageUntreatedCount(new CloudCallBeak<String>() { @Override public void onSuccess(String data) { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { JSONObject jsonObject = JSON.parseObject(data); // if (jsonObject.containsKey("untreatedCount")) { // //未处理数量 // jsonObject.getString("untreatedCount"); // } String unreadCount = "0"; if (jsonObject.containsKey("unreadCount")) { //未读数量 unreadCount = jsonObject.getString("unreadCount"); } TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); if (textView != null) { if (TextUtils.isEmpty(unreadCount) || unreadCount.equals("0")) { textView.setVisibility(View.GONE); } else { if (unreadCount.length() > 2) { //大于3位数,默认99+ unreadCount = "99+"; } textView.setVisibility(View.VISIBLE); textView.setText(unreadCount); } } } }); } @Override public void onFailure(HDLException e) { TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); if (textView != null) { textView.setVisibility(View.GONE); } } }); } /** * 没有电站列表的样式 */ private void nullDataUpdateUi() { HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, getString(R.string.message_alarm_data_null), mList.size() > 0); } } app/src/main/java/com/hdl/photovoltaic/ui/message/RecoverMessageFragment.java
@@ -2,6 +2,7 @@ import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; @@ -15,6 +16,7 @@ import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch; import com.hdl.photovoltaic.enums.MessageStateType; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlMessageLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; @@ -104,13 +106,29 @@ this.messageRecoverAdapter.notifyDataSetChanged(); } if (mList.size() > 0) { BaseEventBus baseEventBus = new BaseEventBus(); baseEventBus.setTopic(ConstantManage.message_count); baseEventBus.setType(MessageStateType.processed); baseEventBus.setData(mList.size()); EventBus.getDefault().post(baseEventBus); } //刷新【已恢复】信息数量总数 this.refreshRecoverCount(); this.nullDataUpdateUi(); } /** * 刷新【已恢复】信息数量总数 */ private void refreshRecoverCount() { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { TextView textView = _mActivity.findViewById(R.id.message_tab_recover_title_tv); if (textView != null) { textView.setText(getText(R.string.message_recover)); if (mList.size() > 0) { String s = getText(R.string.message_recover) + "(" + mList.size() + ")"; textView.setText(s); } } } }); } @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) @@ -182,4 +200,14 @@ }); } } /** * 没有电站列表的样式 */ private void nullDataUpdateUi() { HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, getString(R.string.message_alarm_data_null), mList.size() > 0); } } app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -1,16 +1,26 @@ package com.hdl.photovoltaic.ui.powerstation; import android.Manifest; import android.annotation.SuppressLint; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.Movie; import android.hardware.camera2.CameraManager; import android.os.Bundle; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; import com.google.gson.Gson; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.R; @@ -22,6 +32,7 @@ import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch; import com.hdl.photovoltaic.enums.ShowErrorMode; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; @@ -29,7 +40,9 @@ import com.hdl.photovoltaic.ui.adapter.HouseInfoAdapter; import com.hdl.photovoltaic.ui.bean.HouseIdBean; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.utils.GlideUtils; import com.hdl.photovoltaic.utils.PermissionUtils; import com.hdl.photovoltaic.widget.MovieDrawable; import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; import com.hdl.sdk.link.core.utils.mqtt.MqttRecvClient; @@ -316,11 +329,10 @@ * 没有电站列表的样式 */ private void nullDataUpdateUi(List<HouseIdBean> list) { if (list != null && list.size() > 0) { viewBinding.nullListTv.setVisibility(View.GONE); } else { viewBinding.nullListTv.setVisibility(View.VISIBLE); } HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, getString(R.string.my_power_station_data_null), list != null && list.size() > 0); } app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java
@@ -11,15 +11,22 @@ import android.graphics.RectF; import android.widget.ImageView; import androidx.annotation.Nullable; import androidx.core.graphics.drawable.RoundedBitmapDrawable; import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.CircleCrop; import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.other.HdlThreadLogic; @@ -123,7 +130,7 @@ if (conn.getResponseCode() == 200) { InputStream inStream = conn.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inStream); imageView.setImageBitmap(getRoundedCornerBitmap(bitmap,pixels)); imageView.setImageBitmap(getRoundedCornerBitmap(bitmap, pixels)); } } catch (Exception e) { } @@ -160,4 +167,39 @@ canvas.drawBitmap(bitmap, rect, rect, paint); return output; } /** * 界面线数据显示样式 * * @param context 上下文 * @param imageview 显示图片组件 */ public static void getDrawableGifAnimation(Context context, ImageView imageview) { if (context == null) { return; } if (imageview == null) { return; } Glide.with(context) .asGif() .load(R.drawable.null_data_icon)//(res或者gif的url链接) .diskCacheStrategy(DiskCacheStrategy.ALL) .listener(new RequestListener<GifDrawable>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) { // resource.setLoopCount(1);控制播放次数 return false; } }) .into(imageview); } } app/src/main/java/com/hdl/photovoltaic/widget/MovieDrawable.java
New file @@ -0,0 +1,75 @@ package com.hdl.photovoltaic.widget; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Movie; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.os.SystemClock; import android.widget.ImageView; import androidx.annotation.NonNull; import com.hdl.photovoltaic.R; /** * 播放GIF动画 */ public class MovieDrawable extends Drawable { private final Movie mMovie; private long mStartTime; public MovieDrawable(Movie movie) { mMovie = movie; } public void start() { mStartTime = SystemClock.uptimeMillis(); } @Override public void draw(@NonNull Canvas canvas) { long time = SystemClock.uptimeMillis() - mStartTime; mMovie.setTime((int) (time % mMovie.duration())); mMovie.draw(canvas, getBounds().left, getBounds().top); invalidateSelf(); } @Override public void setAlpha(int alpha) { // 设置透明度 } @Override public void setColorFilter(ColorFilter colorFilter) { // 设置颜色滤镜 } @Override public int getOpacity() { // 返回透明度 return PixelFormat.TRANSLUCENT; } public void getDrawableGifAnimation(Context mContext, ImageView imageView) { try { if (mContext == null) { return; } if (imageView == null) { return; } @SuppressLint("ResourceType") Movie movie = Movie.decodeStream(mContext.getResources().openRawResource(R.drawable.null_data_icon)); MovieDrawable drawable = new MovieDrawable(movie); imageView.setImageDrawable(drawable); drawable.start(); } catch (Exception ignored) { } } } app/src/main/res/drawable/null_data_icon.gif
app/src/main/res/layout/activity_message_info.xml
@@ -50,7 +50,7 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="18.5dp" android:layout_marginTop="@dimen/dp_32" android:orientation="vertical" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -62,7 +62,7 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/dp_14" /> android:layout_height="@dimen/dp_31" /> <include android:id="@+id/message_info_alarm_device_in" @@ -70,7 +70,7 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/dp_14" /> android:layout_height="@dimen/dp_31" /> <include android:id="@+id/message_info_alarm_range_in" @@ -78,7 +78,7 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/dp_14" /> android:layout_height="@dimen/dp_31" /> <include android:id="@+id/message_info_power_station_location_in" @@ -86,7 +86,7 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/dp_14" /> android:layout_height="@dimen/dp_31" /> <include android:id="@+id/message_info_alarm_time_in" @@ -94,7 +94,7 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/dp_14" /> android:layout_height="@dimen/dp_31" /> </LinearLayout> app/src/main/res/layout/fragment_house_list.xml
@@ -130,19 +130,18 @@ android:paddingBottom="@dimen/dp_16" /> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> <TextView android:id="@+id/null_list_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="数据为空,赶快创建一个吧" android:textColor="@color/text_90000000" android:textSize="@dimen/text_14" android:visibility="gone" <!--没有数据显示样式--> <include android:id="@+id/null_data_ic" layout="@layout/null_data_view" android:layout_width="match_parent" android:layout_height="224dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" android:visibility="gone" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/fragment_nascent_message.xml
@@ -8,8 +8,8 @@ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:id="@+id/message_nascent_srl" android:layout_width="match_parent" android:layout_height="match_parent" > android:layout_height="match_parent"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/message_nascent_recyclerview" android:layout_width="match_parent" @@ -18,4 +18,16 @@ android:paddingBottom="@dimen/dp_16" /> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> <!--没有数据显示样式--> <include android:id="@+id/null_data_ic" layout="@layout/null_data_view" android:layout_width="match_parent" android:layout_height="224dp" android:layout_marginTop="183dp" android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/fragment_recover_message.xml
@@ -17,6 +17,17 @@ android:clipToPadding="false" android:paddingBottom="@dimen/dp_16" /> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> <!--没有数据显示样式--> <include android:id="@+id/null_data_ic" layout="@layout/null_data_view" android:layout_width="match_parent" android:layout_height="224dp" android:layout_marginTop="183dp" android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/home_bottom_line.xml
@@ -2,8 +2,7 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="0dp" android:layout_height="@dimen/dp_49" android:layout_weight="1" > android:layout_weight="1"> <ImageView android:id="@+id/icon_iv" @@ -22,15 +21,18 @@ android:layout_marginTop="@dimen/dp_2" android:textColor="@color/text_90000000" android:textSize="@dimen/text_10" /> <TextView android:id="@+id/red_tv" android:layout_width="@dimen/dp_8" android:layout_height="@dimen/dp_8" android:id="@+id/red_count_tv" android:layout_width="@dimen/dp_16" android:layout_height="@dimen/dp_16" android:layout_alignStart="@+id/icon_iv" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="4.5dp" android:background="@drawable/red_font" android:layout_alignEnd="@+id/icon_iv" android:layout_alignTop="@+id/icon_iv" android:visibility="gone" /> android:textColor="@color/text_FFFFFFFF" android:textSize="11sp" android:visibility="gone" /> <!--加大点击热区--> <TextView android:id="@+id/click_tv" app/src/main/res/layout/null_data_view.xml
New file @@ -0,0 +1,31 @@ <?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="224dp"> <ImageView android:id="@+id/null_data_gif_animation_iv" android:layout_width="289.5dp" android:layout_height="189.5dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:ignore="MissingConstraints" /> <TextView android:id="@+id/null_data_tv" android:layout_width="match_parent" android:layout_height="22.5dp" android:layout_marginTop="11.5dp" android:gravity="center" android:text="数据为空,赶快创建一个吧" android:textColor="@color/text_7C8590" android:textSize="@dimen/text_16" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/null_data_gif_animation_iv" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/values-en/strings.xml
@@ -82,6 +82,7 @@ <string name="my_power_station_malfunction">Malfunction</string> <string name="my_power_station_operation">Operating</string> <string name="my_power_station_await">Standby</string> <string name="my_power_station_data_null">Data is empty, create one now!</string> <!--设备--> <string name="device_manual_connection">Manual connect</string> @@ -102,6 +103,7 @@ <string name="message_alarm_details_time">Alarm time</string> <string name="message_alarm_details_back">Back</string> <string name="message_alarm_details_resolved">Solved</string> <string name="message_alarm_data_null">No alarm</string> <!--我的--> app/src/main/res/values-zh/strings.xml
@@ -82,6 +82,7 @@ <string name="my_power_station_malfunction">故障</string> <string name="my_power_station_operation">运行</string> <string name="my_power_station_await">待机</string> <string name="my_power_station_data_null">数据为空,赶快创建一个吧!</string> <!--设备--> <string name="device_manual_connection">手动连接</string> @@ -102,6 +103,7 @@ <string name="message_alarm_details_time">报警时间</string> <string name="message_alarm_details_back">返回</string> <string name="message_alarm_details_resolved">已解决</string> <string name="message_alarm_data_null">暂无报警</string> <!--我的--> app/src/main/res/values/strings.xml
@@ -82,6 +82,7 @@ <string name="my_power_station_malfunction">故障</string> <string name="my_power_station_operation">运行</string> <string name="my_power_station_await">待机</string> <string name="my_power_station_data_null">数据为空,赶快创建一个吧!</string> <!--设备--> <string name="device_manual_connection">手动连接</string> @@ -102,6 +103,7 @@ <string name="message_alarm_details_time">报警时间</string> <string name="message_alarm_details_back">返回</string> <string name="message_alarm_details_resolved">已解决</string> <string name="message_alarm_data_null">暂无报警</string> <!--我的--> @@ -206,4 +208,6 @@ <string name="system_positioning_switch">需要打开系统定位开关,否则取法获取位置信息.</string> </resources>