From 791f82dc46e14491116a87bd4aa84ade011ab4c6 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期一, 15 一月 2024 14:30:58 +0800 Subject: [PATCH] 2024年01月15日14:30:41 --- app/src/main/res/layout/activity_message_info.xml | 12 app/src/main/java/com/hdl/photovoltaic/broadcast/NetworkChangeReceiver.java | 2 app/src/main/res/layout/null_data_view.xml | 31 +++ app/src/main/res/values/strings.xml | 4 app/src/main/java/com/hdl/photovoltaic/widget/MovieDrawable.java | 75 +++++++++ app/src/main/java/com/hdl/photovoltaic/ui/message/RecoverMessageFragment.java | 42 ++++ app/src/main/res/drawable/null_data_icon.gif | 0 app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java | 25 ++ app/src/main/java/com/hdl/photovoltaic/ui/adapter/LanguageAdapter.java | 8 app/src/main/res/layout/fragment_nascent_message.xml | 16 + app/src/main/res/layout/home_bottom_line.xml | 20 +- app/src/main/res/layout/fragment_recover_message.xml | 11 + app/src/main/res/layout/fragment_house_list.xml | 19 +- app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java | 16 - app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java | 2 app/src/main/res/values-zh/strings.xml | 2 app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java | 102 +++++++++++- app/src/main/res/values-en/strings.xml | 2 app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java | 44 +++++ app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java | 22 ++ app/build.gradle | 4 21 files changed, 393 insertions(+), 66 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 754b6ef..57003e8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,7 +28,7 @@ minSdk 23 targetSdk 30 versionCode 1 - versionName "1.1.3"//鐗堟湰瑙勫垯1.1鏄骇鍝佸姛鑳借凯浠g敤鐨�,鏈�鍚庝竴浣�1鏄垜浠慨澶峛ug鐢ㄧ殑 + versionName "1.2.1"//鐗堟湰瑙勫垯1.2鏄骇鍝佸姛鑳借凯浠g敤鐨�,鏈�鍚庝竴浣�1鏄垜浠慨澶峛ug鐢ㄧ殑 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' diff --git a/app/src/main/java/com/hdl/photovoltaic/broadcast/NetworkChangeReceiver.java b/app/src/main/java/com/hdl/photovoltaic/broadcast/NetworkChangeReceiver.java index aed6caf..68f3b99 100644 --- a/app/src/main/java/com/hdl/photovoltaic/broadcast/NetworkChangeReceiver.java +++ b/app/src/main/java/com/hdl/photovoltaic/broadcast/NetworkChangeReceiver.java @@ -21,7 +21,7 @@ @Override public void onReceive(Context context, Intent intent) { - //todo 宸茬粡鍦∟etworkUtils閲岄潰瀹炵幇 + //todo 宸茬粡杞湪NetworkUtils閲岄潰瀹炵幇 // ConnectivityManager connectionManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo(); // if (networkInfo != null && networkInfo.isAvailable()) { diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java index 669d131..68203ce 100644 --- a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java +++ b/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"; //鑾峰彇娑堟伅璇︽儏 diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java index 00b8645..369ef0d 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java +++ b/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); + + } + } } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/LanguageAdapter.java b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/LanguageAdapter.java index 74423c9..ab1239d 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/LanguageAdapter.java +++ b/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) { } } }); diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java index 8efa489..c13e282 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java +++ b/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("姝e湪鐐瑰嚮銆愭秷鎭��"); - } - } 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); + } } } - - } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java index 3388a68..b119560 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java +++ b/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); + } } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/message/RecoverMessageFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/message/RecoverMessageFragment.java index 08fa6d6..0aad188 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/message/RecoverMessageFragment.java +++ b/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); + } } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java index 3a5c20c..cd222e3 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java +++ b/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); } diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java index cfeb8b5..c76747d 100644 --- a/app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java +++ b/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鎴栬�単if鐨剈rl閾炬帴) + .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); + } + + } diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/MovieDrawable.java b/app/src/main/java/com/hdl/photovoltaic/widget/MovieDrawable.java new file mode 100644 index 0000000..78f1c8b --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/widget/MovieDrawable.java @@ -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) { + } + } + +} + + diff --git a/app/src/main/res/drawable/null_data_icon.gif b/app/src/main/res/drawable/null_data_icon.gif new file mode 100644 index 0000000..828b34a --- /dev/null +++ b/app/src/main/res/drawable/null_data_icon.gif Binary files differ diff --git a/app/src/main/res/layout/activity_message_info.xml b/app/src/main/res/layout/activity_message_info.xml index fb2b121..988c9d4 100644 --- a/app/src/main/res/layout/activity_message_info.xml +++ b/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> diff --git a/app/src/main/res/layout/fragment_house_list.xml b/app/src/main/res/layout/fragment_house_list.xml index cfeb8f6..0722160 100644 --- a/app/src/main/res/layout/fragment_house_list.xml +++ b/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> diff --git a/app/src/main/res/layout/fragment_nascent_message.xml b/app/src/main/res/layout/fragment_nascent_message.xml index bed934a..284f7c1 100644 --- a/app/src/main/res/layout/fragment_nascent_message.xml +++ b/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> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_recover_message.xml b/app/src/main/res/layout/fragment_recover_message.xml index cd7964c..c04c8ec 100644 --- a/app/src/main/res/layout/fragment_recover_message.xml +++ b/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> \ No newline at end of file diff --git a/app/src/main/res/layout/home_bottom_line.xml b/app/src/main/res/layout/home_bottom_line.xml index 9c1a7b1..60c05b3 100644 --- a/app/src/main/res/layout/home_bottom_line.xml +++ b/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" diff --git a/app/src/main/res/layout/null_data_view.xml b/app/src/main/res/layout/null_data_view.xml new file mode 100644 index 0000000..24a235e --- /dev/null +++ b/app/src/main/res/layout/null_data_view.xml @@ -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> \ No newline at end of file diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 7775723..80c62a6 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/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> <!--鎴戠殑--> diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 9192895..06fd10a 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/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> <!--鎴戠殑--> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9192895..a31d99b 100644 --- a/app/src/main/res/values/strings.xml +++ b/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> \ No newline at end of file -- Gitblit v1.8.0