From f1f144ec32e1b244e0bb838dea6845e1a0ed8aac Mon Sep 17 00:00:00 2001 From: Lihongda <963140097@qq.com> Date: Fri, 8 Mar 2024 23:16:48 +0800 Subject: [PATCH] =?UTF-8?q?UI=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/newbind/BottomChoiceDialog.java | 32 +++++++ .../ifish/activity/newbind/CheckWifiUtil.java | 12 ++- .../newbind/NewBindDeviceActivity.java | 74 ++++++++------- .../main/java/com/ifish/utils/ClickUtil.java | 24 +++++ .../dialog_choose_connect_wifi_type.xml | 91 ++++++++++++------- 5 files changed, 165 insertions(+), 68 deletions(-) create mode 100644 iFish7/src/main/java/com/ifish/utils/ClickUtil.java diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/BottomChoiceDialog.java b/iFish7/src/main/java/com/ifish/activity/newbind/BottomChoiceDialog.java index 809fef28b..1ee732539 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/BottomChoiceDialog.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/BottomChoiceDialog.java @@ -8,6 +8,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -35,6 +36,8 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi return dialog; } + public static ConnectType curType; + public static BottomChoiceDialog newInstance() { if (bottomChoiceDialog == null) { bottomChoiceDialog = new BottomChoiceDialog(); @@ -46,6 +49,9 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi private TextView tvAP; private TextView tvAirKiss; private TextView tvCancel; + private LinearLayout lineAirKiss; + private LinearLayout lineSmartConfig; + private LinearLayout lineAP; @Nullable @Override @@ -56,11 +62,16 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi tvAP = (TextView) view.findViewById(R.id.tv_AP); tvAirKiss = (TextView) view.findViewById(R.id.tv_airkiss); tvCancel = (TextView) view.findViewById(R.id.tv_cancel); + lineAirKiss = (LinearLayout) view.findViewById(R.id.line_airKiss); + lineSmartConfig = (LinearLayout) view.findViewById(R.id.line_smartConfig); + lineAP = (LinearLayout) view.findViewById(R.id.line_AP); tvSmartConfig.setOnClickListener(this); tvAP.setOnClickListener(this); tvAirKiss.setOnClickListener(this); tvCancel.setOnClickListener(this); + + switchChooseUI(curType); return view; } @@ -123,6 +134,27 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi } } + public void switchChooseUI(ConnectType curConnectType) { + lineAirKiss.setVisibility(View.VISIBLE); + lineAP.setVisibility(View.VISIBLE); + lineSmartConfig.setVisibility(View.VISIBLE); + switch (curConnectType) { + case SmartConfig: + // 处理SmartConfig逻辑 + lineSmartConfig.setVisibility(View.GONE); + break; + case APConnect: + // 处理APConnect逻辑 + lineAP.setVisibility(View.GONE); + break; + case AirKiss: + lineAirKiss.setVisibility(View.GONE); + // 处理AirKiss逻辑 + break; + } + } + + public interface OnChooseClickListener { void smartConfigConnect();//智能连接 diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/CheckWifiUtil.java b/iFish7/src/main/java/com/ifish/activity/newbind/CheckWifiUtil.java index c473927ef..c184e0fbe 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/CheckWifiUtil.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/CheckWifiUtil.java @@ -11,6 +11,7 @@ import android.text.TextUtils; import android.view.View; import android.view.Window; import android.widget.Button; +import android.widget.ProgressBar; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; @@ -183,7 +184,7 @@ public class CheckWifiUtil { return wifissid; } - public void checkCurAP(AppCompatActivity activity, String wifiName, String wifiPwd, String devicetype) { + public void checkCurAP(AppCompatActivity activity, String wifiName, String wifiPwd, String devicetype, ProgressBar progressLoading, TextView tvApConnectDevice) { String wifissid = getCurWifiSsid(activity); if (TextUtils.isEmpty(wifissid)) { wifissid = ""; @@ -194,6 +195,7 @@ public class CheckWifiUtil { if ("camera".equals(devicetype)) { if (!wifissid.startsWith("GW_AP_")) { ToastUtil.show(activity.getApplicationContext(), "请先连接摄像头设备热点"); + resetAPLayout(progressLoading,tvApConnectDevice); return; } //todo 摄像头 @@ -201,6 +203,7 @@ public class CheckWifiUtil { } else if ("pet".equals(devicetype)) { if (!wifissid.startsWith("ifish-")) { ToastUtil.show(activity.getApplicationContext(), "请先连接宠物笼设备热点"); + resetAPLayout(progressLoading,tvApConnectDevice); return; } //todo 宠物 @@ -208,6 +211,7 @@ public class CheckWifiUtil { } else { if (!wifissid.startsWith("ifish-")) { ToastUtil.show(activity.getApplicationContext(), "请先连接设备热点"); + resetAPLayout(progressLoading,tvApConnectDevice); return; } //todo 设备 @@ -216,6 +220,7 @@ public class CheckWifiUtil { if (wifissid.equals(wifiName)) { ToastUtil.show(activity.getApplicationContext(), "WiFi名称不能和热点名称一致"); + resetAPLayout(progressLoading,tvApConnectDevice); return; } @@ -227,4 +232,9 @@ public class CheckWifiUtil { } + private void resetAPLayout(ProgressBar progressLoading, TextView tvApConnectDevice) { + progressLoading.setVisibility(View.GONE); + tvApConnectDevice.setVisibility(View.VISIBLE); + } + } diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java b/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java index 5a0596a9a..ffe469969 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java @@ -27,6 +27,7 @@ import com.ifish.activity.BindTankPetActivity; import com.ifish.activity.R; import com.ifish.basebean.ConnectMessageEvent; import com.ifish.utils.AnimationUtil; +import com.ifish.utils.ClickUtil; import com.ifish.utils.KVUtil; import com.ifish.utils.ToastUtil; import com.ifish.utils.WifiAdmin; @@ -57,9 +58,6 @@ public class NewBindDeviceActivity extends AppCompatActivity { private TextView tvApConnectDevice; - //选择连接类型的底部弹窗 - private BottomChoiceDialog bottomChoiceDialog; - //----------------变量区--------------------// private ConnectType curConnectType;//当前选择的连接类型 APConnect,SmartConfig,AirKiss @@ -70,6 +68,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { private CheckWifiUtil checkWifiUtil; private AirKissUtil airKissUtil; private String bssid = ""; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -113,12 +112,16 @@ public class NewBindDeviceActivity extends AppCompatActivity { private void initTitle() { TextView title_text = (TextView) findViewById(R.id.title_text); title_text.setText("连接设备"); + findViewById(R.id.title_img).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } private void initView() { - bottomChoiceDialog = BottomChoiceDialog.newInstance(); - tvConnectType = (TextView) findViewById(R.id.tv_connect_type); frameAp = (FrameLayout) findViewById(R.id.frame_ap); @@ -139,31 +142,36 @@ public class NewBindDeviceActivity extends AppCompatActivity { tvOtherConnect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (bottomChoiceDialog != null && !bottomChoiceDialog.isAdded()) { - bottomChoiceDialog.show(getSupportFragmentManager(), "选择连接类型"); + if (ClickUtil.isFastDoubleClick()) { + LogUtils.d("LHD 防止快速点击"); + return; } - } - }); - bottomChoiceDialog.setOnChooseClickListener(new BottomChoiceDialog.OnChooseClickListener() { - @Override - public void smartConfigConnect() { - //智能连接逻辑 - curConnectType = ConnectType.SmartConfig; - switchUIConnectType(curConnectType); - } + //选择连接类型的底部弹窗 + BottomChoiceDialog.curType = curConnectType; + BottomChoiceDialog bottomChoiceDialog = BottomChoiceDialog.newInstance(); + bottomChoiceDialog.show(getSupportFragmentManager(), "选择连接类型"); + bottomChoiceDialog.setOnChooseClickListener(new BottomChoiceDialog.OnChooseClickListener() { + @Override + public void smartConfigConnect() { + //智能连接逻辑 + curConnectType = ConnectType.SmartConfig; + switchUIConnectType(curConnectType); + } - @Override - public void APConnect() { - //AP连接逻辑 - curConnectType = ConnectType.APConnect; - switchUIConnectType(curConnectType); - } + @Override + public void APConnect() { + //AP连接逻辑 + curConnectType = ConnectType.APConnect; + switchUIConnectType(curConnectType); + } - @Override - public void AirKissConnect() { - //airKiss逻辑 - curConnectType = ConnectType.AirKiss; - switchUIConnectType(curConnectType); + @Override + public void AirKissConnect() { + //airKiss逻辑 + curConnectType = ConnectType.AirKiss; + switchUIConnectType(curConnectType); + } + }); } }); tvClickButton.setOnClickListener(new View.OnClickListener() { @@ -233,7 +241,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { switch (connectType) { case SmartConfig: // 处理SmartConfig逻辑 - tvConnectType.setText("智能连网"); + tvConnectType.setText("快捷连网"); tvClickButton.setText("确定"); tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)\n2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁,再点确定按钮。\n3、如多次尝试一键连网都不成功,可切换其他连网方式,每次重新连接时插座需断一次电然后重新复位连接。"); break; @@ -245,8 +253,8 @@ public class NewBindDeviceActivity extends AppCompatActivity { ToastUtil.show(this, "切换到AP连网"); break; case AirKiss: - tvConnectType.setText("AirKiss连网"); - ToastUtil.show(this, "AirKiss连网"); + tvConnectType.setText("一键连网"); + ToastUtil.show(this, "一键连网"); tvClickButton.setText("确定"); tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)\n2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁,再点确定按钮。\n3、如多次尝试一键连网都不成功,可切换其他连网方式,每次重新连接时插座需断一次电然后重新复位连接。"); // 处理AirKiss逻辑 @@ -284,7 +292,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { intent.putExtra("title", "连接热流器"); } //新页面跳转 - intent.putExtra("wifiPassword",pwd); + intent.putExtra("wifiPassword", pwd); ToastUtil.show(NewBindDeviceActivity.this, "开始SmartConfig连网..."); startActivity(intent); AnimationUtil.startAnimation(NewBindDeviceActivity.this); @@ -297,7 +305,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { case AirKiss: // 处理AirKiss逻辑 ToastUtil.show(NewBindDeviceActivity.this, "开始AirKiss连网..."); - airKissUtil.connectDeviceByAirKiss(this,ssid,bssid,pwd); + airKissUtil.connectDeviceByAirKiss(this, ssid, bssid, pwd); break; } } @@ -321,7 +329,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { if (isJump) { String wifiName = tvWifiName.getText().toString(); String wifiPwd = tvWifiPwd.getText().toString(); - checkWifiUtil.checkCurAP(this, wifiName, wifiPwd, devicetype); + checkWifiUtil.checkCurAP(this, wifiName, wifiPwd, devicetype,progressLoading,tvApConnectDevice); isJump = false; } } diff --git a/iFish7/src/main/java/com/ifish/utils/ClickUtil.java b/iFish7/src/main/java/com/ifish/utils/ClickUtil.java new file mode 100644 index 000000000..4440e8058 --- /dev/null +++ b/iFish7/src/main/java/com/ifish/utils/ClickUtil.java @@ -0,0 +1,24 @@ +package com.ifish.utils; + +import android.view.View; + +public class ClickUtil { + + private static long lastClickTime; + + public static boolean isFastDoubleClick() { + return isFastDoubleClick(300); + } + + public static boolean isFastDoubleClick(long interval) { + long time = System.currentTimeMillis(); + long timeD = time - lastClickTime; + if (0 < timeD && timeD < interval) { + lastClickTime = time; + return true; + } + lastClickTime = time; + return false; + } + +} diff --git a/iFish7/src/main/res/layout/dialog_choose_connect_wifi_type.xml b/iFish7/src/main/res/layout/dialog_choose_connect_wifi_type.xml index e85578fff..d9653b7ed 100644 --- a/iFish7/src/main/res/layout/dialog_choose_connect_wifi_type.xml +++ b/iFish7/src/main/res/layout/dialog_choose_connect_wifi_type.xml @@ -5,54 +5,77 @@ android:background="@drawable/white_radius10" android:orientation="vertical"> - + android:layout_height="wrap_content" + android:orientation="vertical"> - - + - + + - + android:layout_height="wrap_content" + android:orientation="vertical"> - + + + + + + android:layout_height="wrap_content" + android:orientation="vertical"> + + + + + +