mirror of
https://github.com/niushuai233/DevControl.git
synced 2024-10-27 22:43:20 +08:00
feat: icon选择页面
This commit is contained in:
parent
8f885a045e
commit
5bb6f8b609
@ -13,6 +13,7 @@ import cc.niushuai.project.devcontrol.base.util.ActivityUtil;
|
|||||||
import cc.niushuai.project.devcontrol.base.util.GlobalVariables;
|
import cc.niushuai.project.devcontrol.base.util.GlobalVariables;
|
||||||
import cc.niushuai.project.devcontrol.base.util.Keys;
|
import cc.niushuai.project.devcontrol.base.util.Keys;
|
||||||
import cc.niushuai.project.devcontrol.base.util.UiUtil;
|
import cc.niushuai.project.devcontrol.base.util.UiUtil;
|
||||||
|
import cc.niushuai.project.devcontrol.ui.common.IconSelectDialogFragment;
|
||||||
import cc.niushuai.project.devcontrol.vo.DeviceInfo;
|
import cc.niushuai.project.devcontrol.vo.DeviceInfo;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
||||||
@ -147,6 +148,39 @@ public abstract class BaseActivity extends AppCompatActivity {
|
|||||||
findViewById(R.id.activity_title_more_set).setOnClickListener(onClickListener);
|
findViewById(R.id.activity_title_more_set).setOnClickListener(onClickListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为icon选择绑定点击事件
|
||||||
|
*
|
||||||
|
* @author niushuai
|
||||||
|
* @date: 2022/10/25 16:55
|
||||||
|
*/
|
||||||
|
protected void activityIconSelectClickListener() {
|
||||||
|
findViewById(R.id.device_add_select_icon).setOnClickListener(view -> {
|
||||||
|
IconSelectDialogFragment iconSelectDialogFragment = new IconSelectDialogFragment();
|
||||||
|
iconSelectDialogFragment.show(getSupportFragmentManager(), IconSelectDialogFragment.class.getName());
|
||||||
|
|
||||||
|
getSupportFragmentManager().setFragmentResultListener(IconSelectDialogFragment.class.getSimpleName(),
|
||||||
|
this, (requestKey, result) -> {
|
||||||
|
int iconResId = result.getInt(requestKey + Keys.ID);
|
||||||
|
System.out.println(iconResId);
|
||||||
|
device.setIconId(iconResId);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为icon选择绑定点击事件
|
||||||
|
*
|
||||||
|
* @param onClickListener
|
||||||
|
* @author niushuai
|
||||||
|
* @date: 2022/10/25 16:55
|
||||||
|
*/
|
||||||
|
protected void activityIconSelectClickListener(View.OnClickListener onClickListener) {
|
||||||
|
findViewById(R.id.device_add_select_icon).setOnClickListener(onClickListener);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重建缓存
|
* 重建缓存
|
||||||
*
|
*
|
||||||
|
@ -0,0 +1,108 @@
|
|||||||
|
package cc.niushuai.project.devcontrol.ui.common;
|
||||||
|
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.AdapterView;
|
||||||
|
import android.widget.GridView;
|
||||||
|
import android.widget.SimpleAdapter;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.fragment.app.DialogFragment;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cc.niushuai.project.devcontrol.R;
|
||||||
|
import cc.niushuai.project.devcontrol.base.enums.IconEnum;
|
||||||
|
import cc.niushuai.project.devcontrol.databinding.LayoutIconSelectBinding;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* icon选择弹窗
|
||||||
|
*
|
||||||
|
* @author niushuai233
|
||||||
|
* @date 2022/10/25 16:51
|
||||||
|
*/
|
||||||
|
public class IconSelectDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
|
private LayoutIconSelectBinding binding;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
binding = LayoutIconSelectBinding.inflate(getLayoutInflater());
|
||||||
|
|
||||||
|
this.init();
|
||||||
|
|
||||||
|
return binding.getRoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化入口
|
||||||
|
*
|
||||||
|
* @author niushuai
|
||||||
|
* @date: 2022/10/25 17:21
|
||||||
|
*/
|
||||||
|
private void init() {
|
||||||
|
|
||||||
|
this.initIconList();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载icon图标列表
|
||||||
|
*
|
||||||
|
* @author niushuai
|
||||||
|
* @date: 2022/10/25 17:22
|
||||||
|
*/
|
||||||
|
private void initIconList() {
|
||||||
|
|
||||||
|
GridView iconListGridView = binding.iconListGridView;
|
||||||
|
|
||||||
|
SimpleAdapter simpleAdapter = new SimpleAdapter(getContext(), getIconList(), R.layout.layout_icon_select,
|
||||||
|
new String[]{"icon_select_list_key", "icon_select_list_icon", "icon_select_list_text"},
|
||||||
|
new int[]{R.id.icon_select_list_key, R.id.icon_select_list_icon, R.id.icon_select_list_text}
|
||||||
|
);
|
||||||
|
|
||||||
|
iconListGridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
|
||||||
|
iconListGridView.setOnItemClickListener(this::iconListClickListener);
|
||||||
|
iconListGridView.setAdapter(simpleAdapter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void iconListClickListener(AdapterView<?> parent, View view, int position, long id) {
|
||||||
|
|
||||||
|
// 跳转到相应的activity
|
||||||
|
String iconId = ((TextView) view.findViewById(R.id.device_type_list_key)).getText().toString();
|
||||||
|
|
||||||
|
// 关闭弹出框
|
||||||
|
this.dismiss();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<? extends Map<String, ?>> getIconList() {
|
||||||
|
IconEnum[] allIcon = IconEnum.values();
|
||||||
|
|
||||||
|
List<HashMap<String, Object>> gvData = new ArrayList<>(allIcon.length);
|
||||||
|
|
||||||
|
for (IconEnum icon : allIcon) {
|
||||||
|
HashMap<String, Object> item = new HashMap<>(3);
|
||||||
|
item.put("icon_select_list_key", icon.getIconIdDark());
|
||||||
|
item.put("icon_select_list_icon", icon.getIconIdDark());
|
||||||
|
item.put("icon_select_list_text", icon.getDesc());
|
||||||
|
gvData.add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
return gvData;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismiss(DialogInterface dialog) {
|
||||||
|
super.onDismiss(dialog);
|
||||||
|
binding = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package cc.niushuai.project.devcontrol.ui.common;
|
||||||
|
|
||||||
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
import androidx.lifecycle.ViewModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @author niushuai233
|
||||||
|
* @date 2022/10/25 17:11
|
||||||
|
*/
|
||||||
|
public class IconSelectViewModel extends ViewModel {
|
||||||
|
|
||||||
|
private final MutableLiveData<Integer> iconResId = new MutableLiveData<>();
|
||||||
|
|
||||||
|
public MutableLiveData<Integer> getIconResId() {
|
||||||
|
return iconResId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIconResId(Integer val) {
|
||||||
|
iconResId.setValue(val);
|
||||||
|
}
|
||||||
|
}
|
@ -17,6 +17,7 @@ import cc.niushuai.project.devcontrol.base.util.ToastUtil;
|
|||||||
import cc.niushuai.project.devcontrol.databinding.ActivityDeviceAddPowerSwitchBinding;
|
import cc.niushuai.project.devcontrol.databinding.ActivityDeviceAddPowerSwitchBinding;
|
||||||
import cc.niushuai.project.devcontrol.db.DB;
|
import cc.niushuai.project.devcontrol.db.DB;
|
||||||
import cc.niushuai.project.devcontrol.db.entity.Device;
|
import cc.niushuai.project.devcontrol.db.entity.Device;
|
||||||
|
import cc.niushuai.project.devcontrol.ui.common.IconSelectDialogFragment;
|
||||||
import cc.niushuai.project.devcontrol.ui.powerswitch.PowerSwitchActivity;
|
import cc.niushuai.project.devcontrol.ui.powerswitch.PowerSwitchActivity;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@ -56,6 +57,13 @@ public class DeviceAddPowerSwitchActivity extends BaseActivity {
|
|||||||
this.activityButtonBackClickListener(this);
|
this.activityButtonBackClickListener(this);
|
||||||
// 保存设备信息事件
|
// 保存设备信息事件
|
||||||
this.activityButtonMoreSetClickListener(this::confirm4SaveDataClickListener);
|
this.activityButtonMoreSetClickListener(this::confirm4SaveDataClickListener);
|
||||||
|
// icon选择器点击事件
|
||||||
|
this.activityIconSelectClickListener();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void iconSelectClickListener(View view) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
33
app/src/main/res/layout/layout_icon_select.xml
Normal file
33
app/src/main/res/layout/layout_icon_select.xml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="500dp"
|
||||||
|
tools:ignore="MissingConstraints">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/icon_select_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/main_bg_color"
|
||||||
|
android:text="@string/icon_select_title"
|
||||||
|
android:textSize="24dp" />
|
||||||
|
|
||||||
|
<GridView
|
||||||
|
android:id="@+id/icon_list_gridView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_below="@id/icon_select_layout"
|
||||||
|
android:background="@color/main_bg_color"
|
||||||
|
android:horizontalSpacing="12dp"
|
||||||
|
android:numColumns="2"
|
||||||
|
android:paddingTop="5dp"
|
||||||
|
android:paddingBottom="5dp"
|
||||||
|
android:verticalSpacing="12dp" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
59
app/src/main/res/layout/layout_icon_select_item.xml
Normal file
59
app/src/main/res/layout/layout_icon_select_item.xml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="100dp"
|
||||||
|
android:layout_marginLeft="10dp"
|
||||||
|
android:layout_marginRight="10dp"
|
||||||
|
android:clickable="false"
|
||||||
|
android:longClickable="false"
|
||||||
|
android:contextClickable="false"
|
||||||
|
>
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
app:cardCornerRadius="12dp"
|
||||||
|
>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginLeft="10dp"
|
||||||
|
android:layout_marginRight="10dp"
|
||||||
|
>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@id/icon_select_list_key"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@id/icon_select_list_icon"
|
||||||
|
android:layout_width="55dp"
|
||||||
|
android:layout_height="55dp"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
app:srcCompat="@drawable/ic_device_type_custom" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@id/icon_select_list_text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="25dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:layout_below="@id/icon_select_list_icon"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:shadowColor="#000000"
|
||||||
|
android:shadowDx="0.3"
|
||||||
|
android:shadowDy="0.3"
|
||||||
|
android:shadowRadius="0.3"
|
||||||
|
android:text="TextView"
|
||||||
|
android:textSize="12dp" />
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
</RelativeLayout>
|
@ -9,6 +9,11 @@
|
|||||||
<item name="activity_title_description" type="id"/>
|
<item name="activity_title_description" type="id"/>
|
||||||
<item name="activity_title_more_set" type="id"/>
|
<item name="activity_title_more_set" type="id"/>
|
||||||
|
|
||||||
|
<item name="icon_select_list" type="id"/>
|
||||||
|
<item name="icon_select_list_key" type="id"/>
|
||||||
|
<item name="icon_select_list_text" type="id"/>
|
||||||
|
<item name="icon_select_list_icon" type="id"/>
|
||||||
|
|
||||||
<!--common end-->
|
<!--common end-->
|
||||||
|
|
||||||
<!--首页 start-->
|
<!--首页 start-->
|
||||||
|
@ -37,6 +37,9 @@
|
|||||||
<string name="device_add_type_select">选择设备类型</string>
|
<string name="device_add_type_select">选择设备类型</string>
|
||||||
<!--添加设备 end-->
|
<!--添加设备 end-->
|
||||||
|
|
||||||
|
<!--添加icon start-->
|
||||||
|
<string name="icon_select_title">选择图标</string>
|
||||||
|
<!--添加icon end-->
|
||||||
|
|
||||||
<!--开关设置页面 start-->
|
<!--开关设置页面 start-->
|
||||||
<string name="power_switch_set_iconChange">更换图标</string>
|
<string name="power_switch_set_iconChange">更换图标</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user