From a1d1fb7c44e33c4baeb52964a027932018bc1325 Mon Sep 17 00:00:00 2001
From: Linjiajia <319408893@qq.com>
Date: 星期二, 04 四月 2023 16:35:39 +0800
Subject: [PATCH] 家大事记添加接口、家庭资产、家庭设备
---
app/src/main/res/drawable-xxhdpi/function_notes.png | 0
app/src/main/res/layout/activity_family_assets.xml | 144
app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java | 2
app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java | 27
app/src/main/res/drawable-xxhdpi/function_home_devices.png | 0
app/src/main/res/drawable-xxhdpi/ic_image_delete.png | 0
app/src/main/res/layout/fragment_function.xml | 28
app_base/src/main/java/com/android/app_base/utils/GlideUtil.java | 96
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivityViewModel.java | 42
app/src/main/res/drawable-xhdpi/ic_image_delete.png | 0
app/src/main/res/layout/activity_family_assets_detail.xml | 192
app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java | 4
app_base/src/main/java/com/android/app_base/widget/WrapRecyclerView.java | 485 ++
app_base/src/main/java/com/android/app_base/base/dialog/WaitDialog.java | 40
app/src/main/res/drawable-xhdpi/function_notes.png | 0
app/src/main/java/com/application/zhangshi_app_android/other/MyTitleBarStyle.java | 82
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java | 103
app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java | 10
app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsResponseBean.java | 27
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java | 103
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java | 105
app/src/main/res/layout/layout_drawer.xml | 608 ++
app_base/src/main/res/raw/welcome.json | 1
app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java | 147
app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java | 33
app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java | 126
app_base/src/main/java/com/android/app_base/utils/GlideEngine.java | 106
app/src/main/res/layout/item_image_footer.xml | 22
app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java | 33
app_base/src/main/res/raw/province.json | 5537 +++++++++++++++++++++++++++
app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java | 72
app_base/src/main/java/com/android/app_base/widget/GridSpaceItemDecoration.java | 48
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivityViewModel.java | 137
app/src/main/res/drawable-xhdpi/function_home_devices.png | 0
app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java | 33
app/src/main/res/layout/activity_family_memorabilia_create.xml | 51
app_base/src/main/res/layout/wait_dialog.xml | 43
app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java | 30
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java | 106
app_base/src/main/res/raw/progress.json | 1
app_base/build.gradle | 18
app/src/main/res/drawable-xhdpi/img_data_null.png | 0
app/src/main/res/drawable-xxhdpi/ic_clear.png | 0
app/src/main/res/layout/item_home_devices.xml | 204 +
app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java | 93
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java | 41
app/src/main/res/layout/pop_operate.xml | 89
app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java | 69
app/src/main/res/drawable-xhdpi/ic_clear.png | 0
app/src/main/res/layout/activity_family_memorabilia.xml | 865 ---
app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java | 21
app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java | 4
app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java | 68
app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsBean.java | 47
app_base/src/main/res/raw/loading.json | 1
app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java | 132
app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java | 134
app/src/main/res/layout/item_family_assets.xml | 226 +
app/src/main/java/com/application/zhangshi_app_android/MyApplication.java | 4
app/src/main/res/layout/item_family_memorabilia.xml | 89
app/src/main/AndroidManifest.xml | 64
app/src/main/res/drawable-xxhdpi/img_data_null.png | 0
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java | 99
app/src/main/res/drawable/shape_73fab4cd_solid.xml | 4
app/src/main/res/layout/activity_home_devices.xml | 144
.idea/deploymentTargetDropDown.xml | 13
app_base/src/main/java/com/android/app_base/manager/UserManager.java | 62
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java | 138
app/src/main/res/layout/activity_home_devices_detail.xml | 175
app_base/src/main/java/com/android/app_base/manager/OnPermissionsInterceptListenerImpl.java | 51
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java | 18
app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java | 23
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java | 247
app/src/main/res/layout/pop_search.xml | 256
app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java | 58
app/src/main/java/com/application/zhangshi_app_android/bean/UploadFileResponseBean.java | 52
app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesResponseBean.java | 27
app/src/main/res/layout/item_image.xml | 34
78 files changed, 10,965 insertions(+), 1,229 deletions(-)
diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 7bb4a8e..a74e86f 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -12,17 +12,6 @@
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
- <targetSelectedWithDropDown>
- <Target>
- <type value="QUICK_BOOT_TARGET" />
- <deviceKey>
- <Key>
- <type value="VIRTUAL_DEVICE_PATH" />
- <value value="D:\software\Android\.android\avd\Pixel_API_30.avd" />
- </Key>
- </deviceKey>
- </Target>
- </targetSelectedWithDropDown>
- <timeTargetWasSelectedWithDropDown value="2023-03-28T11:22:31.926040400Z" />
+ <timeTargetWasSelectedWithDropDown value="2023-04-03T09:11:44.626235900Z" />
</component>
</project>
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 67cf41c..41a2a8b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,11 +2,57 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
+ <!-- 缃戠粶鐩稿叧 -->
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+
+ <uses-permission android:name="android.permission.READ_CONTACTS"/>
+
+ <!-- 澶栭儴瀛樺偍 -->
+ <!-- Android 13寮�濮嬶紝濡傛灉浣犵殑搴旂敤targetSdk鎸囧畾鍒颁簡33鎴栦互涓�,READ_EXTERNAL_STORAGE鏉冮檺灏卞畬鍏ㄥけ鍘讳簡浣滅敤,闇�瑕佺粏鍖�-->
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
+ <!--Android 13鐗堟湰閫傞厤锛岀粏鍖栧瓨鍌ㄦ潈闄�,READ_EXTERNAL_STORAGE鏃犳硶鍐嶄娇鐢�-->
+ <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
+ <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
+ <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
+
+ <!-- 闇囧姩鏉冮檺 -->
+ <uses-permission android:name="android.permission.VIBRATE" />
+
+ <!-- 钃濈墮鏉冮檺 -->
+ <uses-permission android:name="android.permission.BLUETOOTH" />
+
+
+ <!-- 鎷嶇収鏉冮檺 -->
+ <uses-permission android:name="android.permission.CAMERA" />
+
+ <!-- 瀹夎鏉冮檺 -->
+ <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+
+ <!-- 瀹氫綅鏉冮檺锛堢敤浜� WebView 瀹氫綅锛�-->
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+
+
+ <queries package="${applicationId}">
+ <intent>
+ <action android:name="android.media.action.IMAGE_CAPTURE">
+
+ </action>
+ </intent>
+ <intent>
+ <action android:name="android.media.action.ACTION_VIDEO_CAPTURE">
+
+ </action>
+ </intent>
+ </queries>
+
<application
android:name=".MyApplication"
android:allowBackup="true"
@@ -60,6 +106,18 @@
<activity
android:name=".ui.function.CreateFamilyProjectActivity"
android:exported="false" />
+ <activity
+ android:name=".ui.function.FamilyAssetsActivity"
+ android:exported="false" />
+ <activity
+ android:name=".ui.function.FamilyAssetsDetailActivity"
+ android:exported="false" />
+ <activity
+ android:name=".ui.function.HomeDevicesActivity"
+ android:exported="false" />
+ <activity
+ android:name=".ui.function.HomeDevicesDetailActivity"
+ android:exported="false" />
</application>
</manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/application/zhangshi_app_android/MyApplication.java b/app/src/main/java/com/application/zhangshi_app_android/MyApplication.java
index 8a03b1c..f19306e 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/MyApplication.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/MyApplication.java
@@ -1,8 +1,8 @@
package com.application.zhangshi_app_android;
import com.android.app_base.base.BaseApplication;
+import com.application.zhangshi_app_android.other.MyTitleBarStyle;
import com.hjq.bar.TitleBar;
-import com.hjq.bar.style.TransparentBarStyle;
//import me.jessyan.autosize.AutoSizeConfig;
@@ -16,6 +16,6 @@
public void onCreate() {
super.onCreate();
// 鍒濆鍖� TitleBar 榛樿鏍峰紡
-// TitleBar.setDefaultStyle(new TransparentBarStyle());
+ TitleBar.setDefaultStyle(new MyTitleBarStyle());
}
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java
new file mode 100644
index 0000000..3e2717a
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java
@@ -0,0 +1,147 @@
+package com.application.zhangshi_app_android.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.Transformation;
+import android.widget.CompoundButton;
+import android.widget.FrameLayout;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.android.app_base.base.BaseConfig;
+import com.android.app_base.base.adapter.BaseRVAdapter;
+import com.android.app_base.manager.AppManager;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.databinding.ItemFamilyAssetsBinding;
+import com.application.zhangshi_app_android.ui.function.CreateFamilyProjectActivity;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivity;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivityViewModel;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 19:52
+ * @desc 瀹跺涵璧勪骇 recyclerView 鐨� adapter
+ */
+public class FamilyAssetsRvAdapter extends BaseRVAdapter<FamilyAssetsBean, ItemFamilyAssetsBinding, FamilyAssetsRvAdapter.ViewHolder> {
+
+ private FamilyAssetsActivityViewModel viewModel;
+
+ public FamilyAssetsRvAdapter(Context context) {
+ super(context);
+ }
+
+ public FamilyAssetsRvAdapter(Context context, FamilyAssetsActivityViewModel viewModel) {
+ super(context);
+ this.viewModel = viewModel;
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.item_family_assets;
+ }
+
+ @Override
+ protected ViewHolder getViewHolder(ItemFamilyAssetsBinding itemBind) {
+ return new ViewHolder(itemBind);
+ }
+
+ @Override
+ protected void onBind(ViewHolder holder, int position) {
+ holder.getBinding().setBean(mDataList.get(position));
+ if (position % 2 != 0){
+ holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
+ }else {
+ holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
+ }
+ holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (holder.isExpended){
+ int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
+ int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
+ int distanceToCollapse = (int) (initialHeight - collapsedHeight);
+
+ Animation a = new Animation() {
+ @Override
+ protected void applyTransformation(float interpolatedTime, Transformation t) {
+ if (interpolatedTime == 1){
+ }
+ holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
+ holder.getBinding().cardView.requestLayout();
+ }
+
+ @Override
+ public boolean willChangeBounds() {
+ return true;
+ }
+ };
+ a.setDuration(500);
+ holder.getBinding().cardView.startAnimation(a);
+ holder.isExpended = false;
+ }else{
+ final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
+ holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
+ int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
+ int distanceToExpand = targetHeight - initialHeight;
+ Animation a = new Animation() {
+ @Override
+ protected void applyTransformation(float interpolatedTime, Transformation t) {
+ if (interpolatedTime == 1){
+ }
+ holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
+ holder.getBinding().cardView.requestLayout();
+ }
+
+ @Override
+ public boolean willChangeBounds() {
+ return true;
+ }
+ };
+ a.setDuration(500);
+ holder.getBinding().cardView.startAnimation(a);
+ holder.isExpended = true;
+ }
+ }
+ });
+ holder.getBinding().layoutContent.setOnClickListener(v -> {
+ AppManager.getAppManager().startActivity(
+ new Intent(getRecyclerView().getContext(), FamilyAssetsDetailActivity.class)
+ .putExtra("bean",mDataList.get(position)));
+ });
+ ImageRvAdapter adapter = new ImageRvAdapter(mContext);
+ holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
+ holder.getBinding().rvImage.setAdapter(adapter);
+ String url = mDataList.get(position).getUrl();
+ if (url == null||url.isEmpty()){
+ return;
+ }
+ List<String> list;
+ if (url.contains(",")){
+ String[] split = url.split(",");
+ list = new ArrayList<>(Arrays.asList(split));
+ }else {
+ list = new ArrayList<>();
+ list.add(url);
+ }
+ adapter.setData(list);
+ }
+
+ public static class ViewHolder extends BaseViewHolder<ItemFamilyAssetsBinding>{
+ private boolean isExpended;
+
+ public ViewHolder(ItemFamilyAssetsBinding binding) {
+ super(binding);
+ }
+ }
+
+}
+
diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java
index 3c84a4b..84c2b42 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java
@@ -10,6 +10,7 @@
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.BaseConfig;
import com.android.app_base.base.adapter.BaseRVAdapter;
@@ -130,17 +131,28 @@
holder.getBinding().cardView.startAnimation(a);
holder.isExpended = true;
}
- holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppManager.getAppManager().startActivity(
- new Intent(getRecyclerView().getContext(), CreateFamilyProjectActivity.class)
- .putExtra(BaseConfig.EXTRA_TYPE,0)
- .putExtra("bean",mDataList.get(position)));
- }
- });
}
});
+ holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ AppManager.getAppManager().startActivity(
+ new Intent(getRecyclerView().getContext(), CreateFamilyProjectActivity.class)
+ .putExtra(BaseConfig.EXTRA_TYPE,0)
+ .putExtra("bean",mDataList.get(position)));
+ }
+ });
+ holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ }
+ });
+ ImageRvAdapter adapter = new ImageRvAdapter(mContext);
+ mDataList.get(position).setUrl(mDataList.get(position).getUrl());
+ adapter.setData(mDataList.get(position).getUrlList());
+ holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
+ holder.getBinding().rvImage.setAdapter(adapter);
}
public void setCheckable(boolean b) {
diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java
new file mode 100644
index 0000000..1b718b0
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java
@@ -0,0 +1,134 @@
+package com.application.zhangshi_app_android.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.Transformation;
+import android.widget.FrameLayout;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.android.app_base.base.adapter.BaseRVAdapter;
+import com.android.app_base.manager.AppManager;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.databinding.ItemFamilyAssetsBinding;
+import com.application.zhangshi_app_android.databinding.ItemHomeDevicesBinding;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivity;
+import com.application.zhangshi_app_android.ui.function.HomeDevicesDetailActivity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 0:20
+ * @desc 瀹跺涵璁惧 recyclerView 鐨� adapter
+ */
+public class HomeDevicesRvAdapter extends BaseRVAdapter<HomeDevicesBean, ItemHomeDevicesBinding, HomeDevicesRvAdapter.ViewHolder>{
+ public HomeDevicesRvAdapter(Context context) {
+ super(context);
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.item_home_devices;
+ }
+
+ @Override
+ protected void onBind(ViewHolder holder, int position) {
+ holder.getBinding().setBean(mDataList.get(position));
+ if (position % 2 != 0){
+ holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
+ }else {
+ holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
+ }
+ holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (holder.isExpended){
+ int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
+ int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
+ int distanceToCollapse = (int) (initialHeight - collapsedHeight);
+
+ Animation a = new Animation() {
+ @Override
+ protected void applyTransformation(float interpolatedTime, Transformation t) {
+ if (interpolatedTime == 1){
+ }
+ holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
+ holder.getBinding().cardView.requestLayout();
+ }
+
+ @Override
+ public boolean willChangeBounds() {
+ return true;
+ }
+ };
+ a.setDuration(500);
+ holder.getBinding().cardView.startAnimation(a);
+ holder.isExpended = false;
+ }else{
+ final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
+ holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
+ int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
+ int distanceToExpand = targetHeight - initialHeight;
+ Animation a = new Animation() {
+ @Override
+ protected void applyTransformation(float interpolatedTime, Transformation t) {
+ if (interpolatedTime == 1){
+ }
+ holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
+ holder.getBinding().cardView.requestLayout();
+ }
+
+ @Override
+ public boolean willChangeBounds() {
+ return true;
+ }
+ };
+ a.setDuration(500);
+ holder.getBinding().cardView.startAnimation(a);
+ holder.isExpended = true;
+ }
+ }
+ });
+ holder.getBinding().layoutContent.setOnClickListener(v -> {
+ AppManager.getAppManager().startActivity(
+ new Intent(getRecyclerView().getContext(), HomeDevicesDetailActivity.class)
+ .putExtra("bean",mDataList.get(position)));
+ });
+ ImageRvAdapter adapter = new ImageRvAdapter(mContext);
+ holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
+ holder.getBinding().rvImage.setAdapter(adapter);
+ String url = mDataList.get(position).getUrl();
+ if (url == null||url.isEmpty()){
+ return;
+ }
+ List<String> list;
+ if (url.contains(",")){
+ String[] split = url.split(",");
+ list = new ArrayList<>(Arrays.asList(split));
+ }else {
+ list = new ArrayList<>();
+ list.add(url);
+ }
+ adapter.setData(list);
+ }
+
+ @Override
+ protected ViewHolder getViewHolder(ItemHomeDevicesBinding itemBind) {
+ return new ViewHolder(itemBind);
+ }
+
+ public static class ViewHolder extends BaseViewHolder<ItemHomeDevicesBinding>{
+ private boolean isExpended;
+
+ public ViewHolder(ItemHomeDevicesBinding binding) {
+ super(binding);
+ }
+ }
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java
new file mode 100644
index 0000000..0893e9f
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java
@@ -0,0 +1,69 @@
+package com.application.zhangshi_app_android.adapter;
+
+import android.content.Context;
+import android.media.Image;
+import android.view.View;
+
+import com.android.app_base.base.adapter.BaseRVAdapter;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.databinding.ItemImageBinding;
+import com.application.zhangshi_app_android.ui.function.CreateFamilyProjectActivityViewModel;
+
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.01. 22:42
+ * @desc
+ */
+public class ImageRvAdapter extends BaseRVAdapter<String, ItemImageBinding, BaseRVAdapter.BaseViewHolder<ItemImageBinding>> {
+
+ private boolean isEdited = false;
+ private CreateFamilyProjectActivityViewModel viewModel;
+ public ImageRvAdapter(Context context) {
+ super(context);
+ }
+
+ public ImageRvAdapter(Context context, CreateFamilyProjectActivityViewModel viewModel) {
+ super(context);
+ this.viewModel = viewModel;
+ }
+ @Override
+ protected int getLayoutId() {
+ return R.layout.item_image;
+ }
+
+ @Override
+ protected void onBind(BaseViewHolder<ItemImageBinding> holder, int position) {
+ holder.getBinding().setUrl(mDataList.get(position));
+ if (isEdited) {
+ holder.getBinding().ivDelete.setVisibility(View.VISIBLE);
+ } else {
+ holder.getBinding().ivDelete.setVisibility(View.GONE);
+ }
+ holder.getBinding().ivDelete.setOnClickListener(v -> {
+ FamilyMemorabiliaBean bean = viewModel.getBeanMutableLiveData().getValue();
+ if (bean!=null){
+ List<String> list = bean.getUrlList();
+ list.remove(position);
+ bean.setUrlList(list);
+ viewModel.getBeanMutableLiveData().postValue(bean);
+ }
+ });
+ }
+
+ @Override
+ protected BaseViewHolder<ItemImageBinding> getViewHolder(ItemImageBinding itemBind) {
+ return new BaseViewHolder<>(itemBind);
+ }
+
+ public boolean isEdited() {
+ return isEdited;
+ }
+
+ public void setIsEdited(boolean edited) {
+ isEdited = edited;
+ notifyItemRangeChanged(0,getItemCount());
+ }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsBean.java
new file mode 100644
index 0000000..afdddcb
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsBean.java
@@ -0,0 +1,47 @@
+package com.application.zhangshi_app_android.bean;
+
+import java.io.Serializable;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 19:54
+ * @desc 瀹舵棌璧勪骇
+ */
+public class FamilyAssetsBean implements Serializable {
+ private String address;
+ private String createTime;
+ private String holder;
+ private long id;
+ private String location;
+ private String remark;
+ private String title;
+ private String type;
+ private String url;
+
+ public String getAddress() { return address; }
+ public void setAddress(String value) { this.address = value; }
+
+ public String getCreateTime() { return createTime; }
+ public void setCreateTime(String value) { this.createTime = value; }
+
+ public String getHolder() { return holder; }
+ public void setHolder(String value) { this.holder = value; }
+
+ public long getId() { return id; }
+ public void setId(long value) { this.id = value; }
+
+ public String getLocation() { return location; }
+ public void setLocation(String value) { this.location = value; }
+
+ public String getRemark() { return remark; }
+ public void setRemark(String value) { this.remark = value; }
+
+ public String getTitle() { return title; }
+ public void setTitle(String value) { this.title = value; }
+
+ public String getType() { return type; }
+ public void setType(String value) { this.type = value; }
+
+ public String getUrl() { return url; }
+ public void setUrl(String value) { this.url = value; }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsResponseBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsResponseBean.java
new file mode 100644
index 0000000..2da7ad3
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyAssetsResponseBean.java
@@ -0,0 +1,27 @@
+package com.application.zhangshi_app_android.bean;
+
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 21:31
+ * @desc
+ */
+public class FamilyAssetsResponseBean {
+ private List<FamilyAssetsBean> data;
+ private long pageNum;
+ private long pageSize;
+ private long total;
+
+ public List<FamilyAssetsBean> getData() { return data; }
+ public void setData(List<FamilyAssetsBean> value) { this.data = value; }
+
+ public long getPageNum() { return pageNum; }
+ public void setPageNum(long value) { this.pageNum = value; }
+
+ public long getPageSize() { return pageSize; }
+ public void setPageSize(long value) { this.pageSize = value; }
+
+ public long getTotal() { return total; }
+ public void setTotal(long value) { this.total = value; }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java
index 0d37834..adae770 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java
@@ -1,6 +1,10 @@
package com.application.zhangshi_app_android.bean;
+import android.net.Uri;
+
import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -15,13 +19,58 @@
private String people;
private String remark;
private String title;
- private List<String> url;
+ private String url;
+ private List<String> urlList;
public String getAddress() { return address; }
public void setAddress(String value) { this.address = value; }
public String getCreateTime() { return createTime; }
public void setCreateTime(String value) { this.createTime = value; }
+
+ public void setUrl(String url) {
+ this.url = url;
+ if (url == null){
+ return;
+ }
+ if (url.contains(",")){
+ String[] split = url.split(",");
+ if (urlList == null){
+ urlList = new ArrayList<>(Arrays.asList(split));
+ }else {
+ urlList.clear();
+ urlList.addAll(Arrays.asList(split));
+ }
+ }else {
+ if (urlList == null){
+ urlList = new ArrayList<>();
+ }else {
+ urlList.clear();
+ }
+ urlList.add(url);
+ }
+ }
+
+ public List<String> getUrlList() {
+ return urlList;
+ }
+
+ public void setUrlList(List<String> urlList) {
+ this.urlList = urlList;
+ StringBuilder sb = new StringBuilder();
+ for (String s : urlList) {
+ sb.append(s).append(",");
+ }
+ //鍘绘帀鏈�鍚庝竴涓�楀彿
+ if (sb.length() > 0) {
+ sb.deleteCharAt(sb.length() - 1);
+ }
+ this.url = sb.toString();
+ }
+
+ public String getUrl() {
+ return url;
+ }
public long getId() { return id; }
public void setId(long value) {
@@ -37,8 +86,17 @@
public String getTitle() { return title; }
public void setTitle(String value) { this.title = value; }
- public List<String> getUrl() { return url; }
- public void setUrl(List<String> value) { this.url = value; }
-
-
+ @Override
+ public String toString() {
+ return "FamilyMemorabiliaBean{" +
+ "id=" + id +
+ ", address='" + address + '\'' +
+ ", createTime='" + createTime + '\'' +
+ ", people='" + people + '\'' +
+ ", remark='" + remark + '\'' +
+ ", title='" + title + '\'' +
+ ", url='" + url + '\'' +
+ ", urlList=" + urlList +
+ '}';
+ }
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java
index 0033fc2..3440681 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaRequestBean.java
@@ -1,5 +1,8 @@
package com.application.zhangshi_app_android.bean;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @author Ljj
* @date 2023.03.28. 15:57
@@ -12,8 +15,8 @@
private String title;
private String createTime;
- private int pageNum;
- private int pageSize;
+ private int pageNum = 1;
+ private int pageSize = 20;
public String getPeople() {
return people;
@@ -70,4 +73,30 @@
this.createTime = createTime;
}
+ public Map<String, Object> getMap() {
+ Map<String, Object> map = new HashMap<>();
+ if (people == null) {
+ people = "";
+ }
+ if (address == null) {
+ address = "";
+ }
+ if (remark == null) {
+ remark = "";
+ }
+ if (title == null) {
+ title = "";
+ }
+ if (createTime == null) {
+ createTime = "";
+ }
+ map.put("people", people);
+ map.put("address", address);
+ map.put("remark", remark);
+ map.put("title", title);
+ map.put("createTime", createTime);
+ map.put("pageNum", pageNum);
+ map.put("pageSize", pageSize);
+ return map;
+ }
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java
new file mode 100644
index 0000000..a3cafb3
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java
@@ -0,0 +1,93 @@
+package com.application.zhangshi_app_android.bean;
+
+import java.io.Serializable;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 0:22
+ * @desc 瀹跺涵璁惧 bean
+ */
+public class HomeDevicesBean implements Serializable {
+ private long id;
+ private String name;
+ private String createTime;
+ private String people;
+ private String content;
+ private String address;
+ private String remark;
+ private String url;
+
+ public HomeDevicesBean(long id, String name, String createTime, String people, String content, String address, String remark, String url) {
+ this.id = id;
+ this.name = name;
+ this.createTime = createTime;
+ this.people = people;
+ this.content = content;
+ this.address = address;
+ this.remark = remark;
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getPeople() {
+ return people;
+ }
+
+ public void setPeople(String people) {
+ this.people = people;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesResponseBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesResponseBean.java
new file mode 100644
index 0000000..23b7cff
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesResponseBean.java
@@ -0,0 +1,27 @@
+package com.application.zhangshi_app_android.bean;
+
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 15:03
+ * @desc
+ */
+public class HomeDevicesResponseBean {
+ private List<HomeDevicesBean> data;
+ private long pageNum;
+ private long pageSize;
+ private long total;
+
+ public List<HomeDevicesBean> getData() { return data; }
+ public void setData(List<HomeDevicesBean> value) { this.data = value; }
+
+ public long getPageNum() { return pageNum; }
+ public void setPageNum(long value) { this.pageNum = value; }
+
+ public long getPageSize() { return pageSize; }
+ public void setPageSize(long value) { this.pageSize = value; }
+
+ public long getTotal() { return total; }
+ public void setTotal(long value) { this.total = value; }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/UploadFileResponseBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/UploadFileResponseBean.java
new file mode 100644
index 0000000..5e412ae
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/bean/UploadFileResponseBean.java
@@ -0,0 +1,52 @@
+package com.application.zhangshi_app_android.bean;
+
+/**
+ * @author Ljj
+ * @date 2023.04.02. 22:57
+ * @desc 涓婁紶鏂囦欢杩斿洖瀹炰綋绫�
+ */
+public class UploadFileResponseBean {
+ String fileName;
+ String newFileName;
+ String url;
+ String originalFilename;
+
+ public UploadFileResponseBean(String fileName, String newFileName, String url, String originalFilename) {
+ this.fileName = fileName;
+ this.newFileName = newFileName;
+ this.url = url;
+ this.originalFilename = originalFilename;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getNewFileName() {
+ return newFileName;
+ }
+
+ public void setNewFileName(String newFileName) {
+ this.newFileName = newFileName;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getOriginalFilename() {
+ return originalFilename;
+ }
+
+ public void setOriginalFilename(String originalFilename) {
+ this.originalFilename = originalFilename;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java b/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
index e78ebea..cff6cf6 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
@@ -5,21 +5,29 @@
import com.android.app_base.base.model.BaseModel;
import com.android.app_base.http.ResultData;
import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.LoginRequestBean;
import com.application.zhangshi_app_android.bean.LoginResponseBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
import com.application.zhangshi_app_android.data.source.HttpDataSource;
import com.application.zhangshi_app_android.data.source.LocalDataSource;
import com.application.zhangshi_app_android.data.source.http.HttpDataSourceImpl;
import com.application.zhangshi_app_android.data.source.local.LocalDataSourceImpl;
+import java.io.File;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.DoubleUnaryOperator;
+import io.reactivex.Completable;
import io.reactivex.Observable;
import io.reactivex.Observer;
+import okhttp3.MultipartBody;
/**
* @author Ljj
@@ -83,8 +91,8 @@
* 鑾峰彇瀹跺ぇ浜嬭
*/
@Override
- public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap) {
- return mHttpDataSource.getFamilyMemorabilia(queryMap);
+ public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap) {
+ return mHttpDataSource.getFamilyMemorabilia(paramsMap);
}
/**
* 澧炲姞瀹跺ぇ浜嬭
@@ -109,6 +117,27 @@
}
/**
+ * 涓婁紶鏂囦欢
+ */
+ public Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file) {
+ return mHttpDataSource.uploadFile(file);
+ }
+
+ /**
+ * 鑾峰彇瀹跺涵璧勪骇
+ */
+ public Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String,Object> paramsMap) {
+ return mHttpDataSource.getFamilyAssets(paramsMap);
+ }
+
+ /**
+ * 鑾峰彇瀹跺涵璁惧
+ */
+ public Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap) {
+ return mHttpDataSource.getHomeDevices(paramsMap);
+ }
+
+ /**
* @see LocalDataSourceImpl
*/
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
index fd8ab36..734bf19 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
@@ -2,17 +2,22 @@
import com.android.app_base.http.ResultData;
import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.LoginRequestBean;
import com.application.zhangshi_app_android.bean.LoginResponseBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
+import java.io.File;
import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.Observer;
+import okhttp3.MultipartBody;
/**
* @author Ljj
@@ -37,7 +42,7 @@
/**
* 鑾峰彇瀹跺ぇ浜嬭
*/
- Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap);
+ Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap);
/**
* 澧炲姞瀹跺ぇ浜嬭
@@ -52,4 +57,18 @@
* 淇敼
*/
Observable<ResultData<String>> updateFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean);
+
+ /**
+ * 涓婁紶鏂囦欢
+ */
+ Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file);
+
+ /**
+ * 鑾峰彇瀹跺涵璧勪骇
+ */
+ Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String, Object> paramsMap);
+ /**
+ * 鑾峰彇瀹跺涵璁惧
+ */
+ Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap);
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
index 9815ad6..d2b9d0a 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
@@ -2,21 +2,28 @@
import com.android.app_base.http.ResultData;
import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.LoginRequestBean;
import com.application.zhangshi_app_android.bean.LoginResponseBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
+import java.io.File;
import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
+import okhttp3.MultipartBody;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
+import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PUT;
+import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
@@ -48,7 +55,7 @@
* 鑾峰彇瀹跺ぇ浜嬩欢
*/
@GET("family/zfEvent/all")
- Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(@QueryMap Map<String,Object> queryMap);
+ Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(@QueryMap Map<String,Object> paramsMap);
/**
* 澧炲姞瀹跺ぇ浜嬭
*/
@@ -66,4 +73,22 @@
Observable<ResultData<String>> updateFamilyMemorabilia(@Body FamilyMemorabiliaBean familyMemorabiliaBean);
+ /**
+ * 涓婁紶鏂囦欢
+ */
+ @Multipart
+ @POST("/common/upload")
+ Observable<ResultData<UploadFileResponseBean>> uploadFile(@Part MultipartBody.Part file);
+
+ /**
+ * 鑾峰彇瀹跺涵璧勪骇
+ */
+ @GET("/family/property/all")
+ Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(@QueryMap Map<String, Object> paramsMap);
+
+ /**
+ * 鑾峰彇瀹跺涵璁惧
+ */
+ @GET("")//TODO 鑾峰彇瀹跺涵璁惧
+ Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(@QueryMap Map<String, Object> paramsMap);
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
index 811264d..fc81677 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
@@ -3,16 +3,21 @@
import com.android.app_base.http.ResultData;
import com.android.app_base.http.RetrofitManager;
import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.LoginRequestBean;
import com.application.zhangshi_app_android.bean.LoginResponseBean;
import com.android.app_base.base.BaseConfig;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
import com.application.zhangshi_app_android.data.source.HttpDataSource;
import java.util.Map;
import io.reactivex.Observable;
+import okhttp3.MultipartBody;
/**
* @author Ljj
@@ -71,8 +76,8 @@
* 鑾峰彇瀹跺ぇ浜嬭
*/
@Override
- public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap) {
- return apiService.getFamilyMemorabilia(queryMap);
+ public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap) {
+ return apiService.getFamilyMemorabilia(paramsMap);
}
/**
* 澧炲姞瀹跺ぇ浜嬭
@@ -96,4 +101,28 @@
public Observable<ResultData<String>> updateFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean) {
return apiService.updateFamilyMemorabilia(familyMemorabiliaBean);
}
+
+ /**
+ * 涓婁紶鏂囦欢
+ */
+ @Override
+ public Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file) {
+ return apiService.uploadFile(file);
+ }
+
+ /**
+ * 鑾峰彇瀹跺涵璧勪骇
+ */
+ @Override
+ public Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String, Object> paramsMap) {
+ return apiService.getFamilyAssets(paramsMap);
+ }
+
+ /**
+ * 鑾峰彇瀹跺涵璁惧
+ */
+ @Override
+ public Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap) {
+ return apiService.getHomeDevices(paramsMap);
+ }
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/other/MyTitleBarStyle.java b/app/src/main/java/com/application/zhangshi_app_android/other/MyTitleBarStyle.java
new file mode 100644
index 0000000..a5246a7
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/other/MyTitleBarStyle.java
@@ -0,0 +1,82 @@
+package com.application.zhangshi_app_android.other;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.TypedValue;
+import android.widget.TextView;
+
+import androidx.appcompat.content.res.AppCompatResources;
+
+import com.android.app_base.utils.ScreenSizeUtils;
+import com.application.zhangshi_app_android.R;
+import com.hjq.bar.style.CommonBarStyle;
+
+/**
+ * @author Ljj
+ * @date 2023.03.30. 20:11
+ * @desc TitleBar缁熶竴鏍峰紡
+ */
+public class MyTitleBarStyle extends CommonBarStyle {
+ @Override
+ public TextView createLeftView(Context context) {
+ return super.createLeftView(context);
+ }
+
+ @Override
+ public Drawable getTitleBarBackground(Context context) {
+ return new ColorDrawable(context.getColor(R.color.color_title_bar_background));
+ }
+
+ @Override
+ public Drawable getLeftTitleBackground(Context context) {
+ return null;
+ }
+
+ @Override
+ public Drawable getRightTitleBackground(Context context) {
+ return null;
+ }
+
+ @Override
+ public Drawable getBackButtonDrawable(Context context) {
+ return AppCompatResources.getDrawable(context,R.drawable.ic_menu);
+ }
+
+ @Override
+ public ColorStateList getTitleColor(Context context) {
+ return ColorStateList.valueOf(0xFFFFFFFF);
+ }
+
+ @Override
+ public ColorStateList getLeftTitleColor(Context context) {
+ return null;
+ }
+
+ @Override
+ public ColorStateList getRightTitleColor(Context context) {
+ return null;
+ }
+
+ @Override
+ public Drawable getLineDrawable(Context context) {
+ return null;
+ }
+
+ @Override
+ public int getLeftHorizontalPadding(Context context) {
+ return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, context.getResources().getDisplayMetrics());
+ }
+
+ @Override
+ public float getTitleSize(Context context) {
+ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, context.getResources().getDisplayMetrics());
+ }
+
+ @Override
+ public int getLeftIconPadding(Context context) {
+ return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, context.getResources().getDisplayMetrics());
+ }
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java
new file mode 100644
index 0000000..5579045
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java
@@ -0,0 +1,126 @@
+package com.application.zhangshi_app_android.ui;
+
+import android.graphics.Color;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ViewDataBinding;
+import androidx.drawerlayout.widget.DrawerLayout;
+
+import com.android.app_base.base.view.BaseActivity;
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.android.app_base.manager.AppManager;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivity;
+import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivity;
+import com.application.zhangshi_app_android.ui.function.HomeDevicesActivity;
+import com.hjq.bar.TitleBar;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Ljj
+ * @date 2023.04.01. 18:21
+ * @desc 璇PP閲岀粺涓�渚ф媺鏍忕殑Activity鍩虹被
+ */
+public abstract class DLBaseActivity<VDB extends ViewDataBinding,VM extends BaseViewModel> extends BaseActivity<VDB,VM> {
+ /**
+ * 渚ф媺鏍�
+ */
+ private DrawerLayout mDrawerLayout;
+ private Map<Class,LinearLayout> classMap = new HashMap<>();
+ @Override
+ protected VDB initViewBinding() {
+ if (isDrawerLayoutEnabled()){
+ mDrawerLayout = new DrawerLayout(this);
+ mDrawerLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+ VDB mBinding = DataBindingUtil.inflate(getLayoutInflater(), getLayoutId(), mDrawerLayout, true);
+ if (getDrawerLayoutId() > 0){
+ getLayoutInflater().inflate(getDrawerLayoutId(), mDrawerLayout, true);
+ }else {
+ throw new IllegalArgumentException("娌$粰渚ф媺鏍忓竷灞�灏变笉瑕佸紑鍚晶鎷夋爮鍟�");
+ }
+ setContentView(mDrawerLayout);
+ return mBinding;
+ }
+ return super.initViewBinding();
+ }
+
+
+ /**
+ * 鏄惁寮�鍚晶鎷夋爮
+ */
+ protected boolean isDrawerLayoutEnabled() {
+ return true;
+ }
+ /**
+ * 鑾峰彇渚ф媺鏍忕殑id
+ * @return layout鐨刬d
+ */
+ protected int getDrawerLayoutId(){
+ return R.layout.layout_drawer;
+ };
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ if (mDrawerLayout != null) {
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_home_root_net));
+ classMap.put(FamilyMemorabiliaActivity.class,(LinearLayout) findViewById(R.id.dl_family_memorabilia));
+ classMap.put(FamilyAssetsActivity.class,(LinearLayout) findViewById(R.id.dl_family_assets));
+ classMap.put(HomeDevicesActivity.class,(LinearLayout) findViewById(R.id.dl_home_devices));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_honor_collection));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_little_doctor));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_clean_storage));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_contacts));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_pet));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_income_and_expenses));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_growing_up));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_marriage));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_property));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_hundred_wish));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_health_care));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_certificate_of_honor));
+ classMap.put(null,(LinearLayout) findViewById(R.id.dl_privacy));
+ setSelectItem(classMap.get(getClass()));
+ for (Map.Entry<Class, LinearLayout> set : classMap.entrySet()) {
+ set.getValue().setOnClickListener(v -> {
+ if (set.getKey() != null){
+ AppManager.getAppManager().startActivity(set.getKey());
+ }
+ });
+ }
+ mDrawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow));
+ }
+ }
+ private void setSelectItem(LinearLayout linearLayout) {
+ if (linearLayout == null){
+ return;
+ }
+ TextView textView = (TextView) linearLayout.getChildAt(1);
+ ImageView imageView = (ImageView) linearLayout.getChildAt(2);
+ textView.setTextColor(Color.parseColor("#FFF6739F"));
+ imageView.setBackgroundResource(R.drawable.ic_vector_pink);
+ }
+
+
+ /**
+ * 鑾峰彇DrawerLayout
+ */
+ @Nullable
+ public DrawerLayout getDrawerLayout() {
+ return mDrawerLayout;
+ }
+
+ @Override
+ public void onLeftClick(TitleBar titleBar) {
+ super.onRightClick(titleBar);
+ mDrawerLayout.open();
+ }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java
index 4c9fced..40ecd10 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java
@@ -1,39 +1,47 @@
package com.application.zhangshi_app_android.ui.function;
import android.graphics.drawable.ColorDrawable;
-import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.EditText;
import android.widget.PopupWindow;
-import androidx.annotation.Nullable;
-import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.BaseConfig;
import com.android.app_base.base.dialog.BaseDialog;
import com.android.app_base.base.dialog.UIDialog;
import com.android.app_base.base.view.BaseActivity;
+import com.android.app_base.manager.UserManager;
import com.android.app_base.utils.ScreenSizeUtils;
-import com.android.app_base.utils.ToastUtils;
-import com.android.app_base.widget.LinearItemDecoration;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
-import com.application.zhangshi_app_android.databinding.ItemFamilyCreateBinding;
+import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaCreateBinding;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.luck.picture.lib.interfaces.OnResultCallbackListener;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.function.Consumer;
+
/**
* @author Gss
* @date 2023.03.25. 16:00
* @desc 瀹跺ぇ浜嬭 CreateFamilyProjectActivity
*/
-public class CreateFamilyProjectActivity extends BaseActivity<ItemFamilyCreateBinding,CreateFamilyProjectActivityViewModel> {
+public class CreateFamilyProjectActivity extends BaseActivity<ActivityFamilyMemorabiliaCreateBinding,CreateFamilyProjectActivityViewModel> {
private int type;
- private int operateType;
private PopupWindow popupWindow;
+ private FamilyMemorabiliaBean bean;
+ private ImageRvAdapter adapter;
+
@Override
public int getLayoutId() {
- return R.layout.item_family_create;
+ return R.layout.activity_family_memorabilia_create;
}
@Override
@@ -45,7 +53,7 @@
public void initParam() {
type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0);
if (type == 0){
- FamilyMemorabiliaBean bean = (FamilyMemorabiliaBean) getIntent().getSerializableExtra("bean");
+ bean = (FamilyMemorabiliaBean) getIntent().getSerializableExtra("bean");
if (bean!=null){
viewModel.getBeanMutableLiveData().postValue(bean);
}
@@ -54,13 +62,43 @@
@Override
public void initView() {
+ adapter = new ImageRvAdapter(this);
+ GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
+ binding.rvImage.setLayoutManager(gridLayoutManager);
+ binding.rvImage.setNestedScrollingEnabled(false);
+ View footerView = View.inflate(this,R.layout.item_image_footer,null);
+ binding.rvImage.addFooterView(footerView);
+ footerView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ UserManager.getInstance().selectImage(getSelfActivity(), 9, new OnResultCallbackListener<LocalMedia>() {
+ @Override
+ public void onResult(ArrayList<LocalMedia> result) {
+ if (result.size() == 0) return;
+ for (LocalMedia media : result) {
+ String path = media.getRealPath();
+ File file = new File(path);
+ if (file.exists()) {
+ viewModel.uploadFile(file);
+ }
+ }
+ }
+
+ @Override
+ public void onCancel() {
+
+ }
+ });
+ }
+ });
+ binding.rvImage.setAdapter(adapter);
+
if (type == 1){
- binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
+ viewModel.getTypeLiveData().postValue(true);
binding.ivOperate.setOnClickListener(v -> {
viewModel.add();
});
}else {
- binding.ivOperate.setBackgroundResource(R.drawable.ic_operate);
popupWindow = new PopupWindow(this);
// 璁剧疆甯冨眬鏂囦欢
popupWindow.setContentView(LayoutInflater.from(this).inflate(R.layout.pop_operate_delete, null));
@@ -78,18 +116,10 @@
// 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶�
popupWindow.setOutsideTouchable(true);
- binding.ivOperate.setOnClickListener(v -> {
- if (operateType == 0){
- popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
- }else{
- viewModel.update();
- }
- });
popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
- operateType = 1;
+ viewModel.getTypeLiveData().postValue(true);
popupWindow.dismiss();
}
});
@@ -111,7 +141,9 @@
.show();
}
});
+ viewModel.getTypeLiveData().postValue(false);
}
+
}
@Override
@@ -122,8 +154,62 @@
@Override
public void initLiveDataObserve() {
-
+ viewModel.getBeanMutableLiveData().observe(this,bean -> {
+ if (bean!=null){
+ bean.setUrl(bean.getUrl());
+ adapter.setData(bean.getUrlList());
+ }
+ });
+ viewModel.getTypeLiveData().observe(this,operateType -> {
+ if (operateType){
+ if (type == 1) {
+ binding.ivOperate.setOnClickListener(v -> {
+ viewModel.add();
+ });
+ }else {
+ binding.ivOperate.setOnClickListener(v -> {
+ viewModel.update();
+ });
+ }
+ binding.rvImage.getFooterViews().forEach(new Consumer<View>() {
+ @Override
+ public void accept(View view) {
+ view.setVisibility(View.VISIBLE);
+ }
+ });
+ setIsEdited(true);
+ }else {
+ binding.ivOperate.setOnClickListener(v -> {
+ popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+ });
+ binding.rvImage.getFooterViews().forEach(new Consumer<View>() {
+ @Override
+ public void accept(View view) {
+ view.setVisibility(View.GONE);
+ }
+ });
+ setIsEdited(false);
+ }
+ });
}
-
+ public void setIsEdited(boolean isEdited){
+ disableAllEditText(getContentView(),isEdited);
+ adapter.setIsEdited(isEdited);
+ }
+ public void disableAllEditText(ViewGroup viewGroup,boolean isEdited) {
+ for (int i = 0; i < viewGroup.getChildCount(); i++) {
+ View child = viewGroup.getChildAt(i);
+ if (child instanceof ViewGroup) {
+ disableAllEditText((ViewGroup) child,isEdited);
+ } else if (child instanceof EditText) {
+ child.setEnabled(isEdited);
+ child.setFocusable(isEdited);
+ child.setFocusableInTouchMode(isEdited);
+ if (!isEdited){
+ child.clearFocus();
+ }
+ }
+ }
+ }
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java
index 75c5aef..e37573d 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivityViewModel.java
@@ -11,19 +11,22 @@
import com.android.app_base.http.ResultData;
import com.android.app_base.manager.AppManager;
import com.android.app_base.utils.RxUtils;
-import com.android.app_base.utils.ToastUtils;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
-import java.util.ArrayList;
-import java.util.List;
+import java.io.File;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
public class CreateFamilyProjectActivityViewModel extends BaseViewModel<DataRepository> {
private MutableLiveData<FamilyMemorabiliaBean> beanMutableLiveData;
+ private MutableLiveData<Boolean> typeLiveData;//true 缂栬緫鐘舵�� false 灞曠ず鐘舵��
public CreateFamilyProjectActivityViewModel(@NonNull Application application) {
super(application);
}
@@ -49,6 +52,7 @@
public void onNext(ResultData<String> stringResultData) {
if (stringResultData.getCode() == CODE_SUCCESS){
messageLiveData.postValue("娣诲姞鎴愬姛");
+ AppManager.getAppManager().finishCurrentActivity();
}else {
messageLiveData.postValue(stringResultData.getMsg());
}
@@ -136,10 +140,72 @@
if (beanMutableLiveData == null){
beanMutableLiveData = new MutableLiveData<>();
}
+ if (beanMutableLiveData.getValue() == null){
+ beanMutableLiveData.setValue(new FamilyMemorabiliaBean());
+ }
return beanMutableLiveData;
}
public void setBeanMutableLiveData(MutableLiveData<FamilyMemorabiliaBean> beanMutableLiveData) {
this.beanMutableLiveData = beanMutableLiveData;
}
+
+ public MutableLiveData<Boolean> getTypeLiveData() {
+ if (typeLiveData == null){
+ typeLiveData = new MutableLiveData<>();
+ }
+ return typeLiveData;
+ }
+
+ public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) {
+ this.typeLiveData = typeLiveData;
+ }
+
+ /**
+ * 涓婁紶鐢靛瓙鏂囦欢
+ */
+ public void uploadFile(File file) {
+ RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
+ MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody);
+ model.uploadFile(body)
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<UploadFileResponseBean>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<UploadFileResponseBean> resultData) {
+ if (resultData.getCode() == CODE_SUCCESS){
+ FamilyMemorabiliaBean bean = getBeanMutableLiveData().getValue();
+ String url;
+ if (bean != null){
+ url = bean.getUrl();
+ if (url == null){
+ url = resultData.getData().getUrl();
+ }else {
+ url = url + "," + resultData.getData().getUrl();
+ }
+ bean.setUrl(url);
+ beanMutableLiveData.postValue(bean);
+ }
+ }else {
+ messageLiveData.postValue(resultData.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java
new file mode 100644
index 0000000..18ea31e
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java
@@ -0,0 +1,105 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.graphics.drawable.ColorDrawable;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.PopupWindow;
+
+import androidx.databinding.library.baseAdapters.BR;
+import androidx.lifecycle.Observer;
+
+import com.android.app_base.utils.ScreenSizeUtils;
+import com.android.app_base.widget.LinearItemDecoration;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.FamilyAssetsRvAdapter;
+import com.application.zhangshi_app_android.adapter.FamilyMemorabiliaRvAdapter;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.databinding.ActivityFamilyAssetsBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 19:40
+ * @desc
+ */
+public class FamilyAssetsActivity extends DLBaseActivity<ActivityFamilyAssetsBinding,FamilyAssetsActivityViewModel> {
+
+
+ private FamilyAssetsRvAdapter adapter;
+ private PopupWindow mOperatePopupWindow;
+
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.activity_family_assets;
+ }
+
+ @Override
+ public int getVariableId() {
+ return BR.viewModel;
+ }
+
+ @Override
+ public void initParam() {
+
+ }
+
+ @Override
+ public void initView() {
+ adapter = new FamilyAssetsRvAdapter(this);
+ LinearItemDecoration itemDecoration = new LinearItemDecoration();
+ itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12));
+ itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
+ itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
+ binding.recyclerView.addItemDecoration(itemDecoration);
+ binding.recyclerView.setAdapter(adapter);
+
+ mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null));
+ mOperatePopupWindow.getContentView().findViewById(R.id.layout_add).setVisibility(View.GONE);
+ mOperatePopupWindow.getContentView().findViewById(R.id.layout_select).setVisibility(View.GONE);
+ mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> {
+ viewModel.sortDataList(0);
+ mOperatePopupWindow.dismiss();
+ });
+ mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> {
+ viewModel.sortDataList(1);
+ mOperatePopupWindow.dismiss();
+ });
+ binding.ivOperate.setOnClickListener(v -> {
+ mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+ });
+ }
+
+ @Override
+ public void initData() {
+ viewModel.getFamilyAssets();
+ }
+
+ @Override
+ public void initLiveDataObserve() {
+ viewModel.getDataListLiveData().observe(this, familyAssetsBeans -> {
+ adapter.setData(familyAssetsBeans);
+ });
+ }
+ private PopupWindow initPopUpWindow(View view){
+ PopupWindow popupWindow = new PopupWindow(this);
+ // 璁剧疆甯冨眬鏂囦欢
+ popupWindow.setContentView(view);
+ // 涓轰簡閬垮厤閮ㄥ垎鏈哄瀷涓嶆樉绀猴紝闇�瑕侀噸鏂拌缃竴涓嬪楂�
+ popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
+ popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+ // 璁剧疆pop閫忔槑鏁堟灉
+ popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
+ // 璁剧疆pop鍑哄叆鍔ㄧ敾
+ popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add);
+ // 璁剧疆pop鑾峰彇鐒︾偣锛屽鏋滀负false鐐瑰嚮杩斿洖鎸夐挳浼氶��鍑哄綋鍓岮ctivity锛屽鏋減op涓湁Editor鐨勮瘽锛宖ocusable蹇呴』瑕佷负true
+ popupWindow.setFocusable(true);
+ // 璁剧疆pop鍙偣鍑伙紝涓篺alse鐐瑰嚮浜嬩欢鏃犳晥锛岄粯璁や负true
+ popupWindow.setTouchable(true);
+ // 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶�
+ popupWindow.setOutsideTouchable(false);
+ return popupWindow;
+ }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivityViewModel.java
new file mode 100644
index 0000000..9dfd101
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivityViewModel.java
@@ -0,0 +1,137 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import static com.android.app_base.base.BaseConfig.CODE_SUCCESS;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MutableLiveData;
+
+import com.android.app_base.base.BaseConfig;
+import com.android.app_base.base.StateViewEnum;
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.android.app_base.http.ResultData;
+import com.android.app_base.utils.RxUtils;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.data.DataRepository;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+import io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 19:41
+ * @desc
+ */
+public class FamilyAssetsActivityViewModel extends BaseViewModel<DataRepository> {
+
+ private MutableLiveData<List<FamilyAssetsBean>> checkListLiveData;//閫変腑鐨勬暟鎹�
+ private MutableLiveData<List<FamilyAssetsBean>> dataListLiveData;//鎵�鏈夋暟鎹�
+
+
+ public FamilyAssetsActivityViewModel(@NonNull Application application) {
+ super(application);
+ }
+
+ @Override
+ protected DataRepository initModel() {
+ return DataRepository.getInstance();
+ }
+
+
+ public void getFamilyAssets(){
+ model.getFamilyAssets(new HashMap<>())
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<FamilyAssetsResponseBean>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<FamilyAssetsResponseBean> data) {
+ if (data.getCode() == CODE_SUCCESS){
+ if (data.getData().getData().isEmpty()){
+ changeStateView(StateViewEnum.DATA_NULL);
+ }else {
+ changeStateView(StateViewEnum.HIDE);
+ dataListLiveData.postValue(data.getData().getData());
+ }
+ }else {
+ messageLiveData.postValue(data.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ public MutableLiveData<List<FamilyAssetsBean>> getCheckListLiveData() {
+ return checkListLiveData;
+ }
+
+ public void setCheckListLiveData(MutableLiveData<List<FamilyAssetsBean>> checkListLiveData) {
+ this.checkListLiveData = checkListLiveData;
+ }
+
+ public MutableLiveData<List<FamilyAssetsBean>> getDataListLiveData() {
+ if (dataListLiveData == null){
+ dataListLiveData = new MutableLiveData<>();
+ }
+ return dataListLiveData;
+ }
+
+ public void setDataListLiveData(MutableLiveData<List<FamilyAssetsBean>> dataListLiveData) {
+ this.dataListLiveData = dataListLiveData;
+ }
+
+ public void sortDataList(int type){
+ List<FamilyAssetsBean> list = dataListLiveData.getValue();
+ if (list == null || list.isEmpty()){
+ return;
+ }
+
+ list.sort(new Comparator<FamilyAssetsBean>() {
+ @Override
+ public int compare(FamilyAssetsBean o1, FamilyAssetsBean o2) {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault());
+ Date date1 = null;
+ Date date2 = null;
+ try {
+ date1 = format.parse(o1.getCreateTime());
+ date2 = format.parse(o2.getCreateTime());
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+ if (date1 != null && date2 != null) {
+ if (type == 0){
+ return date2.compareTo(date1);
+ }else {
+ return date1.compareTo(date2);
+ }
+ }
+ return 0;
+ }
+ });
+ dataListLiveData.postValue(list);
+ }
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java
new file mode 100644
index 0000000..cf1c034
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java
@@ -0,0 +1,103 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.application.zhangshi_app_android.BR;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.databinding.ActivityFamilyAssetsDetailBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 21:46
+ * @desc
+ */
+public class FamilyAssetsDetailActivity extends DLBaseActivity<ActivityFamilyAssetsDetailBinding,FamilyAssetsDetailActivityViewModel> {
+ private ImageRvAdapter adapter;
+
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.activity_family_assets_detail;
+ }
+
+ @Override
+ public int getVariableId() {
+ return BR.viewModel;
+ }
+
+ @Override
+ public void initParam() {
+ if (getIntent().hasExtra("bean")){
+ viewModel.getBeanLiveData().setValue((FamilyAssetsBean) getIntent().getSerializableExtra("bean"));
+ }
+ }
+
+ @Override
+ public void initView() {
+ adapter = new ImageRvAdapter(this);
+ GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
+ binding.rvImage.setLayoutManager(gridLayoutManager);
+ binding.rvImage.setNestedScrollingEnabled(false);
+ setIsEdited(false);
+ }
+
+ @Override
+ public void initData() {
+
+ }
+
+ @Override
+ public void initLiveDataObserve() {
+ viewModel.getBeanLiveData().observe(this,bean -> {
+ if (bean!=null){
+ if (getTitleBar() != null){
+ getTitleBar().setTitle(bean.getHolder() + "鐨�" + bean.getType());
+ }
+ String url = bean.getUrl();
+ if (url == null||url.isEmpty()){
+ return;
+ }
+ List<String> list;
+ if (url.contains(",")){
+ String[] split = url.split(",");
+ list = new ArrayList<>(Arrays.asList(split));
+ }else {
+ list = new ArrayList<>();
+ list.add(url);
+ }
+ adapter.setData(list);
+ }
+ });
+ }
+
+ public void setIsEdited(boolean isEdited){
+ disableAllEditText(getContentView(),isEdited);
+ adapter.setIsEdited(isEdited);
+ }
+ public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
+ for (int i = 0; i < viewGroup.getChildCount(); i++) {
+ View child = viewGroup.getChildAt(i);
+ if (child instanceof ViewGroup) {
+ disableAllEditText((ViewGroup) child,isEdited);
+ } else if (child instanceof EditText) {
+ child.setEnabled(isEdited);
+ child.setFocusable(isEdited);
+ child.setFocusableInTouchMode(isEdited);
+ if (!isEdited){
+ child.clearFocus();
+ }
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivityViewModel.java
new file mode 100644
index 0000000..9eded93
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivityViewModel.java
@@ -0,0 +1,42 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MutableLiveData;
+
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.application.zhangshi_app_android.bean.CaptchaImageBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.data.DataRepository;
+
+/**
+ * @author Ljj
+ * @date 2023.04.03. 21:47
+ * @desc
+ */
+public class FamilyAssetsDetailActivityViewModel extends BaseViewModel<DataRepository> {
+ private MutableLiveData<FamilyAssetsBean> beanLiveData;
+
+ public MutableLiveData<FamilyAssetsBean> getBeanLiveData() {
+ if (beanLiveData == null){
+ beanLiveData = new MutableLiveData<>();
+ }
+ return beanLiveData;
+ }
+
+ public void setBeanLiveData(MutableLiveData<FamilyAssetsBean> beanLiveData) {
+ this.beanLiveData = beanLiveData;
+ }
+
+ public FamilyAssetsDetailActivityViewModel(@NonNull Application application) {
+ super(application);
+ }
+
+ @Override
+ protected DataRepository initModel() {
+ return DataRepository.getInstance();
+ }
+
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java
index 56f247e..e920c93 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java
@@ -15,6 +15,8 @@
import androidx.annotation.IdRes;
import androidx.annotation.LayoutRes;
import androidx.appcompat.app.AlertDialog;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ViewDataBinding;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.lifecycle.Observer;
@@ -30,6 +32,9 @@
import com.application.zhangshi_app_android.adapter.FamilyMemorabiliaRvAdapter;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaBinding;
+import com.application.zhangshi_app_android.databinding.PopSearchBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+import com.hjq.bar.TitleBar;
import java.util.List;
@@ -38,13 +43,12 @@
* @date 2023.03.18. 10:00
* @desc 瀹跺ぇ浜嬭 Activity
*/
-public class FamilyMemorabiliaActivity extends BaseActivity<ActivityFamilyMemorabiliaBinding,FamilyMemorabiliaActivityViewModel> {
+public class FamilyMemorabiliaActivity extends DLBaseActivity<ActivityFamilyMemorabiliaBinding,FamilyMemorabiliaActivityViewModel> {
FamilyMemorabiliaRvAdapter adapter;
private PopupWindow mOperatePopupWindow;
private PopupWindow mSearchPopupWindow;
- private int operateType = 0;
- private int searchType = 0;
+ private PopSearchBinding mSearchPopBinding;
@Override
public int getLayoutId() {
@@ -71,33 +75,106 @@
binding.recyclerView.addItemDecoration(itemDecoration);
binding.recyclerView.setAdapter(adapter);
+ mSearchPopBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.pop_search, null, false);
+ mSearchPopBinding.setViewModel(viewModel);
+ mSearchPopupWindow = initPopUpWindow(mSearchPopBinding.getRoot());
- mOperatePopupWindow = initPopUpWindow(R.layout.pop_operate);
- mOperatePopupWindow.getContentView().findViewById(R.id.tv_add).setOnClickListener(v -> {
- AppManager.getAppManager().startActivity(new Intent(this,CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
+ mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null));
+
+ binding.ivSearchDefault.setOnClickListener(v -> {
+ binding.layoutSearch.setVisibility(View.VISIBLE);
+ binding.layoutDefault.setVisibility(View.GONE);
});
- mOperatePopupWindow.getContentView().findViewById(R.id.tv_select).setOnClickListener(v -> {
- binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
- operateType = 1;
- adapter.setCheckable(true);
- mOperatePopupWindow.dismiss();
+
+ binding.ivSearchType.setOnClickListener(v -> {
+ mSearchPopupWindow.setWidth(binding.layoutSearch.getMeasuredWidth());
+ mSearchPopupWindow.showAsDropDown(binding.layoutSearch,0,0);
});
- mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> {
- viewModel.changeOrder(true);
- mOperatePopupWindow.dismiss();
+
+ binding.etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if ((actionId == EditorInfo.IME_ACTION_UNSPECIFIED || actionId == EditorInfo.IME_ACTION_SEARCH)
+ && event != null) {
+ viewModel.getFamilyMemorabilia();
+ binding.layoutSearch.setVisibility(View.GONE);
+ binding.layoutDefault.setVisibility(View.VISIBLE);
+ binding.tvTitle.setText("鎼滅储缁撴灉");
+ hideSoftKeyboard();
+ return true;
+ }
+ return false;
+ }
});
- mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> {
- viewModel.changeOrder(false);
- mOperatePopupWindow.dismiss();
+ binding.ivSearch.setOnClickListener(v -> {
+ viewModel.getFamilyMemorabilia();
+ binding.layoutSearch.setVisibility(View.GONE);
+ binding.layoutDefault.setVisibility(View.VISIBLE);
+ binding.tvTitle.setText("鎼滅储缁撴灉");
+ mSearchPopupWindow.dismiss();
+ hideSoftKeyboard();
});
- binding.ivOperate.setOnClickListener(v -> {
- if (operateType == 0){
- mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
- } else if (operateType == 1) {
+ binding.fabAdd.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
+ }
+ });
+
+ setOnClickListener(
+ mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_person),
+ mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_place),
+ mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_time),
+ mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_title),
+ mOperatePopupWindow.getContentView().findViewById(R.id.tv_add),
+ mOperatePopupWindow.getContentView().findViewById(R.id.tv_select),
+ mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old),
+ mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new)
+ );
+
+ }
+
+ @Override
+ public void initData() {
+ viewModel.getFamilyMemorabilia();
+ }
+
+ @Override
+ public void initLiveDataObserve() {
+ viewModel.getCheckListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
+ @Override
+ public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
+ if (viewModel.getOperateTypeLiveData().getValue() == 0){
+ return;
+ }
+ if (familyMemorabiliaBeans.isEmpty()){
+ viewModel.getOperateTypeLiveData().postValue(1);
+ }else{
+ viewModel.getOperateTypeLiveData().postValue(2);
+ }
+ }
+ });
+ viewModel.getDataListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
+ @Override
+ public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
+ adapter.setData(familyMemorabiliaBeans);
+ }
+ });
+ viewModel.getOperateTypeLiveData().observe(this, integer -> {
+ if (integer == 0){
binding.ivOperate.setBackgroundResource(R.drawable.ic_operate);
- operateType = 0;
+ binding.ivOperate.setOnClickListener(v -> {
+ mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+ });
adapter.setCheckable(false);
- } else {
+ }else if (integer == 1){
+ binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
+ binding.ivOperate.setOnClickListener(v -> {
+ viewModel.getOperateTypeLiveData().postValue(0);
+ });
+ adapter.setCheckable(true);
+ }else if (integer == 2){
+ binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white);
new UIDialog.Builder(this)
.setTitle("鎮ㄧ‘瀹氳鍒犻櫎椤圭洰鍚�")
.setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠")
@@ -110,90 +187,16 @@
}
})
.show();
- }
- });
-
- mSearchPopupWindow = initPopUpWindow(R.layout.pop_search);
- binding.ivSearchType.setOnClickListener(v -> {
- mSearchPopupWindow.showAsDropDown(binding.etSearch,0,0);
- });
- binding.ivSearchDefault.setOnClickListener(v -> {
- binding.layoutSearch.setVisibility(View.VISIBLE);
- binding.layoutDefault.setVisibility(View.GONE);
- });
- binding.fabAdd.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
- }
- });
-
- setOnClickListener(
- mSearchPopupWindow.getContentView().findViewById(R.id.tv_global_search),
- mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_in_family_memorabilia),
- mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_title),
- mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_people),
- mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_time),
- mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_place));
-
-
- binding.etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if ((actionId == EditorInfo.IME_ACTION_UNSPECIFIED || actionId == EditorInfo.IME_ACTION_SEARCH)
- && event != null) {
- viewModel.getFamilyMemorabilia(searchType);
- hideSoftKeyboard();
- return true;
- }
- return false;
- }
- });
-
- binding.ivMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- binding.drawerLayout.open();
- }
- });
- binding.drawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow));
- }
-
- @Override
- public void initData() {
- viewModel.getFamilyMemorabilia(searchType);
- }
-
- @Override
- public void initLiveDataObserve() {
- viewModel.getCheckListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
- @Override
- public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
- if (operateType == 0){
- return;
- }
- if (familyMemorabiliaBeans.isEmpty()){
- binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish);
- operateType = 1;
- }else{
- binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white);
- operateType = 2;
- }
- }
- });
- viewModel.getDataListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
- @Override
- public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
- adapter.setData(familyMemorabiliaBeans);
+ adapter.setCheckable(true);
}
});
}
- private PopupWindow initPopUpWindow(@LayoutRes int layoutId){
+ private PopupWindow initPopUpWindow(View view){
PopupWindow popupWindow = new PopupWindow(this);
// 璁剧疆甯冨眬鏂囦欢
- popupWindow.setContentView(LayoutInflater.from(this).inflate(layoutId, null));
+ popupWindow.setContentView(view);
// 涓轰簡閬垮厤閮ㄥ垎鏈哄瀷涓嶆樉绀猴紝闇�瑕侀噸鏂拌缃竴涓嬪楂�
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -206,7 +209,7 @@
// 璁剧疆pop鍙偣鍑伙紝涓篺alse鐐瑰嚮浜嬩欢鏃犳晥锛岄粯璁や负true
popupWindow.setTouchable(true);
// 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶�
- popupWindow.setOutsideTouchable(true);
+ popupWindow.setOutsideTouchable(false);
return popupWindow;
}
@@ -218,32 +221,26 @@
}
@Override
+ protected void hide() {
+ super.hide();
+ binding.layoutDataNull.setVisibility(View.GONE);
+ binding.recyclerView.setVisibility(View.VISIBLE);
+ }
+
+ @Override
public void onClick(View v) {
int id = v.getId();
- if (id == R.id.tv_global_search){
- searchType = 0;
- binding.etSearch.setHint("鍏ㄥ眬鎼滅储");
- mSearchPopupWindow.dismiss();
- }else if (id == R.id.tv_search_in_family_memorabilia) {
- searchType = 1;
- mSearchPopupWindow.dismiss();
- binding.etSearch.setHint("鍦ㄢ�滃澶т簨璁扳�濆唴鎼滅储");
- }else if (id == R.id.tv_search_by_title) {
- searchType = 2;
- mSearchPopupWindow.dismiss();
- binding.etSearch.setHint("鎸夆�滃ぇ浜嬭鏍囬鈥濇悳绱�");
- }else if (id == R.id.tv_search_by_people) {
- searchType = 3;
- mSearchPopupWindow.dismiss();
- binding.etSearch.setHint("鎸夆�滀汉鐗┾�濇悳绱�");
- }else if (id == R.id.tv_search_by_time) {
- searchType = 4;
- mSearchPopupWindow.dismiss();
- binding.etSearch.setHint("鎸夆�滄椂闂粹�濇悳绱�");
- }else if (id == R.id.tv_search_by_place) {
- searchType = 5;
- mSearchPopupWindow.dismiss();
- binding.etSearch.setHint("鎸夆�滃湴鐐光�濇悳绱�");
+ if (id == R.id.tv_add){
+ AppManager.getAppManager().startActivity(new Intent(this,CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
+ }else if (id == R.id.tv_select){
+ viewModel.getOperateTypeLiveData().postValue(1);
+ mOperatePopupWindow.dismiss();
+ } else if (id == R.id.tv_from_new_to_old) {
+ viewModel.changeOrder(true);
+ mOperatePopupWindow.dismiss();
+ } else if (id == R.id.tv_from_old_to_new) {
+ viewModel.changeOrder(false);
+ mOperatePopupWindow.dismiss();
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
index c8c606b..dbaa710 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
@@ -11,13 +11,18 @@
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.android.app_base.http.ResultData;
import com.android.app_base.utils.RxUtils;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -32,9 +37,11 @@
*/
public class FamilyMemorabiliaActivityViewModel extends BaseViewModel<DataRepository> {
- private MutableLiveData<List<FamilyMemorabiliaBean>> checkListLiveData;
- private MutableLiveData<List<FamilyMemorabiliaBean>> dataListLiveData;
- private MutableLiveData<String> stringMutableLiveData;
+ private MutableLiveData<List<FamilyMemorabiliaBean>> checkListLiveData;//閫変腑鐨勬暟鎹�
+ private MutableLiveData<List<FamilyMemorabiliaBean>> dataListLiveData;//鎵�鏈夋暟鎹�
+ private MutableLiveData<Integer> operateTypeLiveData;//鎿嶄綔绫诲瀷 0 閫夋嫨鎿嶄綔 1.瀹屾垚 2.鍒犻櫎
+
+ private MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData;
public FamilyMemorabiliaActivityViewModel(@NonNull Application application) {
super(application);
}
@@ -46,24 +53,11 @@
/**
* 鑾峰彇瀹跺ぇ浜嬭
*/
- public void getFamilyMemorabilia(int searchType) {
- Map<String, Object> queryMap = new HashMap<>();
- queryMap.put("pageNum",1);
- queryMap.put("pageSize",20);
- if (searchType == 1){
- queryMap.put("remark",stringMutableLiveData.getValue());
- } else if (searchType == 2) {
- queryMap.put("title",stringMutableLiveData.getValue());
- }else if (searchType == 3) {
- queryMap.put("people",stringMutableLiveData.getValue());
+ public void getFamilyMemorabilia() {
+ if (getRequestBeanMutableLiveData().getValue() == null){
+ getRequestBeanMutableLiveData().setValue(new FamilyMemorabiliaRequestBean());
}
- else if (searchType == 4) {
- queryMap.put("createTime",stringMutableLiveData.getValue());
- }
- else if (searchType == 5) {
- queryMap.put("address",stringMutableLiveData.getValue());
- }
- model.getFamilyMemorabilia(queryMap)
+ model.getFamilyMemorabilia(getRequestBeanMutableLiveData().getValue().getMap())
.compose(RxUtils.schedulersTransformer())
.subscribe(new Observer<ResultData<FamilyMemorabiliaResponseBean>>() {
@Override
@@ -77,6 +71,7 @@
if (data.getData().getData().isEmpty()){
changeStateView(StateViewEnum.DATA_NULL);
}else {
+ changeStateView(StateViewEnum.HIDE);
dataListLiveData.postValue(data.getData().getData());
}
}else {
@@ -168,35 +163,60 @@
this.dataListLiveData = dataListLiveData;
}
- public MutableLiveData<String> getStringMutableLiveData() {
- if (stringMutableLiveData == null){
- stringMutableLiveData = new MutableLiveData<>();
+ @NonNull
+ public MutableLiveData<FamilyMemorabiliaRequestBean> getRequestBeanMutableLiveData() {
+ if (requestBeanMutableLiveData == null){
+ requestBeanMutableLiveData = new MutableLiveData<>();
}
- return stringMutableLiveData;
+ if (requestBeanMutableLiveData.getValue()==null){
+ requestBeanMutableLiveData.postValue(new FamilyMemorabiliaRequestBean());
+ }
+ return requestBeanMutableLiveData;
}
- public void setStringMutableLiveData(MutableLiveData<String> stringMutableLiveData) {
- this.stringMutableLiveData = stringMutableLiveData;
+ public void setRequestBeanMutableLiveData(MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData) {
+ this.requestBeanMutableLiveData = requestBeanMutableLiveData;
+ }
+
+ public MutableLiveData<Integer> getOperateTypeLiveData() {
+ if (operateTypeLiveData == null){
+ operateTypeLiveData = new MutableLiveData<>();
+ operateTypeLiveData.setValue(0);
+ }
+ return operateTypeLiveData;
+ }
+
+ public void setOperateTypeLiveData(MutableLiveData<Integer> operateTypeLiveData) {
+ this.operateTypeLiveData = operateTypeLiveData;
}
public void changeOrder(boolean b) {
- List<FamilyMemorabiliaBean> dataList = getDataListLiveData().getValue();
- if (dataList == null) return;
- if (b){
- dataList.sort(new Comparator<FamilyMemorabiliaBean>() {
- @Override
- public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) {
- return (int) (o1.getId() - o2.getId());
- }
- });
- }else {
- dataList.sort(new Comparator<FamilyMemorabiliaBean>() {
- @Override
- public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) {
- return (int) (o2.getId() - o1.getId());
- }
- });
+ List<FamilyMemorabiliaBean> list = getDataListLiveData().getValue();
+ if (list == null || list.isEmpty()){
+ return;
}
- getDataListLiveData().postValue(dataList);
+ list.sort(new Comparator<FamilyMemorabiliaBean>() {
+ @Override
+ public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault());
+ Date date1 = null;
+ Date date2 = null;
+ try {
+ date1 = format.parse(o1.getCreateTime());
+ date2 = format.parse(o2.getCreateTime());
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+ if (date1 != null && date2 != null) {
+ if (b){
+ return date2.compareTo(date1);
+ }else {
+ return date1.compareTo(date2);
+ }
+ }
+ return 0;
+ }
+ });
+ getDataListLiveData().postValue(list);
}
}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
index 6c08b27..721915d 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
@@ -47,6 +47,24 @@
AppManager.getAppManager().startActivity(FamilyMemorabiliaActivity.class);
}
});
+ binding.layoutGrowingUp.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ AppManager.getAppManager().startActivity(GrowthExperienceActivity.class);
+ }
+ });
+ binding.layoutFamilyAssets.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ AppManager.getAppManager().startActivity(FamilyAssetsActivity.class);
+ }
+ });
+ binding.layoutHomeDevices.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ AppManager.getAppManager().startActivity(HomeDevicesActivity.class);
+ }
+ });
}
@Override
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java
new file mode 100644
index 0000000..9a32a27
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java
@@ -0,0 +1,99 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.graphics.drawable.ColorDrawable;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.PopupWindow;
+
+import com.android.app_base.utils.ScreenSizeUtils;
+import com.android.app_base.widget.LinearItemDecoration;
+import com.application.zhangshi_app_android.BR;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.FamilyAssetsRvAdapter;
+import com.application.zhangshi_app_android.adapter.HomeDevicesRvAdapter;
+import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 0:00
+ * @desc 瀹跺涵璁惧
+ */
+public class HomeDevicesActivity extends DLBaseActivity<ActivityHomeDevicesBinding,HomeDevicesActivityViewModel> {
+
+ private HomeDevicesRvAdapter adapter;
+ private PopupWindow mOperatePopupWindow;
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.activity_home_devices;
+ }
+
+ @Override
+ public int getVariableId() {
+ return BR.viewModel;
+ }
+
+ @Override
+ public void initParam() {
+
+ }
+
+ @Override
+ public void initView() {
+ adapter = new HomeDevicesRvAdapter(this);
+ LinearItemDecoration itemDecoration = new LinearItemDecoration();
+ itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12));
+ itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
+ itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
+ binding.recyclerView.addItemDecoration(itemDecoration);
+ binding.recyclerView.setAdapter(adapter);
+
+ mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null));
+ mOperatePopupWindow.getContentView().findViewById(R.id.layout_add).setVisibility(View.GONE);
+ mOperatePopupWindow.getContentView().findViewById(R.id.layout_select).setVisibility(View.GONE);
+ mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> {
+ viewModel.sortDataList(0);
+ mOperatePopupWindow.dismiss();
+ });
+ mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> {
+ viewModel.sortDataList(1);
+ mOperatePopupWindow.dismiss();
+ });
+ binding.ivOperate.setOnClickListener(v -> {
+ mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+ });
+ }
+
+ @Override
+ public void initData() {
+ viewModel.getHomeDevices();
+ }
+
+ @Override
+ public void initLiveDataObserve() {
+ viewModel.getDataListLiveData().observe(this, homeDevices -> {
+ adapter.setData(homeDevices);
+ });
+ }
+ private PopupWindow initPopUpWindow(View view){
+ PopupWindow popupWindow = new PopupWindow(this);
+ // 璁剧疆甯冨眬鏂囦欢
+ popupWindow.setContentView(view);
+ // 涓轰簡閬垮厤閮ㄥ垎鏈哄瀷涓嶆樉绀猴紝闇�瑕侀噸鏂拌缃竴涓嬪楂�
+ popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
+ popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+ // 璁剧疆pop閫忔槑鏁堟灉
+ popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
+ // 璁剧疆pop鍑哄叆鍔ㄧ敾
+ popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add);
+ // 璁剧疆pop鑾峰彇鐒︾偣锛屽鏋滀负false鐐瑰嚮杩斿洖鎸夐挳浼氶��鍑哄綋鍓岮ctivity锛屽鏋減op涓湁Editor鐨勮瘽锛宖ocusable蹇呴』瑕佷负true
+ popupWindow.setFocusable(true);
+ // 璁剧疆pop鍙偣鍑伙紝涓篺alse鐐瑰嚮浜嬩欢鏃犳晥锛岄粯璁や负true
+ popupWindow.setTouchable(true);
+ // 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶�
+ popupWindow.setOutsideTouchable(false);
+ return popupWindow;
+ }
+
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java
new file mode 100644
index 0000000..8fa8936
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java
@@ -0,0 +1,138 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import static com.android.app_base.base.BaseConfig.CODE_SUCCESS;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+
+import com.android.app_base.base.StateViewEnum;
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.android.app_base.http.ResultData;
+import com.android.app_base.utils.RxUtils;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
+import com.application.zhangshi_app_android.data.DataRepository;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+import io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 0:01
+ * @desc 瀹跺涵璁惧 ViewModel
+ */
+public class HomeDevicesActivityViewModel extends BaseViewModel<DataRepository> {
+ private MutableLiveData<List<HomeDevicesBean>> dataListLiveData;//鏁版嵁
+
+
+ public HomeDevicesActivityViewModel(@NonNull Application application) {
+ super(application);
+ }
+
+ @Override
+ protected DataRepository initModel() {
+ return DataRepository.getInstance();
+ }
+
+ public void getHomeDevices(){
+ List<HomeDevicesBean> list = new ArrayList<>();
+ list.add(new HomeDevicesBean(1,"鐢佃","2023-04-03","寮犱笁","澶忔櫘娑叉櫠鐢佃","瀹㈠巺","4k瓒呴珮娓�",""));
+ list.add(new HomeDevicesBean(1,"鐢佃","2023-04-02","寮犱笁","澶忔櫘娑叉櫠鐢佃","瀹㈠巺","4k瓒呴珮娓�",""));
+ list.add(new HomeDevicesBean(1,"鐢佃","2023-04-01","寮犱笁","澶忔櫘娑叉櫠鐢佃","瀹㈠巺","4k瓒呴珮娓�",""));
+ if (list != null && !list.isEmpty()){
+ dataListLiveData.postValue(list);
+ return;
+ }
+ model.getHomeDevices(new HashMap<>())
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<HomeDevicesResponseBean>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<HomeDevicesResponseBean> data) {
+ if (data.getCode() == CODE_SUCCESS){
+ if (data.getData().getData().isEmpty()){
+ changeStateView(StateViewEnum.DATA_NULL);
+ }else {
+ changeStateView(StateViewEnum.HIDE);
+ dataListLiveData.postValue(data.getData().getData());
+ }
+ }else {
+ messageLiveData.postValue(data.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ public MutableLiveData<List<HomeDevicesBean>> getDataListLiveData() {
+ if (dataListLiveData == null){
+ dataListLiveData = new MutableLiveData<>();
+ }
+ return dataListLiveData;
+ }
+
+ public void setDataListLiveData(MutableLiveData<List<HomeDevicesBean>> dataListLiveData) {
+ this.dataListLiveData = dataListLiveData;
+ }
+
+ /**
+ * 鎸夋椂闂存帓搴�
+ * @param type 0 浠庢柊鍒版棫 1 浠庢棫鍒版柊
+ */
+ public void sortDataList(int type){
+ List<HomeDevicesBean> list = dataListLiveData.getValue();
+ if (list == null || list.isEmpty()){
+ return;
+ }
+
+ list.sort(new Comparator<HomeDevicesBean>() {
+ @Override
+ public int compare(HomeDevicesBean o1, HomeDevicesBean o2) {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault());
+ Date date1 = null;
+ Date date2 = null;
+ try {
+ date1 = format.parse(o1.getCreateTime());
+ date2 = format.parse(o2.getCreateTime());
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+ if (date1 != null && date2 != null) {
+ if (type == 0){
+ return date2.compareTo(date1);
+ }else {
+ return date1.compareTo(date2);
+ }
+ }
+ return 0;
+ }
+ });
+ dataListLiveData.postValue(list);
+ }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java
new file mode 100644
index 0000000..a78bb0c
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java
@@ -0,0 +1,103 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.application.zhangshi_app_android.BR;
+import com.application.zhangshi_app_android.R;
+import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesDetailBinding;
+import com.application.zhangshi_app_android.ui.DLBaseActivity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 15:19
+ * @desc
+ */
+public class HomeDevicesDetailActivity extends DLBaseActivity<ActivityHomeDevicesDetailBinding,HomeDevicesDetailActivityViewModel> {
+
+ private ImageRvAdapter adapter;
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.activity_home_devices_detail;
+ }
+
+ @Override
+ public int getVariableId() {
+ return BR.viewModel;
+ }
+
+ @Override
+ public void initParam() {
+ if (getIntent().hasExtra("bean")){
+ viewModel.getBeanLiveData().setValue((HomeDevicesBean) getIntent().getSerializableExtra("bean"));
+ }
+ }
+
+ @Override
+ public void initView() {
+ adapter = new ImageRvAdapter(this);
+ GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
+ binding.rvImage.setLayoutManager(gridLayoutManager);
+ binding.rvImage.setNestedScrollingEnabled(false);
+ setIsEdited(false);
+ }
+
+ @Override
+ public void initData() {
+
+ }
+
+ @Override
+ public void initLiveDataObserve() {
+ viewModel.getBeanLiveData().observe(this,bean -> {
+ if (bean!=null){
+ if (getTitleBar() != null){
+ getTitleBar().setTitle(bean.getName());
+ }
+ String url = bean.getUrl();
+ if (url == null||url.isEmpty()){
+ return;
+ }
+ List<String> list;
+ if (url.contains(",")){
+ String[] split = url.split(",");
+ list = new ArrayList<>(Arrays.asList(split));
+ }else {
+ list = new ArrayList<>();
+ list.add(url);
+ }
+ adapter.setData(list);
+ }
+ });
+ }
+ public void setIsEdited(boolean isEdited){
+ disableAllEditText(getContentView(),isEdited);
+ adapter.setIsEdited(isEdited);
+ }
+ public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
+ for (int i = 0; i < viewGroup.getChildCount(); i++) {
+ View child = viewGroup.getChildAt(i);
+ if (child instanceof ViewGroup) {
+ disableAllEditText((ViewGroup) child,isEdited);
+ } else if (child instanceof EditText) {
+ child.setEnabled(isEdited);
+ child.setFocusable(isEdited);
+ child.setFocusableInTouchMode(isEdited);
+ if (!isEdited){
+ child.clearFocus();
+ }
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java
new file mode 100644
index 0000000..d79aff7
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java
@@ -0,0 +1,41 @@
+package com.application.zhangshi_app_android.ui.function;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MutableLiveData;
+
+import com.android.app_base.base.viewmodel.BaseViewModel;
+import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.data.DataRepository;
+
+/**
+ * @author Ljj
+ * @date 2023.04.04. 15:35
+ * @desc 瀹跺涵璁惧璇︽儏 ViewModel
+ */
+public class HomeDevicesDetailActivityViewModel extends BaseViewModel<DataRepository> {
+ private MutableLiveData<HomeDevicesBean> beanLiveData;
+
+
+ public HomeDevicesDetailActivityViewModel(@NonNull Application application) {
+ super(application);
+ }
+
+ @Override
+ protected DataRepository initModel() {
+ return DataRepository.getInstance();
+ }
+
+ public MutableLiveData<HomeDevicesBean> getBeanLiveData() {
+ if (beanLiveData == null){
+ beanLiveData = new MutableLiveData<>();
+ }
+ return beanLiveData;
+ }
+
+ public void setBeanLiveData(MutableLiveData<HomeDevicesBean> beanLiveData) {
+ this.beanLiveData = beanLiveData;
+ }
+}
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java
index f04b9bb..cf36ae4 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java
@@ -2,6 +2,7 @@
import static com.android.app_base.base.BaseConfig.EXTRA_TYPE;
+import android.Manifest;
import android.content.Intent;
import android.view.View;
@@ -10,10 +11,12 @@
import com.android.app_base.base.view.BaseActivity;
import com.android.app_base.manager.AppManager;
import com.android.app_base.manager.UserManager;
+import com.android.app_base.utils.ToastUtils;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.databinding.ActivityLoginBinding;
import com.application.zhangshi_app_android.ui.main.MainActivity;
+import com.blankj.utilcode.util.PermissionUtils;
import com.gyf.immersionbar.ImmersionBar;
/**
@@ -35,7 +38,6 @@
@Override
public void initParam() {
- System.out.println("token"+UserManager.getInstance().getToken());
if (!UserManager.getInstance().getToken().isEmpty()){
AppManager.getAppManager().startActivity(MainActivity.class);
finish();
diff --git a/app/src/main/res/drawable-xhdpi/function_home_devices.png b/app/src/main/res/drawable-xhdpi/function_home_devices.png
new file mode 100644
index 0000000..3f911ec
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/function_home_devices.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/function_notes.png b/app/src/main/res/drawable-xhdpi/function_notes.png
index e5a6f62..b4f50ba 100644
--- a/app/src/main/res/drawable-xhdpi/function_notes.png
+++ b/app/src/main/res/drawable-xhdpi/function_notes.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_clear.png b/app/src/main/res/drawable-xhdpi/ic_clear.png
new file mode 100644
index 0000000..d3ccddf
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_clear.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_image_delete.png b/app/src/main/res/drawable-xhdpi/ic_image_delete.png
new file mode 100644
index 0000000..da7d576
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_image_delete.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/img_data_null.png b/app/src/main/res/drawable-xhdpi/img_data_null.png
new file mode 100644
index 0000000..9efc642
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/img_data_null.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/function_home_devices.png b/app/src/main/res/drawable-xxhdpi/function_home_devices.png
new file mode 100644
index 0000000..cf80c9a
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/function_home_devices.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/function_notes.png b/app/src/main/res/drawable-xxhdpi/function_notes.png
index e5a6f62..594f81c 100644
--- a/app/src/main/res/drawable-xxhdpi/function_notes.png
+++ b/app/src/main/res/drawable-xxhdpi/function_notes.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_clear.png b/app/src/main/res/drawable-xxhdpi/ic_clear.png
new file mode 100644
index 0000000..2d3197e
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_clear.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_image_delete.png b/app/src/main/res/drawable-xxhdpi/ic_image_delete.png
new file mode 100644
index 0000000..b00f2e6
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_image_delete.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_data_null.png b/app/src/main/res/drawable-xxhdpi/img_data_null.png
new file mode 100644
index 0000000..f779ae1
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/img_data_null.png
Binary files differ
diff --git a/app/src/main/res/drawable/shape_73fab4cd_solid.xml b/app/src/main/res/drawable/shape_73fab4cd_solid.xml
index 7c318ce..302267a 100644
--- a/app/src/main/res/drawable/shape_73fab4cd_solid.xml
+++ b/app/src/main/res/drawable/shape_73fab4cd_solid.xml
@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:shape="rectangle">
- <solid android:color="#73fab4cd" />
- <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp" />
+ <solid android:color="#73FAB4CD" />
+ <corners android:radius="10dp" />
</shape>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_family_assets.xml b/app/src/main/res/layout/activity_family_assets.xml
new file mode 100644
index 0000000..3af418b
--- /dev/null
+++ b/app/src/main/res/layout/activity_family_assets.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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">
+
+ <data>
+ <variable
+ name="viewModel"
+ type="com.application.zhangshi_app_android.ui.function.FamilyAssetsActivityViewModel" />
+ </data>
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <com.android.app_base.widget.ExtendTitleBar
+ android:id="@+id/titleBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent"
+ >
+ <FrameLayout
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginHorizontal="16dp"
+ android:layout_gravity="center_vertical|end"
+ >
+ <ImageView
+ android:id="@+id/iv_operate"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:background="@drawable/ic_operate"
+ />
+ </FrameLayout>
+
+ <LinearLayout
+ android:id="@+id/layout_default"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginHorizontal="56dp"
+ android:gravity="center_vertical"
+ >
+ <TextView
+ android:id="@+id/tv_title"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:text="瀹跺涵璧勪骇"
+ android:layout_weight="1"
+ android:textColor="@color/white"
+ android:textSize="@dimen/sp_20"
+ />
+ <ImageView
+ android:id="@+id/iv_search_default"
+ android:layout_width="@dimen/dp_24"
+ android:layout_height="@dimen/dp_24"
+ android:background="@drawable/ic_search"
+ />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/layout_search"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginVertical="4dp"
+ android:layout_marginHorizontal="56dp"
+ android:gravity="center_vertical"
+ android:background="@color/white"
+ android:paddingHorizontal="5dp"
+ android:visibility="gone"
+ >
+ <ImageView
+ android:id="@+id/iv_search"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:background="@drawable/ic_search_gray"
+ />
+ <EditText
+ android:id="@+id/et_search"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:layout_marginStart="5dp"
+ android:textSize="14sp"
+ android:textColor="#61000000"
+ android:background="@null"
+ android:imeOptions="actionSearch"
+ android:text=""
+ android:singleLine="true"
+ android:hint="鍦ㄢ�滃澶т簨璁板唴鎼滅储鈥�"
+ />
+ <ImageView
+ android:id="@+id/iv_search_type"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:background="@drawable/ic_search_by"
+ />
+ </LinearLayout>
+
+ </com.android.app_base.widget.ExtendTitleBar>
+
+ <LinearLayout
+ android:id="@+id/layout_data_null"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/titleBar">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/img_data_null"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="18dp"
+ android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�"
+ android:textSize="14sp"
+ android:textColor="#73000000"
+ />
+ </LinearLayout>
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/recyclerView"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:background="@color/color_normal_background"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/titleBar"
+ app:layout_constraintVertical_bias="1.0"
+ tools:itemCount="20"
+ tools:layout_editor_absoluteX="-81dp"
+ tools:listitem="@layout/item_family_memorabilia" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_family_assets_detail.xml b/app/src/main/res/layout/activity_family_assets_detail.xml
new file mode 100644
index 0000000..63f1c2a
--- /dev/null
+++ b/app/src/main/res/layout/activity_family_assets_detail.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools">
+
+ <data>
+ <variable
+ name="viewModel"
+ type="com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivityViewModel" />
+ </data>
+
+ <LinearLayout
+ tools:context=".ui.function.CreateFamilyProjectActivity"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/color_normal_background"
+ android:orientation="vertical">
+
+ <com.android.app_base.widget.ExtendTitleBar
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:title="鍝堝搱鍝�"
+ app:titleGravity="left"
+ />
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toBottomOf="@id/titleBar"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingHorizontal="20dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="@dimen/dp_10"
+ android:layout_height="@dimen/dp_20"
+ android:text="绫诲埆"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+
+
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:inputType="text"
+ android:autofillHints="creditCardNumber"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:textSize="16sp"
+ android:text="@={viewModel.beanLiveData.type}"
+ />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="鏃堕棿"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.createTime}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="璇佷欢鍗″彿"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:text="@={viewModel.beanLiveData.title}"
+ android:textColor="#DE000000"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="寮�鎴疯"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.location}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="鎸佹湁浜�"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.holder}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="瀛樻斁鍦扮偣"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.address}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="澶囨敞"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.remark}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="鐢靛瓙鏂囦欢"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/shape_6b0000_stroke"
+ >
+ <com.android.app_base.widget.WrapRecyclerView
+ android:id="@+id/rv_image"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="10dp"
+ android:layout_marginTop="2sp"
+ android:paddingStart="10dp"
+ android:paddingEnd="5dp"
+ android:paddingVertical="10dp"
+ />
+
+ </RelativeLayout>
+
+
+ </LinearLayout>
+ </ScrollView>
+
+
+ </LinearLayout>
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_family_memorabilia.xml b/app/src/main/res/layout/activity_family_memorabilia.xml
index 6dd883b..60fe133 100644
--- a/app/src/main/res/layout/activity_family_memorabilia.xml
+++ b/app/src/main/res/layout/activity_family_memorabilia.xml
@@ -1,759 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
-
+ xmlns:tools="http://schemas.android.com/tools"
+ >
<data>
<variable
name="viewModel"
type="com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel"/>
</data>
- <androidx.drawerlayout.widget.DrawerLayout
- android:id="@+id/drawerLayout"
+
+ <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:openDrawer="start"
- >
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".ui.function.FamilyMemorabiliaActivity"
- android:orientation="vertical">
+ tools:context=".ui.function.FamilyMemorabiliaActivity"
+ android:orientation="vertical">
- <com.hjq.bar.TitleBar
- android:id="@+id/titleBar"
- android:layout_width="match_parent"
- android:layout_height="?attr/actionBarSize"
- app:layout_constraintTop_toTopOf="parent"
- android:paddingHorizontal="0dp"
- android:background="@color/color_title_bar_background"
- app:leftIcon="@null"
- app:rightIcon="@null"
+ <com.android.app_base.widget.ExtendTitleBar
+ android:id="@+id/titleBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent"
+ >
+ <FrameLayout
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginHorizontal="16dp"
+ android:layout_gravity="center_vertical|end"
>
<ImageView
- android:id="@+id/iv_menu"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:layout_marginHorizontal="16dp"
- android:background="@drawable/ic_menu"
- android:layout_gravity="center_vertical"
- />
- <FrameLayout
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:layout_marginHorizontal="16dp"
- android:layout_gravity="center_vertical|end"
- >
- <ImageView
- android:id="@+id/iv_operate"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:background="@drawable/ic_operate"
- />
- </FrameLayout>
-
- <LinearLayout
- android:id="@+id/layout_default"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginHorizontal="56dp"
- android:gravity="center_vertical"
- >
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:text="瀹跺ぇ浜嬭"
- android:layout_weight="1"
- android:textColor="@color/white"
- android:textSize="@dimen/sp_20"
- />
- <ImageView
- android:id="@+id/iv_search_default"
- android:layout_width="@dimen/dp_24"
- android:layout_height="@dimen/dp_24"
- android:background="@drawable/ic_search"
- />
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/layout_search"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginVertical="4dp"
- android:layout_marginHorizontal="56dp"
- android:gravity="center_vertical"
- android:background="@color/white"
- android:paddingHorizontal="5dp"
- android:visibility="gone"
- >
- <ImageView
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:background="@drawable/ic_search_gray"
- />
- <EditText
- android:id="@+id/et_search"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_marginStart="5dp"
- android:textSize="14sp"
- android:textColor="#61000000"
- android:background="@null"
- android:imeOptions="actionSearch"
- android:text="@={viewModel.stringMutableLiveData}"
- android:singleLine="true"
- android:hint="鍏ㄥ眬鎼滅储"
- />
- <ImageView
- android:id="@+id/iv_search_type"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:background="@drawable/ic_search_by"
- />
- </LinearLayout>
-
- </com.hjq.bar.TitleBar>
-
- <LinearLayout
- android:id="@+id/layout_data_null"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/titleBar">
-
- <ImageView
+ android:id="@+id/iv_operate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:background="@drawable/img_sakura"
+ android:layout_gravity="center"
+ android:background="@drawable/ic_operate"
/>
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="18dp"
- android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�"
- android:textSize="14sp"
- android:textColor="#73000000"
- />
- </LinearLayout>
+ </FrameLayout>
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/recyclerView"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:background="@color/color_normal_background"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/titleBar"
- app:layout_constraintVertical_bias="1.0"
- tools:itemCount="20"
- tools:layout_editor_absoluteX="-81dp"
- tools:listitem="@layout/item_family_memorabilia" />
-
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/fab_add"
- android:layout_width="@dimen/dp_56"
- android:layout_height="@dimen/dp_56"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- android:layout_marginEnd="@dimen/dp_25"
- android:layout_marginBottom="@dimen/dp_44"
- android:src="@drawable/ic_add"
- app:fabCustomSize="@dimen/dp_56"
- />
- </androidx.constraintlayout.widget.ConstraintLayout>
- <androidx.core.widget.NestedScrollView
- android:layout_width="211dp"
- android:layout_height="match_parent"
- android:layout_gravity="start"
- android:background="@color/color_card_pink"
- android:paddingTop="25dp"
- >
<LinearLayout
+ android:id="@+id/layout_default"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical"
- android:paddingHorizontal="12dp"
+ android:layout_marginHorizontal="56dp"
+ android:gravity="center_vertical"
>
- <LinearLayout
- android:layout_width="wrap_content"
+ <TextView
+ android:id="@+id/tv_title"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="33dp"
- android:layout_marginBottom="20dp"
- android:gravity="center"
- >
- <androidx.constraintlayout.utils.widget.ImageFilterView
- android:layout_width="50dp"
- android:layout_height="50dp"
- app:roundPercent="1"
- android:background="@drawable/img_sakura"
- />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="寮犲柕"
- android:textSize="18sp"
- android:textColor="@color/black"
- android:layout_marginStart="16dp"
- />
- </LinearLayout>
- <androidx.cardview.widget.CardView
- android:layout_width="match_parent"
- android:layout_height="304dp"
- app:cardBackgroundColor="@color/white"
- app:cardCornerRadius="10dp"
- app:cardElevation="0dp"
- >
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:paddingVertical="8dp"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="鏍稿績鏉垮潡"
- android:textColor="@color/black"
- android:textSize="12sp"
- android:layout_marginStart="14dp"
- />
- <View
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:background="#FFF3F3F3"
- />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_family_root_net"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="瀹舵牴缃�"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_notes"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="瀹跺ぇ浜嬭"
- android:textColor="#FFF6739F"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_pink"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_asset"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="瀹跺涵璧勪骇"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_home_devices"
- />
-
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="瀹跺涵璁惧"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_honor"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="鏀惰棌銆佽崳瑾�"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_little_doctor"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="灏忓尰鐢�"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_cleaning"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="淇濇磥銆佹敹绾�"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_mail_list"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="閫氳褰�"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_pet"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="榄呭疇"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_income_expense"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="瀹跺涵鏀舵敮鍙拌处"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- </LinearLayout>
-
-
- </androidx.cardview.widget.CardView>
- <androidx.cardview.widget.CardView
- android:layout_width="match_parent"
- android:layout_height="240dp"
- app:cardBackgroundColor="@color/white"
- app:cardCornerRadius="10dp"
- app:cardElevation="0dp"
- android:layout_marginTop="26dp"
- android:layout_marginBottom="14dp"
- >
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="涓汉鏉垮潡"
- android:textColor="@color/black"
- android:textSize="12sp"
- android:layout_marginVertical="8dp"
- android:layout_marginStart="14dp"
- />
- <View
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:background="#FFF3F3F3"
- />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_growth"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="鎴愰暱缁忓巻闃呭巻"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_marriage"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="濠氬Щ"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_property"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="璐骇"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_wish"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="鐧惧勾蹇冩効"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_tour"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="鏃呮父"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
-
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_health" />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="鍋ュ悍淇濆仴"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_certificate"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="鑽h獕銆佽瘉涔﹀椤�"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:paddingHorizontal="15dp"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_privacy"
- />
- <TextView
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="闅愮"
- android:textColor="@color/black"
- android:textSize="14sp"
- android:layout_marginStart="15dp"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_vector_gray"
- />
- </LinearLayout>
- </LinearLayout>
-
-
- </androidx.cardview.widget.CardView>
+ android:layout_marginStart="16dp"
+ android:text="瀹跺ぇ浜嬭"
+ android:layout_weight="1"
+ android:textColor="@color/white"
+ android:textSize="@dimen/sp_20"
+ />
+ <ImageView
+ android:id="@+id/iv_search_default"
+ android:layout_width="@dimen/dp_24"
+ android:layout_height="@dimen/dp_24"
+ android:background="@drawable/ic_search"
+ />
</LinearLayout>
- </androidx.core.widget.NestedScrollView>
- </androidx.drawerlayout.widget.DrawerLayout>
+ <LinearLayout
+ android:id="@+id/layout_search"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginVertical="4dp"
+ android:layout_marginHorizontal="56dp"
+ android:gravity="center_vertical"
+ android:background="@color/white"
+ android:paddingHorizontal="5dp"
+ android:visibility="gone"
+ >
+ <ImageView
+ android:id="@+id/iv_search"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:background="@drawable/ic_search_gray"
+ />
+ <EditText
+ android:id="@+id/et_search"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:layout_marginStart="5dp"
+ android:textSize="14sp"
+ android:textColor="#61000000"
+ android:background="@null"
+ android:imeOptions="actionSearch"
+ android:text=""
+ android:singleLine="true"
+ android:hint="鍦ㄢ�滃澶т簨璁板唴鎼滅储鈥�"
+ />
+ <ImageView
+ android:id="@+id/iv_search_type"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:background="@drawable/ic_search_by"
+ />
+ </LinearLayout>
+
+ </com.android.app_base.widget.ExtendTitleBar>
+
+ <LinearLayout
+ android:id="@+id/layout_data_null"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/titleBar">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/img_data_null"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="18dp"
+ android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�"
+ android:textSize="14sp"
+ android:textColor="#73000000"
+ />
+ </LinearLayout>
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/recyclerView"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:background="@color/color_normal_background"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/titleBar"
+ app:layout_constraintVertical_bias="1.0"
+ tools:itemCount="20"
+ tools:layout_editor_absoluteX="-81dp"
+ tools:listitem="@layout/item_family_memorabilia" />
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/fab_add"
+ android:layout_width="@dimen/dp_56"
+ android:layout_height="@dimen/dp_56"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ android:layout_marginEnd="@dimen/dp_25"
+ android:layout_marginBottom="@dimen/dp_44"
+ android:src="@drawable/ic_add"
+ app:fabCustomSize="@dimen/dp_56"
+ />
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_family_create.xml b/app/src/main/res/layout/activity_family_memorabilia_create.xml
similarity index 84%
rename from app/src/main/res/layout/item_family_create.xml
rename to app/src/main/res/layout/activity_family_memorabilia_create.xml
index e43ff34..16cc68c 100644
--- a/app/src/main/res/layout/item_family_create.xml
+++ b/app/src/main/res/layout/activity_family_memorabilia_create.xml
@@ -13,6 +13,7 @@
tools:context=".ui.function.CreateFamilyProjectActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="@color/color_normal_background"
android:orientation="vertical">
<com.hjq.bar.TitleBar
@@ -44,7 +45,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
- android:background="@drawable/ic_operate"
+ android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}"
/>
</FrameLayout>
@@ -95,7 +96,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="璇疯緭鍏ユ爣棰�"
- android:inputType="number"
+ android:inputType="text"
android:autofillHints="creditCardNumber"
android:textColorHint="#6b000000"
android:textColor="#DE000000"
@@ -119,7 +120,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:hint="璇疯緭鍏ユ椂闂�"
- android:inputType="number"
+ android:inputType="text"
android:textColorHint="#6b000000"
android:textColor="#DE000000"
android:text="@={viewModel.beanMutableLiveData.createTime}"
@@ -141,7 +142,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:hint="璇疯緭鍏ヤ汉鐗�"
- android:inputType="number"
+ android:inputType="text"
android:textColorHint="#6b000000"
android:text="@={viewModel.beanMutableLiveData.people}"
android:textColor="#DE000000"
@@ -163,7 +164,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:hint="璇疯緭鍏ュ湴鐐�"
- android:inputType="number"
+ android:inputType="text"
android:textColorHint="#6b000000"
android:textColor="#DE000000"
android:text="@={viewModel.beanMutableLiveData.address}"
@@ -185,7 +186,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:hint="璇疯緭鍏ュ娉�"
- android:inputType="number"
+ android:inputType="text"
android:textColorHint="#6b000000"
android:textColor="#DE000000"
android:text="@={viewModel.beanMutableLiveData.remark}"
@@ -199,39 +200,19 @@
android:textColor="#ff000000"
android:textSize="@dimen/sp_12"
/>
- <LinearLayout
+ <com.android.app_base.widget.WrapRecyclerView
+ android:id="@+id/rv_image"
android:orientation="vertical"
android:layout_width="match_parent"
- android:layout_height="@dimen/dp_180"
- android:layout_marginTop="@dimen/dp_2"
+ android:layout_height="wrap_content"
android:background="@drawable/shape_6b0000_stroke"
- android:layout_marginBottom="10dp"
- >
+ android:layout_marginBottom="20dp"
+ android:layout_marginTop="@dimen/dp_2"
+ android:paddingStart="10dp"
+ android:paddingEnd="5dp"
+ android:paddingVertical="10dp"
+ />
- <Button
- android:id="@+id/button_add"
- android:layout_width="@dimen/dp_85"
- android:layout_height="@dimen/dp_85"
- android:text="+"
- android:textColor="@color/black"
- android:textSize="@dimen/dp_35"
- android:gravity="center"
- android:layout_marginLeft="@dimen/dp_10"
- android:layout_marginTop="@dimen/dp_10"
- android:background="@drawable/shape_73fab4cd_solid"
- />
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="瀵煎叆"
- android:textColorHint="#6b000000"
- android:textColor="#DE000000"
- android:textSize="@dimen/sp_12"
- android:layout_marginLeft="@dimen/dp_40"
- />
-
- </LinearLayout>
</LinearLayout>
</ScrollView>
diff --git a/app/src/main/res/layout/activity_home_devices.xml b/app/src/main/res/layout/activity_home_devices.xml
new file mode 100644
index 0000000..d1078b6
--- /dev/null
+++ b/app/src/main/res/layout/activity_home_devices.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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">
+
+ <data>
+ <variable
+ name="viewModel"
+ type="com.application.zhangshi_app_android.ui.function.HomeDevicesActivityViewModel" />
+ </data>
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <com.android.app_base.widget.ExtendTitleBar
+ android:id="@+id/titleBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent"
+ >
+ <FrameLayout
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginHorizontal="16dp"
+ android:layout_gravity="center_vertical|end"
+ >
+ <ImageView
+ android:id="@+id/iv_operate"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:background="@drawable/ic_operate"
+ />
+ </FrameLayout>
+
+ <LinearLayout
+ android:id="@+id/layout_default"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginHorizontal="56dp"
+ android:gravity="center_vertical"
+ >
+ <TextView
+ android:id="@+id/tv_title"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:text="瀹跺涵璁惧"
+ android:layout_weight="1"
+ android:textColor="@color/white"
+ android:textSize="@dimen/sp_20"
+ />
+ <ImageView
+ android:id="@+id/iv_search_default"
+ android:layout_width="@dimen/dp_24"
+ android:layout_height="@dimen/dp_24"
+ android:background="@drawable/ic_search"
+ />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/layout_search"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginVertical="4dp"
+ android:layout_marginHorizontal="56dp"
+ android:gravity="center_vertical"
+ android:background="@color/white"
+ android:paddingHorizontal="5dp"
+ android:visibility="gone"
+ >
+ <ImageView
+ android:id="@+id/iv_search"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:background="@drawable/ic_search_gray"
+ />
+ <EditText
+ android:id="@+id/et_search"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:layout_marginStart="5dp"
+ android:textSize="14sp"
+ android:textColor="#61000000"
+ android:background="@null"
+ android:imeOptions="actionSearch"
+ android:text=""
+ android:singleLine="true"
+ android:hint="鍦ㄢ�滃澶т簨璁板唴鎼滅储鈥�"
+ />
+ <ImageView
+ android:id="@+id/iv_search_type"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:background="@drawable/ic_search_by"
+ />
+ </LinearLayout>
+
+ </com.android.app_base.widget.ExtendTitleBar>
+
+ <LinearLayout
+ android:id="@+id/layout_data_null"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/titleBar">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/img_data_null"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="18dp"
+ android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�"
+ android:textSize="14sp"
+ android:textColor="#73000000"
+ />
+ </LinearLayout>
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/recyclerView"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:background="@color/color_normal_background"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/titleBar"
+ app:layout_constraintVertical_bias="1.0"
+ tools:itemCount="20"
+ tools:layout_editor_absoluteX="-81dp"
+ tools:listitem="@layout/item_family_memorabilia" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_home_devices_detail.xml b/app/src/main/res/layout/activity_home_devices_detail.xml
new file mode 100644
index 0000000..aef2274
--- /dev/null
+++ b/app/src/main/res/layout/activity_home_devices_detail.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ >
+
+ <data>
+ <variable
+ name="viewModel"
+ type="com.application.zhangshi_app_android.ui.function.HomeDevicesDetailActivityViewModel" />
+ </data>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/color_normal_background"
+ android:orientation="vertical">
+
+ <com.android.app_base.widget.ExtendTitleBar
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:titleGravity="left"
+ />
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toBottomOf="@id/titleBar"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingHorizontal="20dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="@dimen/dp_10"
+ android:layout_height="@dimen/dp_20"
+ android:text="璁惧鍚嶇О"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+
+
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:inputType="text"
+ android:autofillHints="creditCardNumber"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:textSize="16sp"
+ android:text="@={viewModel.beanLiveData.name}"
+ />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="鏃堕棿"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.createTime}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="璐拱浜�"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:text="@={viewModel.beanLiveData.people}"
+ android:textColor="#DE000000"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="浜嬮」鍐呭"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.content}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="瀛樻斁鍦扮偣"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.address}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="澶囨敞"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:inputType="text"
+ android:textColorHint="#6b000000"
+ android:textColor="#DE000000"
+ android:text="@={viewModel.beanLiveData.remark}"
+ android:textSize="16sp" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_height="wrap_content"
+ android:text="鐢靛瓙鏂囦欢"
+ android:textColor="#767375"
+ android:textSize="12sp"
+ />
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/shape_6b0000_stroke"
+ >
+ <com.android.app_base.widget.WrapRecyclerView
+ android:id="@+id/rv_image"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="10dp"
+ android:layout_marginTop="2sp"
+ android:paddingStart="10dp"
+ android:paddingEnd="5dp"
+ android:paddingVertical="10dp"
+ />
+
+ </RelativeLayout>
+
+
+ </LinearLayout>
+ </ScrollView>
+
+
+ </LinearLayout>
+
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_function.xml b/app/src/main/res/layout/fragment_function.xml
index a73a4df..58f109f 100644
--- a/app/src/main/res/layout/fragment_function.xml
+++ b/app/src/main/res/layout/fragment_function.xml
@@ -175,8 +175,8 @@
app:layout_constraintTop_toTopOf="@id/layout_home_root_net">
<ImageView
- android:layout_width="@dimen/dp_24"
- android:layout_height="@dimen/dp_24"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:background="@drawable/function_notes" />
<TextView
@@ -357,6 +357,30 @@
android:textSize="@dimen/sp_14" />
</LinearLayout>
+ <LinearLayout
+ android:id="@+id/layout_home_devices"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:orientation="vertical"
+ app:layout_constraintEnd_toEndOf="@id/layout_family_memorabilia"
+ app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia"
+ app:layout_constraintTop_toTopOf="@+id/layout_income_and_expenses">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/function_home_devices" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/dp_4"
+ android:text="瀹跺涵璁惧"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_14" />
+ </LinearLayout>
+
<TextView
android:id="@+id/tv_personal_module"
android:layout_width="wrap_content"
diff --git a/app/src/main/res/layout/item_family_assets.xml b/app/src/main/res/layout/item_family_assets.xml
new file mode 100644
index 0000000..a345209
--- /dev/null
+++ b/app/src/main/res/layout/item_family_assets.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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">
+
+ <data>
+ <variable
+ name="bean"
+ type="com.application.zhangshi_app_android.bean.FamilyAssetsBean" />
+ </data>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ >
+ <androidx.cardview.widget.CardView
+ android:id="@+id/cardView"
+ android:layout_width="match_parent"
+ android:layout_height="40dp"
+ android:layout_margin="@dimen/dp_2"
+ app:cardCornerRadius="@dimen/dp_10"
+ app:cardBackgroundColor="@color/color_card_pink"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ >
+ <RelativeLayout
+ android:id="@+id/layout_title"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/dp_40"
+ android:gravity="center_vertical"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:layout_marginStart="24dp"
+ android:textSize="@dimen/sp_16"
+ android:textColor="@color/black"
+ android:text="@{bean.type}"
+ android:textStyle="bold"
+ tools:text="鎴夸骇璇�"
+ />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
+ android:layout_centerHorizontal="true"
+ android:layout_marginStart="24dp"
+ android:text="@{bean.holder}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_16"
+ android:textStyle="bold"
+ tools:text="寮犱笁" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="@dimen/sp_16"
+ android:textColor="@color/black"
+ android:text="@{bean.createTime}"
+ android:textStyle="bold"
+ android:layout_marginEnd="24dp"
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ tools:text="2019-01-12"
+ />
+
+ </RelativeLayout>
+ <LinearLayout
+ android:id="@+id/layout_content"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingHorizontal="@dimen/dp_24"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="搴忓彿锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{String.valueOf(bean.id)}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="璇佷欢鍗″彿锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{bean.title}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="寮�鎴疯锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{bean.location}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="瀛樻斁鍦扮偣锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{bean.address}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="澶囨敞锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{bean.remark}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/dp_6"
+ android:text="鐢靛瓙鏂囦欢锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_15"
+ >
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/rv_image"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ tools:listitem="@layout/item_image"
+ tools:itemCount="3"
+ />
+
+ </LinearLayout>
+
+ </LinearLayout>
+ </LinearLayout>
+
+ </androidx.cardview.widget.CardView>
+
+ </LinearLayout>
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_family_memorabilia.xml b/app/src/main/res/layout/item_family_memorabilia.xml
index abcf773..0a3b18f 100644
--- a/app/src/main/res/layout/item_family_memorabilia.xml
+++ b/app/src/main/res/layout/item_family_memorabilia.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto">
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
@@ -154,86 +155,13 @@
android:orientation="horizontal"
android:layout_marginBottom="@dimen/dp_15"
>
-
- <LinearLayout
- android:layout_width="wrap_content"
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/rv_image"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center"
- >
- <ImageView
- android:layout_width="@dimen/dp_70"
- android:layout_height="@dimen/dp_45"
- android:background="@drawable/img_sakura"
- android:layout_marginBottom="@dimen/dp_6"
- />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="sakura.jpg"
- android:textSize="@dimen/sp_10"
- android:textColor="@color/black"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center"
- android:layout_marginStart="@dimen/dp_10"
- >
- <ImageView
- android:layout_width="@dimen/dp_70"
- android:layout_height="@dimen/dp_45"
- android:background="@drawable/img_lotus"
- android:layout_marginBottom="@dimen/dp_6"
- />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="lotus.jpg"
- android:textSize="@dimen/sp_10"
- android:textColor="@color/black"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center"
- android:layout_marginStart="@dimen/dp_10"
- >
- <androidx.cardview.widget.CardView
- android:layout_width="@dimen/dp_70"
- android:layout_height="@dimen/dp_45"
- android:layout_marginBottom="@dimen/dp_6"
- app:cardCornerRadius="@dimen/dp_5"
- >
- <ImageView
- android:layout_width="@dimen/dp_70"
- android:layout_height="@dimen/dp_45"
- android:background="@drawable/img_sakura"
- />
- <View
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#52000000"
- />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_play"
- android:layout_gravity="center"
- />
- </androidx.cardview.widget.CardView>
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="sakura.mp4"
- android:textSize="@dimen/sp_10"
- android:textColor="@color/black"
- />
- </LinearLayout>
+ tools:listitem="@layout/item_image"
+ tools:itemCount="3"
+ />
</LinearLayout>
<LinearLayout
@@ -264,6 +192,7 @@
/>
</LinearLayout>
<LinearLayout
+ android:id="@+id/layout_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
diff --git a/app/src/main/res/layout/item_home_devices.xml b/app/src/main/res/layout/item_home_devices.xml
new file mode 100644
index 0000000..1901386
--- /dev/null
+++ b/app/src/main/res/layout/item_home_devices.xml
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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">
+
+ <data>
+ <variable
+ name="bean"
+ type="com.application.zhangshi_app_android.bean.HomeDevicesBean" />
+ </data>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ >
+ <androidx.cardview.widget.CardView
+ android:id="@+id/cardView"
+ android:layout_width="match_parent"
+ android:layout_height="40dp"
+ android:layout_margin="@dimen/dp_2"
+ app:cardCornerRadius="@dimen/dp_10"
+ app:cardBackgroundColor="@color/color_card_pink"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ >
+ <LinearLayout
+ android:id="@+id/layout_title"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/dp_40"
+ android:gravity="center_vertical"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:layout_marginStart="24dp"
+ android:textSize="@dimen/sp_16"
+ android:textColor="@color/black"
+ android:text="@{bean.name}"
+ android:textStyle="bold"
+ tools:text="鐢佃"
+ />
+
+ <TextView
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
+ android:layout_marginStart="24dp"
+ android:text="@{bean.address}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_16"
+ android:textStyle="bold"
+ android:gravity="center"
+ tools:text="寮犱笁" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="@dimen/sp_16"
+ android:textColor="@color/black"
+ android:text="@{bean.createTime}"
+ android:textStyle="bold"
+ android:layout_marginEnd="24dp"
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ tools:text="2019-01-12"
+ />
+
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/layout_content"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingHorizontal="@dimen/dp_24"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="搴忓彿锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{String.valueOf(bean.id)}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="璐拱浜猴細"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{bean.people}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="浜嬮」鍐呭锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{bean.content}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_6"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="澶囨敞锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{bean.remark}"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ </LinearLayout>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/dp_6"
+ android:text="鐢靛瓙鏂囦欢锛�"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:textStyle="bold"
+ />
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/dp_15"
+ >
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/rv_image"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ tools:listitem="@layout/item_image"
+ tools:itemCount="3"
+ />
+
+ </LinearLayout>
+
+ </LinearLayout>
+ </LinearLayout>
+
+ </androidx.cardview.widget.CardView>
+
+ </LinearLayout>
+
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_image.xml b/app/src/main/res/layout/item_image.xml
new file mode 100644
index 0000000..8d7e93e
--- /dev/null
+++ b/app/src/main/res/layout/item_image.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <data>
+ <variable
+ name="url"
+ type="String" />
+ </data>
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <ImageView
+ android:id="@+id/iv_image"
+ android:layout_width="87dp"
+ android:layout_height="87dp"
+ android:layout_marginTop="7.5dp"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:imageUrl="@{url}"
+ />
+ <ImageView
+ android:id="@+id/iv_delete"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_image_delete"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintStart_toEndOf="@id/iv_image"
+ android:layout_marginStart="-7.5dp"
+ />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_image_footer.xml b/app/src/main/res/layout/item_image_footer.xml
new file mode 100644
index 0000000..07e1f3b
--- /dev/null
+++ b/app/src/main/res/layout/item_image_footer.xml
@@ -0,0 +1,22 @@
+<?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"
+ android:layout_gravity="center"
+ >
+ <TextView
+ android:id="@+id/button_add"
+ android:layout_width="@dimen/dp_85"
+ android:layout_height="@dimen/dp_85"
+ android:text="+"
+ android:textColor="@color/black"
+ android:textSize="60sp"
+ android:gravity="center"
+ android:background="@drawable/shape_73fab4cd_solid"
+ android:layout_marginTop="8dp"
+ android:layout_marginStart="2dp"
+ />
+
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_drawer.xml b/app/src/main/res/layout/layout_drawer.xml
new file mode 100644
index 0000000..7c1f52b
--- /dev/null
+++ b/app/src/main/res/layout/layout_drawer.xml
@@ -0,0 +1,608 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.core.widget.NestedScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="211dp"
+ android:layout_height="match_parent"
+ android:layout_gravity="start"
+ android:background="@color/color_card_pink"
+ android:paddingTop="25dp"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingHorizontal="12dp"
+ >
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="33dp"
+ android:layout_marginBottom="20dp"
+ android:gravity="center"
+ >
+ <androidx.constraintlayout.utils.widget.ImageFilterView
+ android:layout_width="50dp"
+ android:layout_height="50dp"
+ app:roundPercent="1"
+ android:background="@drawable/img_sakura"
+ />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="寮犲柕"
+ android:textSize="18sp"
+ android:textColor="@color/black"
+ android:layout_marginStart="16dp"
+ />
+ </LinearLayout>
+ <androidx.cardview.widget.CardView
+ android:layout_width="match_parent"
+ android:layout_height="304dp"
+ app:cardBackgroundColor="@color/white"
+ app:cardCornerRadius="10dp"
+ app:cardElevation="0dp"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingVertical="8dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="鏍稿績鏉垮潡"
+ android:textColor="@color/black"
+ android:textSize="12sp"
+ android:layout_marginStart="14dp"
+ />
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:background="#FFF3F3F3"
+ />
+ <LinearLayout
+ android:id="@+id/dl_home_root_net"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_family_root_net"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="瀹舵牴缃�"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_family_memorabilia"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_notes"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="瀹跺ぇ浜嬭"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_family_assets"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_asset"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="瀹跺涵璧勪骇"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_home_devices"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_home_devices"
+ />
+
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="瀹跺涵璁惧"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_honor_collection"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_honor"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="鏀惰棌銆佽崳瑾�"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_little_doctor"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_little_doctor"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="灏忓尰鐢�"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_clean_storage"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_cleaning"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="淇濇磥銆佹敹绾�"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_contacts"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_mail_list"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="閫氳褰�"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_pet"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_pet"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="榄呭疇"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_income_and_expenses"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_income_expense"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="瀹跺涵鏀舵敮鍙拌处"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ </LinearLayout>
+
+
+ </androidx.cardview.widget.CardView>
+ <androidx.cardview.widget.CardView
+ android:layout_width="match_parent"
+ android:layout_height="240dp"
+ app:cardBackgroundColor="@color/white"
+ app:cardCornerRadius="10dp"
+ app:cardElevation="0dp"
+ android:layout_marginTop="26dp"
+ android:layout_marginBottom="14dp"
+ >
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="涓汉鏉垮潡"
+ android:textColor="@color/black"
+ android:textSize="12sp"
+ android:layout_marginVertical="8dp"
+ android:layout_marginStart="14dp"
+ />
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:background="#FFF3F3F3"
+ />
+ <LinearLayout
+ android:id="@+id/dl_growing_up"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_growth"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="鎴愰暱缁忓巻闃呭巻"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_marriage"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_marriage"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="濠氬Щ"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_property"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_property"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="璐骇"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_wish"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="鐧惧勾蹇冩効"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_hundred_wish"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_tour"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="鏃呮父"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_health_care"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_health" />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="鍋ュ悍淇濆仴"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_certificate_of_honor"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_certificate"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="鑽h獕銆佽瘉涔﹀椤�"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/dl_privacy"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingHorizontal="15dp"
+ android:gravity="center"
+ >
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_privacy"
+ />
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="闅愮"
+ android:textColor="@color/black"
+ android:textSize="14sp"
+ android:layout_marginStart="15dp"
+ />
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_vector_gray"
+ />
+ </LinearLayout>
+ </LinearLayout>
+
+
+ </androidx.cardview.widget.CardView>
+ </LinearLayout>
+
+</androidx.core.widget.NestedScrollView>
\ No newline at end of file
diff --git a/app/src/main/res/layout/pop_operate.xml b/app/src/main/res/layout/pop_operate.xml
index dc64b5a..219d4fc 100644
--- a/app/src/main/res/layout/pop_operate.xml
+++ b/app/src/main/res/layout/pop_operate.xml
@@ -10,55 +10,69 @@
>
<LinearLayout
android:layout_width="85dp"
- android:layout_height="122dp"
+ android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
>
- <TextView
- android:id="@+id/tv_add"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:text="鏂板缓"
- android:textColor="#FF333333"
- android:textSize="12sp"
- app:drawableStartCompat="@drawable/ic_operate_add"
- android:drawablePadding="5dp"
- android:layout_weight="1"
- />
- <View
+ <LinearLayout
+ android:id="@+id/layout_add"
android:layout_width="match_parent"
- android:layout_height="0.3dp"
- android:background="#FF939393"
- />
- <TextView
- android:id="@+id/tv_select"
- android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="閫夋嫨"
- android:gravity="center"
- android:textColor="#FF333333"
- android:textSize="12sp"
- app:drawableStartCompat="@drawable/ic_operate_select"
- android:drawablePadding="5dp"
- android:layout_weight="1"
- />
- <View
+ android:orientation="vertical"
+ android:gravity="center_horizontal"
+ >
+ <TextView
+ android:id="@+id/tv_add"
+ android:layout_width="wrap_content"
+ android:layout_height="32dp"
+ android:gravity="center"
+ android:text="鏂板缓"
+ android:textColor="#FF333333"
+ android:textSize="12sp"
+ app:drawableStartCompat="@drawable/ic_operate_add"
+ android:drawablePadding="5dp"
+ />
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="0.3dp"
+ android:background="#FF939393"
+ />
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/layout_select"
android:layout_width="match_parent"
- android:layout_height="0.3dp"
- android:background="#FF939393"
- />
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center_horizontal"
+ >
+ <TextView
+ android:id="@+id/tv_select"
+ android:layout_width="wrap_content"
+ android:layout_height="32dp"
+ android:text="閫夋嫨"
+ android:gravity="center"
+ android:textColor="#FF333333"
+ android:textSize="12sp"
+ app:drawableStartCompat="@drawable/ic_operate_select"
+ android:drawablePadding="5dp"
+ />
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="0.3dp"
+ android:background="#FF939393"
+ />
+ </LinearLayout>
+
<TextView
android:id="@+id/tv_from_new_to_old"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_height="32dp"
android:text="鐢辨柊鍒版棫"
android:gravity="center"
android:textColor="#FF333333"
android:textSize="12sp"
app:drawableStartCompat="@drawable/ic_operate_order"
- android:drawablePadding="5dp"
- android:layout_weight="1"
+ android:drawablePadding="3dp"
/>
<View
android:layout_width="match_parent"
@@ -68,14 +82,13 @@
<TextView
android:id="@+id/tv_from_old_to_new"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_height="32dp"
android:text="鐢辨棫鍒版柊"
android:gravity="center"
android:textColor="#FF333333"
android:textSize="12sp"
app:drawableStartCompat="@drawable/ic_operate_order"
- android:drawablePadding="5dp"
- android:layout_weight="1"
+ android:drawablePadding="3dp"
/>
</LinearLayout>
diff --git a/app/src/main/res/layout/pop_search.xml b/app/src/main/res/layout/pop_search.xml
index d2a11ee..404d525 100644
--- a/app/src/main/res/layout/pop_search.xml
+++ b/app/src/main/res/layout/pop_search.xml
@@ -1,106 +1,184 @@
<?xml version="1.0" encoding="utf-8"?>
-<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:orientation="vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:cardBackgroundColor="#FFFAD1E0"
- app:cardCornerRadius="10dp"
- app:cardElevation="0dp"
- >
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <data>
+ <import type="android.text.TextUtils" />
+ <import type="android.view.View" />
+ <variable
+ name="viewModel"
+ type="com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel" />
+ </data>
+
<LinearLayout
- android:layout_width="200dp"
- android:layout_height="180dp"
android:orientation="vertical"
- android:gravity="center_horizontal"
- >
- <TextView
- android:id="@+id/tv_global_search"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:gravity="center"
- android:text="鍏ㄥ眬鎼滅储"
- android:textColor="#FF333333"
- android:textSize="12sp"
- android:layout_weight="1"
- />
- <View
- android:layout_width="match_parent"
- android:layout_height="0.3dp"
- android:background="#FF939393"
- />
- <TextView
- android:id="@+id/tv_search_in_family_memorabilia"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:gravity="center"
- android:text="鍦ㄢ�滃澶т簨璁扳�濆唴鎼滅储"
- android:textColor="#FF333333"
- android:textSize="12sp"
- android:layout_weight="1"
- />
- <View
- android:layout_width="match_parent"
- android:layout_height="0.3dp"
- android:background="#FF939393"
- />
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@color/white">
- <TextView
- android:id="@+id/tv_search_by_title"
+ <View
android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:gravity="center"
- android:text="鎸夆�滃ぇ浜嬭鏍囬鈥濇悳绱�"
- android:textColor="#FF333333"
- android:textSize="12sp" />
+ android:layout_height="0.5dp"
+ android:background="#FF939393" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="40dp"
+ android:layout_marginHorizontal="12dp"
+ android:gravity="center">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="鏍囬"
+ android:textColor="#FF333333"
+ android:textSize="14sp" />
+
+ <EditText
+ android:id="@+id/et_title"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:background="@null"
+ android:inputType="text"
+ android:layout_marginStart="6dp"
+ android:text="@={viewModel.requestBeanMutableLiveData.title}"
+ android:hint="璇疯緭鍏ユ爣棰�"
+ android:textColorHint="#61000000"
+ android:textColor="#FF333333"
+ android:textSize="14sp" />
+
+ <ImageView
+ android:id="@+id/iv_clear_title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="@{viewModel.requestBeanMutableLiveData.title != null && viewModel.requestBeanMutableLiveData.title.length() > 0 ? View.VISIBLE : View.GONE}"
+ android:background="@drawable/ic_clear" />
+ </LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.3dp"
- android:background="#FF939393"
- />
- <TextView
- android:id="@+id/tv_search_by_people"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:gravity="center"
- android:text="鎸夆�滀汉鐗┾�濇悳绱�"
- android:textColor="#FF333333"
- android:textSize="12sp"
- android:layout_weight="1"
- />
- <View
- android:layout_width="match_parent"
- android:layout_height="0.3dp"
- android:background="#FF939393"
- />
+ android:background="#FF939393" />
- <TextView
- android:id="@+id/tv_search_by_time"
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:gravity="center"
- android:text="鎸夆�滄椂闂粹�濇悳绱�"
- android:textColor="#FF333333"
- android:textSize="12sp" />
+ android:layout_height="40dp"
+ android:layout_marginHorizontal="12dp"
+ android:gravity="center">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="浜虹墿"
+ android:textColor="#FF333333"
+ android:textSize="14sp" />
+
+ <EditText
+ android:id="@+id/et_person"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:inputType="text"
+ android:layout_height="wrap_content"
+ android:background="@null"
+ android:layout_marginStart="6dp"
+ android:text="@={viewModel.requestBeanMutableLiveData.people}"
+ android:hint="璇疯緭鍏ヤ汉鐗�"
+ android:textColorHint="#61000000"
+ android:textColor="#FF333333"
+ android:textSize="14sp" />
+
+ <ImageView
+ android:id="@+id/iv_clear_person"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_clear"
+ android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.people)?View.GONE:View.VISIBLE}"
+ />
+ </LinearLayout>
+
<View
android:layout_width="match_parent"
android:layout_height="0.3dp"
- android:background="#FF939393"
- />
- <TextView
- android:id="@+id/tv_search_by_place"
+ android:background="#FF939393" />
+
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="0dp"
- android:gravity="center"
- android:text="鎸夆�滃湴鐐光�濇悳绱�"
- android:textColor="#FF333333"
- android:textSize="12sp"
- android:layout_weight="1"
- />
+ android:layout_height="40dp"
+ android:layout_marginHorizontal="12dp"
+ android:gravity="center">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="鏃堕棿"
+ android:textColor="#FF333333"
+ android:textSize="14sp" />
+
+ <EditText
+ android:id="@+id/et_time"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:background="@null"
+ android:inputType="text"
+ android:layout_marginStart="6dp"
+ android:text="@={viewModel.requestBeanMutableLiveData.createTime}"
+ android:hint="璇疯緭鍏ユ椂闂�"
+ android:textColorHint="#61000000"
+ android:textColor="#FF333333"
+ android:textSize="14sp" />
+
+ <ImageView
+ android:id="@+id/iv_clear_time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_clear"
+ android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.createTime)?View.GONE:View.VISIBLE}"
+ />
+ </LinearLayout>
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="0.3dp"
+ android:background="#FF939393" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="40dp"
+ android:layout_marginHorizontal="12dp"
+ android:gravity="center">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="鍦扮偣"
+ android:textColor="#FF333333"
+ android:textSize="14sp" />
+
+ <EditText
+ android:id="@+id/et_place"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:background="@null"
+ android:layout_marginStart="6dp"
+ android:text="@={viewModel.requestBeanMutableLiveData.address}"
+ android:inputType="text"
+ android:hint="璇疯緭鍏ュ湴鐐�"
+ android:textColorHint="#61000000"
+ android:textColor="#FF333333"
+ android:textSize="14sp" />
+
+ <ImageView
+ android:id="@+id/iv_clear_place"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_clear"
+ android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.address)?View.GONE:View.VISIBLE}"
+ />
+ </LinearLayout>
+
</LinearLayout>
-
-</androidx.cardview.widget.CardView>
\ No newline at end of file
+</layout>
\ No newline at end of file
diff --git a/app_base/build.gradle b/app_base/build.gradle
index 82d4362..dc0253e 100644
--- a/app_base/build.gradle
+++ b/app_base/build.gradle
@@ -66,9 +66,23 @@
// kotlin鎵╁睍锛堝彲閫夛級
// implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2'
//鍥剧墖鐩稿叧
- api 'com.github.bumptech.glide:glide:4.11.0'
- annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
+ api 'com.github.bumptech.glide:glide:4.12.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
//鍐呭瓨娉勯湶宸ュ叿
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
+ //鍥剧墖閫夋嫨鍣�
+ // PictureSelector 鍩虹 (蹇呴』)
+ api 'io.github.lucksiege:pictureselector:v3.10.8'
+ // 鍥剧墖鍘嬬缉 (鎸夐渶寮曞叆)
+ api 'io.github.lucksiege:compress:v3.10.8'
+ // 鍥剧墖瑁佸壀 (鎸夐渶寮曞叆)
+ api 'io.github.lucksiege:ucrop:v3.10.8'
+ // 鑷畾涔夌浉鏈� (鎸夐渶寮曞叆)
+ api 'io.github.lucksiege:camerax:v3.10.8'
+
+ // 鍔ㄧ敾瑙f瀽搴擄細https://github.com/airbnb/lottie-android
+ // 鍔ㄧ敾璧勬簮锛歨ttps://lottiefiles.com銆乭ttps://icons8.com/animated-icons
+ api 'com.airbnb.android:lottie:4.1.0'
+
}
\ No newline at end of file
diff --git a/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java b/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
index d7df1a6..f60803f 100644
--- a/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
+++ b/app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
@@ -21,7 +21,7 @@
/**
* @author Ljj
* @date 2023.03.02. 17:09
- * @desc
+ * @desc RecyclerView 閫傞厤鍣ㄥ熀绫�
*/
public abstract class BaseRVAdapter<T,VDB extends ViewDataBinding,VH extends BaseRVAdapter.BaseViewHolder<VDB>> extends RecyclerView.Adapter<VH> {
diff --git a/app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java b/app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java
index 433c3ff..a7a1671 100644
--- a/app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java
+++ b/app_base/src/main/java/com/android/app_base/base/adapter/ImageViewAdapter.java
@@ -2,10 +2,13 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.net.Uri;
import android.util.Base64;
import android.widget.ImageView;
import androidx.databinding.BindingAdapter;
+
+import com.android.app_base.utils.GlideUtil;
/**
* @author Ljj
@@ -14,7 +17,12 @@
*/
public class ImageViewAdapter {
@BindingAdapter({"imageUrl"})
- public static void loadImage(ImageView imageView, String url) {
+ public static void loadUrlImage(ImageView imageView, String url) {
+ GlideUtil.loadImage(url, imageView);
+ }
+ @BindingAdapter({"imageUri"})
+ public static void loadUriImage(ImageView imageView, String uri) {
+ imageView.setImageURI(Uri.parse(uri));
}
@BindingAdapter({"imageBase64"})
diff --git a/app_base/src/main/java/com/android/app_base/base/dialog/WaitDialog.java b/app_base/src/main/java/com/android/app_base/base/dialog/WaitDialog.java
new file mode 100644
index 0000000..a259a74
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/base/dialog/WaitDialog.java
@@ -0,0 +1,40 @@
+package com.android.app_base.base.dialog;
+
+import static com.blankj.utilcode.util.StringUtils.getString;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.StringRes;
+
+import com.android.app_base.R;
+
+public final class WaitDialog {
+
+ public static final class Builder
+ extends BaseDialog.Builder<Builder> {
+
+ private final TextView mMessageView;
+
+ public Builder(Context context) {
+ super(context);
+ setContentView(R.layout.wait_dialog);
+ setAnimStyle(BaseDialog.ANIM_TOAST);
+ setBackgroundDimEnabled(false);
+ setCancelable(false);
+
+ mMessageView = findViewById(R.id.tv_wait_message);
+ }
+
+ public Builder setMessage(@StringRes int id) {
+ return setMessage(getString(id));
+ }
+
+ public Builder setMessage(CharSequence text) {
+ mMessageView.setText(text);
+ mMessageView.setVisibility(text == null ? View.GONE : View.VISIBLE);
+ return this;
+ }
+ }
+}
\ No newline at end of file
diff --git a/app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java b/app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
index 300fbaa..73f922c 100644
--- a/app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
+++ b/app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
@@ -15,15 +15,14 @@
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
+import androidx.drawerlayout.widget.DrawerLayout;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.android.app_base.action.TitleBarAction;
-import com.android.app_base.base.BaseApplication;
import com.android.app_base.base.action.ClickAction;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.android.app_base.base.StateViewEnum;
-import com.android.app_base.utils.ScreenSizeUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.gyf.immersionbar.ImmersionBar;
import com.hjq.bar.TitleBar;
@@ -34,11 +33,10 @@
/**
* Activity鍩虹被,鎵�鏈夌殑 Activity 閮借缁ф壙姝ょ被
*/
-public abstract class BaseActivity<V extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity implements TitleBarAction, ClickAction {
- protected V binding;
+public abstract class BaseActivity<VDB extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity implements TitleBarAction, ClickAction {
+ protected VDB binding;
protected VM viewModel;
private int viewModelId;
-
/**
* 鏍囬鏍忓璞�
*/
@@ -47,8 +45,6 @@
* 鐘舵�佹爮娌夋蹈
*/
private ImmersionBar mImmersionBar;
-
-
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -61,6 +57,7 @@
initView();
//椤甸潰浜嬩欢鐩戝惉鐨勬柟娉曪紝鐢ㄤ簬ViewModel灞傝浆鍒癡iew灞傜殑浜嬩欢娉ㄥ唽
initLiveDataObserve();
+
}
@Override
protected void onResume() {
@@ -91,6 +88,7 @@
initStateView();
//鍒濆鍖栨矇娴稿紡鐘舵�佹爮鍜� titleBar
initStatusBar();
+ initSoftKeyboard();
}
/**
@@ -98,8 +96,7 @@
*/
protected void initViewDataBindingAndViewModel() {
if (getLayoutId() > 0) {
- binding = DataBindingUtil.setContentView(this, getLayoutId());
- initSoftKeyboard();
+ binding = initViewBinding();
}
viewModelId = getVariableId();
viewModel = initViewModel();
@@ -113,6 +110,13 @@
//璁¬iewModel鎷ユ湁View鐨勭敓鍛藉懆鏈熸劅搴�
getLifecycle().addObserver(viewModel);
}
+ }
+
+ /**
+ * 鍒濆鍖朧iewBinding
+ */
+ protected VDB initViewBinding() {
+ return DataBindingUtil.setContentView(this, getLayoutId());
}
/**
* 鍒濆鍖朧iewModel
@@ -130,6 +134,7 @@
return new ViewModelProvider(this, (ViewModelProvider.Factory) ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication())).get(vmClass);
}
+
/**
* 瀵圭姸鎬佽鍥緇iveData杩涜瑙傚療鐩戝惉
*/
diff --git a/app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java b/app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java
index a3b602c..a5e68c5 100644
--- a/app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java
+++ b/app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java
@@ -39,7 +39,7 @@
//閲嶅畾鍚慤RL
@SuppressLint("MissingPermission") HttpUrl modifiedUrl = request.url().newBuilder()
//娣诲姞鐨勫叕鍏卞弬鏁�
- .addQueryParameter("deviceId", PhoneUtils.getDeviceId())
+// .addQueryParameter("deviceId", PhoneUtils.getDeviceId())
.addQueryParameter("udid", "")
.addQueryParameter("channel", "")
.addQueryParameter("version", "")
@@ -51,7 +51,7 @@
.addQueryParameter("os", "android")
.addQueryParameter("osVersion", DeviceUtils.getSDKVersionName())
.addQueryParameter("isSimulator", DeviceUtils.isEmulator() ? "1" : "0")
- .addQueryParameter("imei", PhoneUtils.getIMEI())
+// .addQueryParameter("imei", PhoneUtils.getIMEI())
.addQueryParameter("oaid", "android")
.addQueryParameter("androidId", DeviceUtils.getAndroidID())
// .addQueryParameter("networkType", NetworkUtils.getNetworkType().name())
diff --git a/app_base/src/main/java/com/android/app_base/manager/OnPermissionsInterceptListenerImpl.java b/app_base/src/main/java/com/android/app_base/manager/OnPermissionsInterceptListenerImpl.java
new file mode 100644
index 0000000..3afd9f1
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/manager/OnPermissionsInterceptListenerImpl.java
@@ -0,0 +1,51 @@
+package com.android.app_base.manager;
+
+import android.Manifest;
+import android.os.Build;
+
+import androidx.fragment.app.Fragment;
+
+import com.blankj.utilcode.util.PermissionUtils;
+import com.luck.picture.lib.interfaces.OnRequestPermissionListener;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ljj
+ * @date 2023.04.02. 18:45
+ * @desc 瑙e喅Android 13 浠ヤ笂鐗堟湰浣跨敤PictureSelector 閫夋嫨鍥剧墖鏃舵姤閿欑殑闂
+ * 'io.github.lucksiege:pictureselector:v3.10.9'鍒欎笉闇�瑕�
+ * //TODO 寰呭垹
+ */
+public class OnPermissionsInterceptListenerImpl implements com.luck.picture.lib.interfaces.OnPermissionsInterceptListener {
+ @Override
+ public void requestPermission(Fragment fragment, String[] permissionArray, OnRequestPermissionListener call) {
+ if (permissionArray == null || fragment == null || fragment.getContext() == null) return;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ //鎶婃潈闄愭暟缁勮浆鎹㈡垚List
+ List<String> result = new ArrayList<>(Arrays.asList(permissionArray));
+ result.remove(Manifest.permission.READ_EXTERNAL_STORAGE);
+ //鎶妑esult杞崲鎴愭暟缁�
+ permissionArray = result.toArray(new String[result.size()]);
+ call.onCall(permissionArray, true);
+ } else {
+ call.onCall(permissionArray, true);
+ }
+ }
+
+ @Override
+ public boolean hasPermissions(Fragment fragment, String[] permissionArray) {
+ if (permissionArray == null || fragment == null) return false;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ List<String> result = Arrays.asList(permissionArray);
+ if (result.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) {
+ result.remove(Manifest.permission.READ_EXTERNAL_STORAGE);
+ }
+ } else {
+ return PermissionUtils.isGranted(permissionArray);
+ }
+ return false;
+ }
+}
diff --git a/app_base/src/main/java/com/android/app_base/manager/UserManager.java b/app_base/src/main/java/com/android/app_base/manager/UserManager.java
index e66d819..8228746 100644
--- a/app_base/src/main/java/com/android/app_base/manager/UserManager.java
+++ b/app_base/src/main/java/com/android/app_base/manager/UserManager.java
@@ -1,6 +1,22 @@
package com.android.app_base.manager;
+import android.Manifest;
+import android.app.Activity;
+import android.os.Build;
+
+import androidx.annotation.NonNull;
+
+import com.android.app_base.utils.GlideEngine;
import com.android.app_base.utils.SPUtils;
+import com.android.app_base.utils.ToastUtils;
+import com.blankj.utilcode.util.PermissionUtils;
+import com.luck.picture.lib.basic.PictureSelector;
+import com.luck.picture.lib.config.SelectMimeType;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.luck.picture.lib.interfaces.OnResultCallbackListener;
+
+import java.io.File;
+import java.util.ArrayList;
/**
* @author Ljj
@@ -20,6 +36,52 @@
}
return instance;
}
+ /**
+ * 鏄惁鏈夋潈闄�
+ */
+ public boolean isGranted(@NonNull String... permissions) {
+ return PermissionUtils.isGranted(permissions);
+ }
+ /**
+ * 鑾峰彇鏉冮檺
+ */
+ public void getPermissions(PermissionUtils.SimpleCallback simpleCallback, @NonNull String... permissions) {
+ if (isGranted(permissions)){
+ simpleCallback.onGranted();
+ return;
+ }
+ PermissionUtils.permission(permissions).callback(simpleCallback).request();
+ }
+
+ /**
+ * 閫夋嫨鍥剧墖
+ */
+ public void selectImage(Activity activity,int maxSelectNum,OnResultCallbackListener<LocalMedia> onResultCallbackListener){
+ String[] permissions;
+ if (Build.VERSION.SDK_INT >= 33) {
+ permissions = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.READ_MEDIA_VIDEO, Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.CAMERA};
+ }else {
+ permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA};
+ }
+ getPermissions(new PermissionUtils.SimpleCallback() {
+ @Override
+ public void onGranted() {
+ PictureSelector.create(activity)
+ .openGallery(SelectMimeType.ofImage())
+ .setImageEngine(GlideEngine.createGlideEngine())
+ .setPermissionsInterceptListener(new OnPermissionsInterceptListenerImpl())
+ .isMaxSelectEnabledMask(true)// 杈惧埌鏈�澶ч�夋嫨鏁版槸鍚﹀紑鍚閫夎挋灞�
+ .setMaxSelectNum(maxSelectNum)
+ .forResult(onResultCallbackListener);
+ }
+ //
+ @Override
+ public void onDenied() {
+ ToastUtils.showShort("璇峰紑鍚浉鍏虫潈闄�");
+ }
+ }, permissions);
+ }
+
public void setToken(String token){
SPUtils.getInstance("tokenInfo").put("token",token);
diff --git a/app_base/src/main/java/com/android/app_base/utils/GlideEngine.java b/app_base/src/main/java/com/android/app_base/utils/GlideEngine.java
new file mode 100644
index 0000000..983309b
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/utils/GlideEngine.java
@@ -0,0 +1,106 @@
+package com.android.app_base.utils;
+
+import android.content.Context;
+import android.widget.ImageView;
+
+import com.android.app_base.R;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.luck.picture.lib.engine.ImageEngine;
+import com.luck.picture.lib.utils.ActivityCompatHelper;
+
+public class GlideEngine implements ImageEngine {
+
+ /**
+ * 鍔犺浇鍥剧墖
+ *
+ * @param context 涓婁笅鏂�
+ * @param url 璧勬簮url
+ * @param imageView 鍥剧墖鎵胯浇鎺т欢
+ */
+ @Override
+ public void loadImage(Context context, String url, ImageView imageView) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context)
+ .load(url)
+ .into(imageView);
+ }
+
+ @Override
+ public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context)
+ .load(url)
+ .override(maxWidth, maxHeight)
+ .into(imageView);
+ }
+
+ /**
+ * 鍔犺浇鐩稿唽鐩綍灏侀潰
+ *
+ * @param context 涓婁笅鏂�
+ * @param url 鍥剧墖璺緞
+ * @param imageView 鎵胯浇鍥剧墖ImageView
+ */
+ @Override
+ public void loadAlbumCover(Context context, String url, ImageView imageView) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context)
+ .asBitmap()
+ .load(url)
+ .override(180, 180)
+ .sizeMultiplier(0.5f)
+ .transform(new CenterCrop(), new RoundedCorners(8))
+ .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+ .into(imageView);
+ }
+
+
+ /**
+ * 鍔犺浇鍥剧墖鍒楄〃鍥剧墖
+ *
+ * @param context 涓婁笅鏂�
+ * @param url 鍥剧墖璺緞
+ * @param imageView 鎵胯浇鍥剧墖ImageView
+ */
+ @Override
+ public void loadGridImage(Context context, String url, ImageView imageView) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context)
+ .load(url)
+ .override(200, 200)
+ .centerCrop()
+ .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+ .into(imageView);
+ }
+
+ @Override
+ public void pauseRequests(Context context) {
+ Glide.with(context).pauseRequests();
+ }
+
+ @Override
+ public void resumeRequests(Context context) {
+ Glide.with(context).resumeRequests();
+ }
+
+ private GlideEngine() {
+ }
+
+ private static final class InstanceHolder {
+ static final GlideEngine instance = new GlideEngine();
+ }
+
+ public static GlideEngine createGlideEngine() {
+ return InstanceHolder.instance;
+ }
+}
\ No newline at end of file
diff --git a/app_base/src/main/java/com/android/app_base/utils/GlideUtil.java b/app_base/src/main/java/com/android/app_base/utils/GlideUtil.java
new file mode 100644
index 0000000..55a132c
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/utils/GlideUtil.java
@@ -0,0 +1,96 @@
+package com.android.app_base.utils;
+
+import android.content.Context;
+import android.widget.ImageView;
+
+import com.android.app_base.R;
+import com.android.app_base.base.BaseApplication;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.bumptech.glide.request.RequestOptions;
+
+/**
+ * @author Ljj
+ * @date 2023.04.02. 23:16
+ * @desc Glide宸ュ叿绫�
+ */
+public class GlideUtil {
+
+ /**
+ * 鍔犺浇鍥剧墖鍒� ImageView 涓�
+ *
+ * @param imageUrl 鍥剧墖 URL
+ * @param imageView ImageView 瀵硅薄
+ */
+ public static void loadImage(String imageUrl, ImageView imageView) {
+ Glide.with(BaseApplication.getInstance())
+ .load(imageUrl)
+ .into(imageView);
+ }
+ //鍦嗗舰
+ public static <T> void loadCircleImage(T t, ImageView img) {
+ RequestOptions options = new RequestOptions()
+ .circleCrop()
+ .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+ .error(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+ .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate();
+ Glide.with(BaseApplication.getInstance())
+ .load(t)
+ .apply(options)
+ .into(img);
+ }
+
+ //鍦嗚
+ public static <T> void loadCornersImage(T t, ImageView img,int radius) {
+ Glide.with(BaseApplication.getInstance())
+ .load(t)
+ .diskCacheStrategy(DiskCacheStrategy.ALL)
+ .dontAnimate()
+ .transform(new CenterCrop(),new RoundedCorners(radius))
+ .into (img);
+ }
+ //閫忔槑搴�
+ public static <T> void loadAlphaImage(T t, ImageView img,float alpha) {
+ img.setAlpha(alpha);
+ RequestOptions options = new RequestOptions().centerCrop().placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
+ .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate();
+ Glide.with(BaseApplication.getInstance())
+ .load(t)
+ .apply(options)
+ .into (img);
+ }
+
+ /**
+ * 鍔犺浇瑙嗛鏌愭椂闂寸殑甯у浘鐗�
+ * @param t 瑙嗛鍦板潃
+ * @param img 鍔犺浇鐨勬帶浠�
+ * @param radius 鍦嗚锛屼笉闇�瑕佷紶璐熸暟
+ * @param frame 闇�瑕佸姞杞界殑甯ф椂闂达紝鍗曚綅寰
+ * @param <T>
+ */
+ public static <T> void loadVideoCover(T t, ImageView img,int radius,int frame) {
+ RequestOptions options = new RequestOptions().centerCrop()
+ .frame(frame)
+ .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate();
+ if (radius > 0){
+ RoundedCorners roundedCorners = new RoundedCorners(radius);
+ options.bitmapTransform(roundedCorners);
+ }
+ Glide.with(BaseApplication.getInstance())
+ .load(t)
+ .apply(options)
+ .into (img);
+ }
+
+ /**
+ * 娓呴櫎 Glide 缂撳瓨
+ *
+ * @param context Context 瀵硅薄
+ */
+ public static void clearCache(Context context) {
+ Glide.get(context).clearMemory();
+ new Thread(() -> Glide.get(context).clearDiskCache()).start();
+ }
+}
\ No newline at end of file
diff --git a/app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java b/app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java
new file mode 100644
index 0000000..d57bf25
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java
@@ -0,0 +1,58 @@
+package com.android.app_base.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.Gravity;
+
+import androidx.databinding.BindingAdapter;
+import androidx.databinding.BindingMethod;
+
+import com.hjq.bar.TitleBar;
+import com.hjq.bar.TitleBarSupport;
+
+/**
+ * @author Ljj
+ * @date 2023.03.30. 20:47
+ * @desc 鎵╁睍鏍囬鏍忥紝鍦ㄥ師鏈夋爣棰樻爮澧炲姞鏍囬闈犲乏鎴栭潬鍙崇殑鍔熻兘
+ */
+public class ExtendTitleBar extends TitleBar {
+
+ private int titleGravity;
+ public ExtendTitleBar(Context context) {
+ super(context);
+ }
+
+ public ExtendTitleBar(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public ExtendTitleBar(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ setTitleGravity(titleGravity);
+ }
+
+ @Override
+ public TitleBar setTitleGravity(int gravity) {
+ titleGravity = gravity;
+ gravity = TitleBarSupport.getAbsoluteGravity(this, gravity);
+ LayoutParams params = (LayoutParams) getTitleView().getLayoutParams();
+ params.gravity = gravity;
+ // 濡傛灉鏍囬鐨勯噸蹇冧负宸︼紝閭d箞宸﹁竟灏变笉鑳芥湁鍐呭
+ if (gravity == Gravity.LEFT || gravity == Gravity.START){
+ params.setMargins(getLeftView().getMeasuredWidth(),0,0,0);
+ }
+
+ // 濡傛灉鏍囬鐨勯噸蹇冧负鍙筹紝閭d箞鍙宠竟灏变笉鑳芥湁鍐呭
+ if (gravity == Gravity.RIGHT && gravity == Gravity.END){
+ params.setMargins(0,0,0, getRightView().getMeasuredWidth());
+ }
+ getTitleView().setLayoutParams(params);
+ return this;
+ }
+
+}
diff --git a/app_base/src/main/java/com/android/app_base/widget/GridSpaceItemDecoration.java b/app_base/src/main/java/com/android/app_base/widget/GridSpaceItemDecoration.java
new file mode 100644
index 0000000..db9313a
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/widget/GridSpaceItemDecoration.java
@@ -0,0 +1,48 @@
+package com.android.app_base.widget;
+
+import android.graphics.Rect;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * RecyclerView 缃戞牸item绛夊垎闂磋窛
+ */
+public class GridSpaceItemDecoration extends RecyclerView.ItemDecoration {
+ private int mSpanCount;//妯潯鐩暟閲�
+ private int mRowSpacing;//琛岄棿璺�
+ private int mColumnSpacing;// 鍒楅棿璺�
+
+ /**
+ * @param spanCount 鍒楁暟
+ * @param rowSpacing 琛岄棿璺�
+ * @param columnSpacing 鍒楅棿璺�
+ */
+ public GridSpaceItemDecoration(int spanCount, int rowSpacing, int columnSpacing) {
+ this.mSpanCount = spanCount;
+ this.mRowSpacing = rowSpacing;
+ this.mColumnSpacing = columnSpacing;
+ }
+
+ @Override
+ public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
+ int position = parent.getChildAdapterPosition(view); // 鑾峰彇view 鍦╝dapter涓殑浣嶇疆銆�
+ int column = position % mSpanCount; // view 鎵�鍦ㄧ殑鍒�
+
+ //鍒楅棿绛夐棿璺濓紙鍒楁暟浠�0寮�濮嬶級
+ //鍒楀乏杈� = 鎵�鍦ㄥ垪 * 鍒楅棿璺� / 鎬诲垪鏁�
+ //鍒楀彸杈� = 鍒楅棿璺� - 涓嬩竴鍒楃殑鍒楀乏杈�
+ outRect.left = column * mColumnSpacing / mSpanCount;
+ outRect.right = mColumnSpacing - (column + 1) * mColumnSpacing / mSpanCount;
+
+
+ if (mRowSpacing == -1) {
+ return;
+ }
+ // 濡傛灉position > 琛屾暟锛岃鏄庝笉鏄湪绗竴琛岋紝鍒欎笉鎸囧畾琛岄珮锛屽叾浠栬鐨勪笂闂磋窛涓� top=mRowSpacing
+ if (position >= mSpanCount) {
+ outRect.top = mRowSpacing; // item top
+ }
+ }
+}
diff --git a/app_base/src/main/java/com/android/app_base/widget/WrapRecyclerView.java b/app_base/src/main/java/com/android/app_base/widget/WrapRecyclerView.java
new file mode 100644
index 0000000..edc9e97
--- /dev/null
+++ b/app_base/src/main/java/com/android/app_base/widget/WrapRecyclerView.java
@@ -0,0 +1,485 @@
+package com.android.app_base.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鏀寔娣诲姞搴曢儴鍜屽ご閮ㄧ殑 RecyclerView
+ */
+public final class WrapRecyclerView extends RecyclerView {
+
+ /**
+ * 鍘熸湁鐨勯�傞厤鍣�
+ */
+ private Adapter mRealAdapter;
+
+ /**
+ * 鏀寔娣诲姞澶撮儴鍜屽簳閮ㄧ殑閫傞厤鍣�
+ */
+ private final WrapRecyclerAdapter mWrapAdapter = new WrapRecyclerAdapter();
+
+ public WrapRecyclerView(Context context) {
+ super(context);
+ }
+
+ public WrapRecyclerView(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public WrapRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ public void setAdapter(Adapter adapter) {
+ mRealAdapter = adapter;
+ // 鍋锋鎹㈡煴
+ mWrapAdapter.setRealAdapter(mRealAdapter);
+ // 绂佺敤鏉$洰鍔ㄧ敾
+ setItemAnimator(null);
+ super.setAdapter(mWrapAdapter);
+ }
+
+ @Override
+ public Adapter getAdapter() {
+ return mRealAdapter;
+ }
+
+ /**
+ * 娣诲姞澶撮儴View
+ */
+ public void addHeaderView(View view) {
+ mWrapAdapter.addHeaderView(view);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <V extends View> V addHeaderView(@LayoutRes int id) {
+ View headerView = LayoutInflater.from(getContext()).inflate(id, this, false);
+ addHeaderView(headerView);
+ return (V) headerView;
+ }
+
+ /**
+ * 绉婚櫎澶撮儴View
+ */
+ public void removeHeaderView(View view) {
+ mWrapAdapter.removeHeaderView(view);
+ }
+
+ /**
+ * 娣诲姞搴曢儴View
+ */
+ public void addFooterView(View view) {
+ mWrapAdapter.addFooterView(view);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <V extends View> V addFooterView(@LayoutRes int id) {
+ View footerView = LayoutInflater.from(getContext()).inflate(id, this, false);
+ addFooterView(footerView);
+ return (V) footerView;
+ }
+
+ /**
+ * 绉婚櫎搴曢儴View
+ */
+ public void removeFooterView(View view) {
+ mWrapAdapter.removeFooterView(view);
+ }
+
+ /**
+ * 鑾峰彇澶撮儴View鎬绘暟
+ */
+ public int getHeaderViewsCount() {
+ return mWrapAdapter.getHeaderViewsCount();
+ }
+
+ /**
+ * 鑾峰彇搴曢儴View鎬绘暟
+ */
+ public int getFooterViewsCount() {
+ return mWrapAdapter.getFooterViewsCount();
+ }
+
+ /**
+ * 鑾峰彇澶撮儴View闆嗗悎
+ */
+ public List<View> getHeaderViews() {
+ return mWrapAdapter.getHeaderViews();
+ }
+
+ /**
+ * 鑾峰彇搴曢儴View闆嗗悎
+ */
+ public List<View> getFooterViews() {
+ return mWrapAdapter.getFooterViews();
+ }
+
+ /**
+ * 鍒锋柊澶撮儴鍜屽簳閮ㄥ竷灞�鎵�鏈夌殑 View 鐨勭姸鎬�
+ */
+ public void refreshHeaderFooterViews() {
+ mWrapAdapter.notifyDataSetChanged();
+ }
+
+ /**
+ * 璁剧疆鍦� GridLayoutManager 妯″紡涓嬪ご閮ㄥ拰灏鹃儴閮芥槸鐙崰涓�琛岀殑鏁堟灉
+ */
+ public void adjustSpanSize() {
+
+ final LayoutManager layoutManager = getLayoutManager();
+ if (layoutManager instanceof GridLayoutManager) {
+ ((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
+
+ @Override
+ public int getSpanSize(int position) {
+ return (position < mWrapAdapter.getHeaderViewsCount()
+ || position >= mWrapAdapter.getHeaderViewsCount() + (mRealAdapter == null ? 0 : mRealAdapter.getItemCount()))
+ ? ((GridLayoutManager) layoutManager).getSpanCount() : 1;
+ }
+ });
+ }
+ }
+
+ /**
+ * 閲囩敤瑁呴グ璁捐妯″紡锛屽皢鍘熸湁鐨勯�傞厤鍣ㄥ寘瑁呰捣鏉�
+ */
+ private static final class WrapRecyclerAdapter extends Adapter<ViewHolder> {
+
+ /**
+ * 澶撮儴鏉$洰绫诲瀷
+ */
+ private static final int HEADER_VIEW_TYPE = Integer.MIN_VALUE >> 1;
+ /**
+ * 搴曢儴鏉$洰绫诲瀷
+ */
+ private static final int FOOTER_VIEW_TYPE = Integer.MAX_VALUE >> 1;
+
+ /**
+ * 鍘熸湁鐨勯�傞厤鍣�
+ */
+ private Adapter mRealAdapter;
+ /**
+ * 澶撮儴View闆嗗悎
+ */
+ private final List<View> mHeaderViews = new ArrayList<>();
+ /**
+ * 搴曢儴View闆嗗悎
+ */
+ private final List<View> mFooterViews = new ArrayList<>();
+ /**
+ * 褰撳墠璋冪敤鐨勪綅缃�
+ */
+ private int mCurrentPosition;
+
+ /**
+ * RecyclerView瀵硅薄
+ */
+ private RecyclerView mRecyclerView;
+
+ /**
+ * 鏁版嵁瑙傚療鑰呭璞�
+ */
+ private WrapAdapterDataObserver mObserver;
+
+ private void setRealAdapter(Adapter adapter) {
+ if (mRealAdapter != adapter) {
+
+ if (mRealAdapter != null) {
+ if (mObserver != null) {
+ // 涓哄師鏈夌殑RecyclerAdapter绉婚櫎鏁版嵁鐩戝惉瀵硅薄
+ mRealAdapter.unregisterAdapterDataObserver(mObserver);
+ }
+ }
+
+ mRealAdapter = adapter;
+ if (mRealAdapter != null) {
+ if (mObserver == null) {
+ mObserver = new WrapAdapterDataObserver(this);
+ }
+ // 涓哄師鏈夌殑RecyclerAdapter娣诲姞鏁版嵁鐩戝惉瀵硅薄
+ mRealAdapter.registerAdapterDataObserver(mObserver);
+ // 閫傞厤鍣ㄤ笉鏄涓�娆¤缁戝畾鍒癛ecyclerView涓婇渶瑕佸彂閫侀�氱煡锛屽洜涓虹涓�娆$粦瀹氫細鑷姩閫氱煡
+ if (mRecyclerView != null) {
+ notifyDataSetChanged();
+ }
+ }
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ if (mRealAdapter != null) {
+ return getHeaderViewsCount() + mRealAdapter.getItemCount() + getFooterViewsCount();
+ } else {
+ return getHeaderViewsCount() + getFooterViewsCount();
+ }
+ }
+
+ @SuppressWarnings("all")
+ @Override
+ public int getItemViewType(int position) {
+ mCurrentPosition = position;
+ // 鑾峰彇澶撮儴甯冨眬鐨勬�绘暟
+ int headerCount = getHeaderViewsCount();
+ // 鑾峰彇鍘熸湁閫傞厤鍣ㄧ殑鎬绘暟
+ int adapterCount = mRealAdapter != null ? mRealAdapter.getItemCount() : 0;
+ // 鑾峰彇鍦ㄥ師鏈夐�傞厤鍣ㄤ笂鐨勪綅缃�
+ int adjPosition = position - headerCount;
+ if (position < headerCount) {
+ return HEADER_VIEW_TYPE;
+ } else if (adjPosition < adapterCount) {
+ return mRealAdapter.getItemViewType(adjPosition);
+ } else {
+ return FOOTER_VIEW_TYPE;
+ }
+ }
+
+ public int getPosition() {
+ return mCurrentPosition;
+ }
+
+ @SuppressWarnings("all")
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ switch (viewType) {
+ case HEADER_VIEW_TYPE:
+ return newWrapViewHolder(mHeaderViews.get(getPosition()));
+ case FOOTER_VIEW_TYPE:
+ return newWrapViewHolder(mFooterViews.get(getPosition() - getHeaderViewsCount() - (mRealAdapter != null ? mRealAdapter.getItemCount() : 0)));
+ default:
+ int itemViewType = mRealAdapter.getItemViewType(getPosition() - getHeaderViewsCount());
+ if (itemViewType == HEADER_VIEW_TYPE || itemViewType == FOOTER_VIEW_TYPE) {
+ throw new IllegalStateException("Please do not use this type as itemType");
+ }
+ if (mRealAdapter != null) {
+ return mRealAdapter.onCreateViewHolder(parent, itemViewType);
+ } else {
+ return null;
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+ int viewType = getItemViewType(position);
+ switch (viewType) {
+ case HEADER_VIEW_TYPE:
+ case FOOTER_VIEW_TYPE:
+ break;
+ default:
+ if (mRealAdapter != null) {
+ mRealAdapter.onBindViewHolder(holder, getPosition() - getHeaderViewsCount());
+ }
+ break;
+ }
+ }
+
+ private WrapViewHolder newWrapViewHolder(View view) {
+ ViewParent parent = view.getParent();
+ if (parent instanceof ViewGroup) {
+ // IllegalStateException: ViewHolder views must not be attached when created.
+ // Ensure that you are not passing 'true' to the attachToRoot parameter of LayoutInflater.inflate(..., boolean attachToRoot)
+ ((ViewGroup) parent).removeView(view);
+ }
+ return new WrapViewHolder(view);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ if (mRealAdapter != null && position > getHeaderViewsCount() - 1 && position < getHeaderViewsCount() + mRealAdapter.getItemCount()) {
+ return mRealAdapter.getItemId(position - getHeaderViewsCount());
+ } else {
+ return super.getItemId(position);
+ }
+ }
+
+ @Override
+ public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
+ mRecyclerView = recyclerView;
+ if (mRealAdapter != null) {
+ mRealAdapter.onAttachedToRecyclerView(recyclerView);
+ }
+ }
+
+ @Override
+ public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
+ mRecyclerView = null;
+ if (mRealAdapter != null) {
+ mRealAdapter.onDetachedFromRecyclerView(recyclerView);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void onViewRecycled(@NonNull ViewHolder holder) {
+ if (holder instanceof WrapViewHolder) {
+ // 闃叉杩欎釜 ViewHolder 琚� RecyclerView 鎷垮幓澶嶇敤
+ holder.setIsRecyclable(false);
+ return;
+ }
+ if (mRealAdapter != null) {
+ mRealAdapter.onViewRecycled(holder);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean onFailedToRecycleView(@NonNull ViewHolder holder) {
+ if (mRealAdapter != null) {
+ return mRealAdapter.onFailedToRecycleView(holder);
+ }
+ return super.onFailedToRecycleView(holder);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void onViewAttachedToWindow(@NonNull ViewHolder holder) {
+ if (mRealAdapter != null) {
+ mRealAdapter.onViewAttachedToWindow(holder);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void onViewDetachedFromWindow(@NonNull ViewHolder holder) {
+ if (mRealAdapter != null) {
+ mRealAdapter.onViewDetachedFromWindow(holder);
+ }
+ }
+
+ /**
+ * 娣诲姞澶撮儴View
+ */
+ private void addHeaderView(View view) {
+ // 涓嶈兘娣诲姞鍚屼竴涓猇iew瀵硅薄锛屽惁鍒欎細瀵艰嚧RecyclerView澶嶇敤寮傚父
+ if (!mHeaderViews.contains(view) && !mFooterViews.contains(view)) {
+ mHeaderViews.add(view);
+ notifyDataSetChanged();
+ }
+ }
+
+ /**
+ * 绉婚櫎澶撮儴View
+ */
+ private void removeHeaderView(View view) {
+ if (mHeaderViews.remove(view)) {
+ notifyDataSetChanged();
+ }
+ }
+
+ /**
+ * 娣诲姞搴曢儴View
+ */
+ private void addFooterView(View view) {
+ // 涓嶈兘娣诲姞鍚屼竴涓猇iew瀵硅薄锛屽惁鍒欎細瀵艰嚧RecyclerView澶嶇敤寮傚父
+ if (!mFooterViews.contains(view) && !mHeaderViews.contains(view)) {
+ mFooterViews.add(view);
+ notifyDataSetChanged();
+ }
+ }
+
+ /**
+ * 绉婚櫎搴曢儴View
+ */
+ private void removeFooterView(View view) {
+ if (mFooterViews.remove(view)) {
+ notifyDataSetChanged();
+ }
+ }
+
+ /**
+ * 鑾峰彇澶撮儴View鎬绘暟
+ */
+ private int getHeaderViewsCount() {
+ return mHeaderViews.size();
+ }
+
+ /**
+ * 鑾峰彇搴曢儴View鎬绘暟
+ */
+ private int getFooterViewsCount() {
+ return mFooterViews.size();
+ }
+
+ /**
+ * 鑾峰彇澶撮儴View闆嗗悎
+ */
+ private List<View> getHeaderViews() {
+ return mHeaderViews;
+ }
+
+ /**
+ * 鑾峰彇搴曢儴View闆嗗悎
+ */
+ private List<View> getFooterViews() {
+ return mFooterViews;
+ }
+ }
+
+ /**
+ * 澶撮儴鍜屽簳閮ㄩ�氱敤鐨刅iewHolder瀵硅薄
+ */
+ private static final class WrapViewHolder extends ViewHolder {
+
+ private WrapViewHolder(View itemView) {
+ super(itemView);
+ }
+ }
+
+ /**
+ * 鏁版嵁鏀瑰彉鐩戝惉鍣�
+ */
+ private static final class WrapAdapterDataObserver extends AdapterDataObserver {
+
+ private final WrapRecyclerAdapter mWrapAdapter;
+
+ private WrapAdapterDataObserver(WrapRecyclerAdapter adapter) {
+ mWrapAdapter = adapter;
+ }
+
+ @Override
+ public void onChanged() {
+ mWrapAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public void onItemRangeChanged(int positionStart, int itemCount, Object payload) {
+ onItemRangeChanged(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount);
+ }
+
+ @Override
+ public void onItemRangeChanged(int positionStart, int itemCount) {
+ mWrapAdapter.notifyItemRangeChanged(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount);
+ }
+
+ @Override
+ public void onItemRangeInserted(int positionStart, int itemCount) {
+ mWrapAdapter.notifyItemRangeInserted(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount);
+ }
+
+ @Override
+ public void onItemRangeRemoved(int positionStart, int itemCount) {
+ mWrapAdapter.notifyItemRangeRemoved(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount);
+ }
+
+ @Override
+ public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
+ mWrapAdapter.notifyItemMoved(mWrapAdapter.getHeaderViewsCount() + fromPosition, toPosition);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app_base/src/main/res/layout/wait_dialog.xml b/app_base/src/main/res/layout/wait_dialog.xml
new file mode 100644
index 0000000..31ecfdd
--- /dev/null
+++ b/app_base/src/main/res/layout/wait_dialog.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.cardview.widget.CardView 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="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:gravity="center"
+ android:orientation="vertical"
+ app:cardBackgroundColor="#D9000000"
+ app:cardCornerRadius="@dimen/dp_15"
+ app:cardElevation="0px"
+ >
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:minWidth="@dimen/dp_110"
+ android:minHeight="@dimen/dp_110"
+ android:orientation="vertical"
+ android:padding="@dimen/dp_10">
+
+ <com.airbnb.lottie.LottieAnimationView
+ android:layout_width="@dimen/dp_70"
+ android:layout_height="@dimen/dp_70"
+ app:lottie_autoPlay="true"
+ app:lottie_loop="true"
+ app:lottie_rawRes="@raw/progress" />
+
+ <TextView
+ android:id="@+id/tv_wait_message"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="@dimen/dp_15"
+ android:layout_marginTop="@dimen/dp_5"
+ android:maxLines="3"
+ android:text="鍔犺浇涓�.."
+ android:textColor="#FFFFFF"
+ android:textSize="@dimen/sp_14" />
+ </LinearLayout>
+
+</androidx.cardview.widget.CardView>
\ No newline at end of file
diff --git a/app_base/src/main/res/raw/loading.json b/app_base/src/main/res/raw/loading.json
new file mode 100644
index 0000000..925ed2f
--- /dev/null
+++ b/app_base/src/main/res/raw/loading.json
@@ -0,0 +1 @@
+{"v":"5.5.8","fr":50,"ip":0,"op":147,"w":800,"h":600,"nm":"Paperplane","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"planete Outlines - Group 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":88,"s":[50]},{"t":120,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[468.336,323.378,0],"to":[-29,0,0],"ti":[29,0,0]},{"t":102,"s":[294.336,323.378,0]}],"ix":2},"a":{"a":0,"k":[453.672,304.756,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.742,0],[0.741,-0.14],[0,0.074],[13.484,0],[1.669,-0.361],[19.79,0],[3.317,-19.082],[2.691,0],[0,-13.484],[-0.048,-0.629],[2.405,0],[0,-6.742],[-6.742,0],[0,0],[0,6.743]],"o":[[-0.781,0],[0.001,-0.074],[0,-13.484],[-1.778,0],[-3.594,-18.742],[-20.03,0],[-2.421,-0.804],[-13.485,0],[0,0.642],[-1.89,-1.199],[-6.742,0],[0,6.743],[0,0],[6.742,0],[0,-6.742]],"v":[[75.134,16.175],[72.85,16.396],[72.856,16.175],[48.44,-8.241],[43.262,-7.685],[3.406,-40.591],[-36.571,-6.995],[-44.269,-8.241],[-68.685,16.175],[-68.604,18.079],[-75.133,16.175],[-87.341,28.383],[-75.133,40.592],[75.134,40.592],[87.342,28.383]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.815686334348,0.823529471603,0.827451040231,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[453.672,304.756],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Merged Shape Layer","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.547],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.845],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":77,"s":[35]},{"t":150,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[390.319,298.2,0],"to":[0,-2.583,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":44,"s":[390.319,282.7,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[390.319,319.25,0],"to":[0,0,0],"ti":[0,0,0]},{"t":150,"s":[390.319,298.2,0]}],"ix":2},"a":{"a":0,"k":[664.319,256.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[18.967,-3.189],[-18.967,19.935],[-0.949,-19.935]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.223528981209,0.192156970501,0.674510002136,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.879,292.737],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[633.939,275.369],"ix":2},"a":{"a":0,"k":[236.879,292.737],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-98.335,64.79],[-105.619,4.984],[105.619,-64.79],[-80.316,24.919]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278430998325,0.294117987156,0.847059011459,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.247,247.882],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[673.623,252.941],"ix":2},"a":{"a":0,"k":[316.247,247.882],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 2","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-133.812,-42.171],[133.812,-75.141],[5.765,75.141],[-61.708,18.402],[124.227,-71.307],[-87.011,-1.534]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.365000009537,0.407999992371,0.976000010967,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[297.638,254.4],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[664.319,256.2],"ix":2},"a":{"a":0,"k":[297.638,254.4],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 3","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"planete Outlines - Group 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":102,"s":[100]},{"t":150,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[327.38,267.583,0],"to":[25.833,0,0],"ti":[-25.833,0,0]},{"t":150,"s":[482.38,267.583,0]}],"ix":2},"a":{"a":0,"k":[171.76,193.166,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.485,0],[4.38,-4.171],[21.913,0],[3.575,-18.765],[1.851,0],[0,-13.484],[-0.011,-0.291],[1.599,0],[0,-6.743],[-6.742,0],[0,0],[0,13.485]],"o":[[-6.526,0],[-0.793,-21.719],[-19.806,0],[-1.734,-0.391],[-13.485,0],[0,0.293],[-1.4,-0.559],[-6.742,0],[0,6.742],[0,0],[13.485,0],[0,-13.484]],"v":[[59.669,-8.242],[42.84,-1.506],[2.287,-40.592],[-37.576,-7.638],[-42.962,-8.242],[-67.378,16.174],[-67.356,17.049],[-71.878,16.174],[-84.086,28.383],[-71.878,40.591],[59.669,40.591],[84.086,16.174]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.823999980852,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[171.76,193.166],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[406,306,0],"ix":2},"a":{"a":0,"k":[400,300,0],"ix":1},"s":{"a":0,"k":[179,179,100],"ix":6}},"ao":0,"w":800,"h":600,"ip":0,"op":147,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/app_base/src/main/res/raw/progress.json b/app_base/src/main/res/raw/progress.json
new file mode 100644
index 0000000..c1ed963
--- /dev/null
+++ b/app_base/src/main/res/raw/progress.json
@@ -0,0 +1 @@
+{"v":"4.6.9","fr":30,"ip":0,"op":45,"w":200,"h":200,"nm":"Composition 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"LFCalque de forme 2","ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[1],"y":[0]},"n":["0p833_0p833_1_0"],"t":0,"s":[0],"e":[360]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0_1_0p167_0p167"],"t":15,"s":[360],"e":[510]},{"t":34}]},"p":{"a":0,"k":[100,100,0]},"a":{"a":0,"k":[-93.098,-93.098,0]},"s":{"a":0,"k":[80,80,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.228,0],[0,-55.228],[-55.228,0],[0,55.228]],"o":[[-55.228,0],[0,55.228],[55.228,0],[0,-55.228]],"v":[[0,-100],[-100,0],[0,100],[100,0]],"c":true}},"nm":"Trac茅 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0_1_0p167_0p167"],"t":23,"s":[100],"e":[42]},{"t":45}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[98],"e":[98]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[98],"e":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[60],"e":[40]},{"t":23}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Raccorder les trac茅s 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":2,"lj":2,"nm":"Contour 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[-93.098,-93.098],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":45,"st":0,"bm":0,"sr":1}],"chars":[],"markers":[]}
\ No newline at end of file
diff --git a/app_base/src/main/res/raw/province.json b/app_base/src/main/res/raw/province.json
new file mode 100644
index 0000000..7c0a55b
--- /dev/null
+++ b/app_base/src/main/res/raw/province.json
@@ -0,0 +1,5537 @@
+[
+ {
+ "name": "鍖椾含甯�",
+ "city": [
+ {
+ "name": "鍖椾含甯�",
+ "area": [
+ "涓滃煄鍖�",
+ "瑗垮煄鍖�",
+ "娴锋穩鍖�",
+ "鏈濋槼鍖�",
+ "涓板彴鍖�",
+ "鐭虫櫙灞卞尯",
+ "闂ㄥご娌熷尯",
+ "閫氬窞鍖�",
+ "椤轰箟鍖�",
+ "鎴垮北鍖�",
+ "澶у叴鍖�",
+ "鏄屽钩鍖�",
+ "鎬�鏌斿尯",
+ "骞宠胺鍖�",
+ "瀵嗕簯鍖�",
+ "寤跺簡鍖�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "涓婃捣甯�",
+ "city": [
+ {
+ "name": "涓婃捣甯�",
+ "area": [
+ "榛勬郸鍖�",
+ "娴︿笢鍖�",
+ "寰愭眹鍖�",
+ "闀垮畞鍖�",
+ "闈欏畨鍖�",
+ "鏅檧鍖�",
+ "铏瑰彛鍖�",
+ "鏉ㄦ郸鍖�",
+ "闂佃鍖�",
+ "瀹濆北鍖�",
+ "鍢夊畾鍖�",
+ "閲戝北鍖�",
+ "鏉炬睙鍖�",
+ "闈掓郸鍖�",
+ "濂夎搐鍖�",
+ "宕囨槑鍖�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "澶╂触甯�",
+ "city": [
+ {
+ "name": "澶╂触甯�",
+ "area": [
+ "鍜屽钩鍖�",
+ "娌宠タ鍖�",
+ "鍗楀紑鍖�",
+ "娌充笢鍖�",
+ "娌冲寳鍖�",
+ "绾㈡ˉ鍖�",
+ "婊ㄦ捣鍖�",
+ "涓滀附鍖�",
+ "瑗块潚鍖�",
+ "娲ュ崡鍖�",
+ "鍖楄景鍖�",
+ "姝︽竻鍖�",
+ "瀹濆澔鍖�",
+ "瀹佹渤鍖�",
+ "闈欐捣鍖�",
+ "钃熷窞鍖�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "閲嶅簡甯�",
+ "city": [
+ {
+ "name": "閲嶅簡甯�",
+ "area": [
+ "娓濅腑鍖�",
+ "澶ф浮鍙e尯",
+ "姹熷寳鍖�",
+ "娌欏潽鍧濆尯",
+ "涔濋緳鍧″尯",
+ "鍗楀哺鍖�",
+ "鍖楃鍖�",
+ "娓濆寳鍖�",
+ "宸村崡鍖�",
+ "娑櫟鍖�",
+ "缍︽睙鍖�",
+ "澶ц冻鍖�",
+ "闀垮鍖�",
+ "姹熸触鍖�",
+ "鍚堝窛鍖�",
+ "姘稿窛鍖�",
+ "鍗楀窛鍖�",
+ "鐠у北鍖�",
+ "閾滄鍖�",
+ "娼煎崡鍖�",
+ "鑽f槍鍖�",
+ "涓囧窞鍖�",
+ "姊佸钩鍖�",
+ "鍩庡彛鍘�",
+ "涓伴兘鍘�",
+ "鍨睙鍘�",
+ "蹇犲幙",
+ "寮�宸炲尯",
+ "浜戦槼鍘�",
+ "濂夎妭鍘�",
+ "宸北鍘�",
+ "宸邯鍘�",
+ "榛旀睙鍖�",
+ "姝﹂殕鍖�",
+ "鐭虫煴鍦熷鏃忚嚜娌诲幙",
+ "绉�灞卞湡瀹舵棌鑻楁棌鑷不鍘�",
+ "閰夐槼鍦熷鏃忚嫍鏃忚嚜娌诲幙",
+ "褰按鑻楁棌鍦熷鏃忚嚜娌诲幙"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "骞夸笢鐪�",
+ "city": [
+ {
+ "name": "骞垮窞甯�",
+ "area": [
+ "瓒婄鍖�",
+ "鑽旀咕鍖�",
+ "娴风彔鍖�",
+ "澶╂渤鍖�",
+ "鐧戒簯鍖�",
+ "榛勫煍鍖�",
+ "鐣鍖�",
+ "鑺遍兘鍖�",
+ "鍗楁矙鍖�",
+ "澧炲煄鍖�",
+ "浠庡寲鍖�"
+ ]
+ },
+ {
+ "name": "娣卞湷甯�",
+ "area": [
+ "绂忕敯鍖�",
+ "缃楁箹鍖�",
+ "鍗楀北鍖�",
+ "鐩愮敯鍖�",
+ "瀹濆畨鍖�",
+ "榫欏矖鍖�",
+ "鍧北鍖�",
+ "鍏夋槑鍖�",
+ "榫欏崕鍖�",
+ "澶ч箯鍖�"
+ ]
+ },
+ {
+ "name": "涓滆帪甯�",
+ "area": [
+ "鑾炲煄鍖�",
+ "鍗楀煄鍖�",
+ "涓滃煄鍖�",
+ "涓囨睙鍖�",
+ "鐭崇ⅲ闀�",
+ "鐭抽緳闀�",
+ "鑼跺北闀�",
+ "鐭虫帓闀�",
+ "浼佺煶闀�",
+ "妯播闀�",
+ "妗ュご闀�",
+ "璋㈠矖闀�",
+ "涓滃潙闀�",
+ "甯稿钩闀�",
+ "瀵闀�",
+ "澶ф湕闀�",
+ "楹绘秾闀�",
+ "涓爞闀�",
+ "楂樺煑闀�",
+ "妯熸湪澶撮晣",
+ "澶у箔灞遍晣",
+ "鏈涚墰澧╅晣",
+ "榛勬睙闀�",
+ "娲闀�",
+ "娓呮邯闀�",
+ "娌欑敯闀�",
+ "閬撴粯闀�",
+ "濉樺帵闀�",
+ "铏庨棬闀�",
+ "鍘氳闀�",
+ "鍑ゅ矖闀�",
+ "闀垮畨闀�"
+ ]
+ },
+ {
+ "name": "鎯犲窞甯�",
+ "area": [
+ "鎯犲煄鍖�",
+ "鎯犻槼鍖�",
+ "鎯犱笢鍘�",
+ "鍗氱綏鍘�",
+ "榫欓棬鍘�"
+ ]
+ },
+ {
+ "name": "鐝犳捣甯�",
+ "area": [
+ "棣欐床鍖�",
+ "閲戞咕鍖�",
+ "鏂楅棬鍖�"
+ ]
+ },
+ {
+ "name": "浣涘北甯�",
+ "area": [
+ "绂呭煄鍖�",
+ "鍗楁捣鍖�",
+ "椤哄痉鍖�",
+ "涓夋按鍖�",
+ "楂樻槑鍖�"
+ ]
+ },
+ {
+ "name": "涓北甯�",
+ "area": [
+ "鐭冲矏鍖�",
+ "涓滃尯",
+ "瑗垮尯",
+ "鍗楀尯",
+ "浜旀灞卞尯",
+ "鐏偓寮�鍙戝尯",
+ "榛勫渻闀�",
+ "鍗楀ご闀�",
+ "涓滃嚖闀�",
+ "闃滄矙闀�",
+ "灏忔闀�",
+ "涓滃崌闀�",
+ "鍙ら晣闀�",
+ "妯爮闀�",
+ "涓夎闀�",
+ "姘戜紬闀�",
+ "鍗楁湕闀�",
+ "娓彛闀�",
+ "澶ф秾闀�",
+ "娌欐邯闀�",
+ "涓変埂闀�",
+ "鏉胯姍闀�",
+ "绁炴咕闀�",
+ "鍧︽床闀�"
+ ]
+ },
+ {
+ "name": "娼窞甯�",
+ "area": [
+ "婀樻ˉ鍖�",
+ "娼畨鍖�",
+ "楗跺钩鍘�"
+ ]
+ },
+ {
+ "name": "鎻槼甯�",
+ "area": [
+ "姒曞煄鍖�",
+ "鎻笢鍘�",
+ "鎻タ鍘�",
+ "鎯犳潵鍘�",
+ "鏅畞甯�"
+ ]
+ },
+ {
+ "name": "姹曞ご甯�",
+ "area": [
+ "閲戝钩鍖�",
+ "榫欐箹鍖�",
+ "婢勬捣鍖�",
+ "婵犳睙鍖�",
+ "婵犳睙鍖�",
+ "娼崡鍖�",
+ "鍗楁境鍘�"
+ ]
+ },
+ {
+ "name": "姹曞熬甯�",
+ "area": [
+ "鍩庡尯",
+ "闄嗕赴甯�",
+ "娴蜂赴鍘�",
+ "闄嗘渤鍘�"
+ ]
+ },
+ {
+ "name": "娓呰繙甯�",
+ "area": [
+ "娓呭煄鍖�",
+ "娓呮柊鍖�",
+ "鑻卞痉甯�",
+ "杩炲窞甯�",
+ "浣涘唸鍘�",
+ "闃冲北鍘�",
+ "杩炲崡鐟舵棌鑷不鍘�",
+ "杩炲北澹棌鐟舵棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "浜戞诞甯�",
+ "area": [
+ "浜戝煄鍖�",
+ "浜戝畨鍘�",
+ "鏂板叴鍘�",
+ "閮佸崡鍘�",
+ "缃楀畾甯�"
+ ]
+ },
+ {
+ "name": "闊跺叧甯�",
+ "area": [
+ "娴堟睙鍖�",
+ "姝︽睙鍖�",
+ "鏇叉睙鍖�",
+ "涔愭槍甯�",
+ "鍗楅泟甯�",
+ "濮嬪叴鍘�",
+ "浠佸寲鍘�",
+ "缈佹簮鍘�",
+ "鏂颁赴鍘�",
+ "涔虫簮鐟舵棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "姹熼棬甯�",
+ "area": [
+ "钃睙鍖�",
+ "姹熸捣鍖�",
+ "鏂颁細鍖�",
+ "鍙板北甯�",
+ "寮�骞冲競",
+ "楣ゅ北甯�",
+ "鎭╁钩甯�"
+ ]
+ },
+ {
+ "name": "婀涙睙甯�",
+ "area": [
+ "璧ゅ潕鍖�",
+ "闇炲北鍖�",
+ "鍧″ご鍖�",
+ "楹荤珷鍖�",
+ "鍚村窛甯�",
+ "闆峰窞甯�",
+ "寤夋睙甯�",
+ "閬傛邯鍘�",
+ "寰愰椈鍘�"
+ ]
+ },
+ {
+ "name": "鑼傚悕甯�",
+ "area": [
+ "鑼傚崡鍖�",
+ "鐢电櫧鍖�",
+ "楂樺窞甯�",
+ "鑼傛腐鍖�",
+ "鍖栧窞甯�",
+ "淇″疁甯�"
+ ]
+ },
+ {
+ "name": "鑲囧簡甯�",
+ "area": [
+ "绔窞鍖�",
+ "榧庢箹鍖�",
+ "骞垮畞鍘�",
+ "鎬�闆嗗幙",
+ "灏佸紑鍘�",
+ "寰峰簡鍘�",
+ "楂樿鍖�",
+ "鍥涗細甯�"
+ ]
+ },
+ {
+ "name": "娌虫簮甯�",
+ "area": [
+ "婧愬煄鍖�",
+ "绱噾鍘�",
+ "榫欏窛鍘�",
+ "杩炲钩鍘�",
+ "鍜屽钩鍘�",
+ "涓滄簮鍘�"
+ ]
+ },
+ {
+ "name": "姊呭窞甯�",
+ "area": [
+ "姊呮睙鍖�",
+ "姊呭幙鍖�",
+ "鍏村畞甯�",
+ "骞宠繙鍘�",
+ "钑夊箔鍘�",
+ "澶у煍鍘�",
+ "涓伴『鍘�",
+ "浜斿崕鍘�"
+ ]
+ },
+ {
+ "name": "闃虫睙甯�",
+ "area": [
+ "姹熷煄鍖�",
+ "闃虫槬甯�",
+ "闃充笢鍖�",
+ "闃宠タ鍘�",
+ "娴烽櫟宀涚粡娴庡紑鍙戣瘯楠屽尯",
+ "闃虫睙楂樻柊鎶�鏈骇涓氬紑鍙戝尯"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "姹熻嫃鐪�",
+ "city": [
+ {
+ "name": "鍗椾含甯�",
+ "area": [
+ "鐜勬鍖�",
+ "绉︽樊鍖�",
+ "榧撴ゼ鍖�",
+ "寤洪偤鍖�",
+ "闆ㄨ姳鍙板尯",
+ "娴﹀彛鍖�",
+ "鍏悎鍖�",
+ "鏍栭湠鍖�",
+ "姹熷畞鍖�",
+ "婧ф按鍖�",
+ "楂樻烦鍘�"
+ ]
+ },
+ {
+ "name": "鏃犻敗甯�",
+ "area": [
+ "姊佹邯鍖�",
+ "婊ㄦ箹鍖�",
+ "鎯犲北鍖�",
+ "閿″北鍖�",
+ "鏂板惔鍖�",
+ "姹熼槾甯�",
+ "瀹滃叴甯�"
+ ]
+ },
+ {
+ "name": "鑻忓窞甯�",
+ "area": [
+ "濮戣嫃鍖�",
+ "鐩稿煄鍖�",
+ "鍚翠腑鍖�",
+ "铏庝笜鍖�",
+ "鍚存睙鍖�",
+ "甯哥啛甯�",
+ "鏄嗗北甯�",
+ "寮犲娓競",
+ "澶粨甯�"
+ ]
+ },
+ {
+ "name": "甯稿窞甯�",
+ "area": [
+ "閲戝潧鍖�",
+ "姝﹁繘鍖�",
+ "鏂板寳鍖�",
+ "澶╁畞鍖�",
+ "閽熸ゼ鍖�",
+ "婧ч槼甯�"
+ ]
+ },
+ {
+ "name": "闀囨睙甯�",
+ "area": [
+ "浜彛鍖�",
+ "娑﹀窞鍖�",
+ "涓瑰緬鍖�",
+ "闀囨睙鍖�",
+ "闀囨睙楂樻柊鍖�"
+ ]
+ },
+ {
+ "name": "鍗楅�氬競",
+ "area": [
+ "宕囧窛鍖�",
+ "娓椄鍖�",
+ "閫氬窞鍖�",
+ "娴峰畨鍘�",
+ "濡備笢鍘�",
+ "鍚笢甯�",
+ "濡傜殝甯�",
+ "娴烽棬甯�"
+ ]
+ },
+ {
+ "name": "娉板窞甯�",
+ "area": [
+ "娴烽櫟鍖�",
+ "楂樻腐鍖�",
+ "濮滃牥甯�",
+ "鍏村寲甯�",
+ "娉板叴甯�",
+ "闈栨睙甯�"
+ ]
+ },
+ {
+ "name": "鎵窞甯�",
+ "area": [
+ "骞块櫟鍖�",
+ "閭楁睙鍖�",
+ "姹熼兘鍖�",
+ "寮�鍙戝尯",
+ "瀹濆簲鍘�",
+ "浠緛甯�",
+ "楂橀偖甯�"
+ ]
+ },
+ {
+ "name": "鐩愬煄甯�",
+ "area": [
+ "浜箹鍖�",
+ "鐩愰兘鍖�",
+ "澶т赴鍖�",
+ "寤烘箹鍘�",
+ "灏勯槼鍘�",
+ "闃滃畞鍘�",
+ "婊ㄦ捣鍘�",
+ "鍝嶆按鍘�",
+ "涓滃彴甯�"
+ ]
+ },
+ {
+ "name": "杩炰簯娓競",
+ "area": [
+ "娴峰窞鍖�",
+ "杩炰簯鍖�",
+ "璧f鍖�",
+ "鐏屼簯鍘�",
+ "涓滄捣鍘�",
+ "鐏屽崡鍘�"
+ ]
+ },
+ {
+ "name": "寰愬窞甯�",
+ "area": [
+ "浜戦緳鍖�",
+ "榧撴ゼ鍖�",
+ "璐炬豹鍖�",
+ "娉夊北鍖�",
+ "閾滃北鍖�",
+ "閭冲窞甯�",
+ "鏂版矀甯�",
+ "鐫㈠畞鍘�",
+ "娌涘幙",
+ "涓板幙"
+ ]
+ },
+ {
+ "name": "娣畨甯�",
+ "area": [
+ "娓呮睙娴﹀尯",
+ "娣槾鍖�",
+ "娣畨鍖�",
+ "娲辰鍖�",
+ "娑熸按鍘�",
+ "鐩辩湙鍘�",
+ "閲戞箹鍘�"
+ ]
+ },
+ {
+ "name": "瀹胯縼甯�",
+ "area": [
+ "瀹垮煄鍖�",
+ "瀹胯鲍鍖�",
+ "娌槼鍘�",
+ "娉楅槼鍘�",
+ "娉楁椽鍘�",
+ "娲嬫渤鍖�",
+ "婀栨花鍖�",
+ "鑻忓宸ヤ笟鍥尯",
+ "缁忔祹寮�鍙戝尯"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "灞变笢鐪�",
+ "city": [
+ {
+ "name": "娴庡崡甯�",
+ "area": [
+ "鍘嗕笅鍖�",
+ "甯備腑鍖�",
+ "妲愯崼鍖�",
+ "澶╂ˉ鍖�",
+ "鍘嗗煄鍖�",
+ "闀挎竻鍖�",
+ "绔犱笜鍖�",
+ "娴庨槼鍖�",
+ "鑾辫姕鍖�",
+ "閽㈠煄鍖�",
+ "骞抽槾鍘�",
+ "鍟嗘渤鍘�",
+ "楂樻柊鎶�鏈骇涓氬紑鍙戝尯"
+ ]
+ },
+ {
+ "name": "闈掑矝甯�",
+ "area": [
+ "甯傚崡鍖�",
+ "甯傚寳鍖�",
+ "榛勫矝鍖�",
+ "宕傚北鍖�",
+ "鏉庢钵鍖�",
+ "鍩庨槼鍖�",
+ "鑳跺窞甯�",
+ "鍗冲ⅷ鍖�",
+ "骞冲害甯�",
+ "鑾辫タ甯�"
+ ]
+ },
+ {
+ "name": "娣勫崥甯�",
+ "area": [
+ "寮犲簵鍖�",
+ "娣勫窛鍖�",
+ "鍗氬北鍖�",
+ "涓存穭鍖�",
+ "妗撳彴鍘�",
+ "楂橀潚鍘�",
+ "娌傛簮鍘�"
+ ]
+ },
+ {
+ "name": "鏋e簞甯�",
+ "area": [
+ "甯備腑鍖�",
+ "灞变涵鍖�",
+ "鍙板効搴勫尯",
+ "宄勫煄鍖�",
+ "钖涘煄鍖�",
+ "婊曞窞甯�"
+ ]
+ },
+ {
+ "name": "涓滆惀甯�",
+ "area": [
+ "涓滆惀鍖�",
+ "娌冲彛鍖�",
+ "鍨﹀埄鍖�",
+ "鍒╂触鍘�",
+ "骞块ザ鍘�"
+ ]
+ },
+ {
+ "name": "鐑熷彴甯�",
+ "area": [
+ "鑺濈綐鍖�",
+ "绂忓北鍖�",
+ "鐗熷钩鍖�",
+ "鑾卞北鍖�",
+ "榫欏彛甯�",
+ "鑾遍槼甯�",
+ "鑾卞窞甯�",
+ "钃幈鍖�",
+ "鎷涜繙甯�",
+ "鏍栭湠甯�",
+ "娴烽槼甯�",
+ "鐑熷彴缁忔祹鎶�鏈紑鍙戝尯",
+ "鐑熷彴楂樻柊鎶�鏈骇涓氬紑鍙戝尯"
+ ]
+ },
+ {
+ "name": "娼嶅潑甯�",
+ "area": [
+ "娼嶅煄鍖�",
+ "瀵掍涵鍖�",
+ "鍧婂瓙鍖�",
+ "濂庢枃鍖�",
+ "涓存湊鍘�",
+ "鏄屼箰鍘�",
+ "闈掑窞甯�",
+ "璇稿煄甯�",
+ "瀵垮厜甯�",
+ "瀹変笜甯�",
+ "楂樺瘑甯�",
+ "鏄岄倯甯�"
+ ]
+ },
+ {
+ "name": "娴庡畞甯�",
+ "area": [
+ "浠诲煄鍖�",
+ "鍏栧窞鍖�",
+ "寰北鍘�",
+ "楸煎彴鍘�",
+ "閲戜埂鍘�",
+ "鍢夌ゥ鍘�",
+ "姹朵笂鍘�",
+ "娉楁按鍘�",
+ "姊佸北鍘�",
+ "鏇查槣甯�",
+ "閭瑰煄甯�"
+ ]
+ },
+ {
+ "name": "娉板畨甯�",
+ "area": [
+ "娉板北鍖�",
+ "宀卞渤鍖�",
+ "鏂版嘲甯�",
+ "鑲ュ煄甯�",
+ "瀹侀槼鍘�",
+ "涓滃钩鍘�"
+ ]
+ },
+ {
+ "name": "濞佹捣甯�",
+ "area": [
+ "鐜繝鍖�",
+ "鏂囩櫥鍖�",
+ "鑽f垚甯�",
+ "涔冲北甯�",
+ "鍗楁捣鍖�",
+ "缁忔祹鎶�鏈紑鍙戝尯",
+ "鐏偓楂樻妧鏈骇涓氬紑鍙戝尯",
+ "杩涘嚭鍙e姞宸ヤ繚绋庡尯",
+ "涓存腐缁忔祹鎶�鏈紑鍙戝尯"
+ ]
+ },
+ {
+ "name": "鏃ョ収甯�",
+ "area": [
+ "涓滄腐鍖�",
+ "宀氬北鍖�",
+ "浜旇幉鍘�",
+ "鑾掑幙"
+ ]
+ },
+ {
+ "name": "鑾辫姕甯�",
+ "area": [
+ "鑾卞煄鍖�",
+ "閽㈠煄鍖�"
+ ]
+ },
+ {
+ "name": "涓存矀甯�",
+ "area": [
+ "鍏板北鍖�",
+ "缃楀簞鍖�",
+ "娌充笢鍖�",
+ "閮煄鍘�",
+ "鍏伴櫟鍘�",
+ "鑾掑崡鍘�",
+ "娌傛按鍘�",
+ "钂欓槾鍘�",
+ "骞抽倯鍘�",
+ "璐瑰幙",
+ "娌傚崡鍘�",
+ "涓存箔鍘�"
+ ]
+ },
+ {
+ "name": "寰峰窞甯�",
+ "area": [
+ "寰峰煄鍖�",
+ "闄靛煄鍖�",
+ "瀹佹触鍘�",
+ "搴嗕簯鍘�",
+ "涓撮倯鍘�",
+ "榻愭渤鍘�",
+ "骞冲師鍘�",
+ "澶忔触鍘�",
+ "姝﹀煄鍘�",
+ "涔愰櫟甯�",
+ "绂瑰煄甯�"
+ ]
+ },
+ {
+ "name": "鑱婂煄甯�",
+ "area": [
+ "涓滄槍搴滃尯",
+ "鑼屽钩鍖�",
+ "涓存竻甯�",
+ "涓滈樋鍘�",
+ "鍐犲幙",
+ "楂樺攼鍘�",
+ "闃宠胺鍘�",
+ "鑾樺幙"
+ ]
+ },
+ {
+ "name": "婊ㄥ窞甯�",
+ "area": [
+ "婊ㄥ煄鍖�",
+ "娌惧寲鍖�",
+ "鎯犳皯鍘�",
+ "闃充俊鍘�",
+ "鏃犳#鍘�",
+ "鍗氬叴鍘�",
+ "閭瑰钩甯�"
+ ]
+ },
+ {
+ "name": "鑿忔辰甯�",
+ "area": [
+ "鐗′腹鍖�",
+ "瀹氶櫠鍘�",
+ "宸ㄩ噹鍘�",
+ "鏇瑰幙",
+ "鎴愭鍘�",
+ "鍗曞幙",
+ "閮撳煄鍘�",
+ "閯勫煄鍘�",
+ "涓滄槑鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "娴欐睙鐪�",
+ "city": [
+ {
+ "name": "鏉窞甯�",
+ "area": [
+ "涓婂煄鍖�",
+ "涓嬪煄鍖�",
+ "姹熷共鍖�",
+ "鎷卞鍖�",
+ "瑗挎箹鍖�",
+ "婊ㄦ睙鍖�",
+ "钀у北鍖�",
+ "浣欐澀鍖�",
+ "瀵岄槼鍖�",
+ "涓村畨鍖�",
+ "妗愬簮鍘�",
+ "娣冲畨鍘�",
+ "寤哄痉甯�"
+ ]
+ },
+ {
+ "name": "瀹佹尝甯�",
+ "area": [
+ "娴锋洐鍖�",
+ "姹熷寳鍖�",
+ "鍖椾粦鍖�",
+ "闀囨捣鍖�",
+ "閯炲窞鍖�",
+ "濂夊寲甯�",
+ "浣欏甯�",
+ "鎱堟邯甯�",
+ "璞″北鍘�",
+ "瀹佹捣鍘�"
+ ]
+ },
+ {
+ "name": "娓╁窞甯�",
+ "area": [
+ "楣垮煄鍖�",
+ "榫欐咕鍖�",
+ "鐡捣鍖�",
+ "娲炲ご鍖�",
+ "姘稿槈鍘�",
+ "骞抽槼鍘�",
+ "鑻嶅崡鍘�",
+ "鏂囨垚鍘�",
+ "娉伴『鍘�",
+ "鐟炲畨甯�",
+ "涔愭竻甯�",
+ "榫欐腐甯�"
+ ]
+ },
+ {
+ "name": "鍢夊叴甯�",
+ "area": [
+ "鍗楁箹鍖�",
+ "绉�娲插尯",
+ "鍢夊杽鍘�",
+ "娴风洂鍘�",
+ "娴峰畞甯�",
+ "骞虫箹甯�",
+ "妗愪埂甯�"
+ ]
+ },
+ {
+ "name": "婀栧窞甯�",
+ "area": [
+ "鍚村叴鍖�",
+ "鍗楁禂鍖�",
+ "寰锋竻鍘�",
+ "闀垮叴鍘�",
+ "瀹夊悏鍘�"
+ ]
+ },
+ {
+ "name": "缁嶅叴甯�",
+ "area": [
+ "瓒婂煄鍖�",
+ "鏌ˉ鍖�",
+ "涓婅櫈鍖�",
+ "鏂版槍鍘�",
+ "宓婂窞甯�",
+ "璇告毃甯�"
+ ]
+ },
+ {
+ "name": "閲戝崕甯�",
+ "area": [
+ "濠哄煄鍖�",
+ "閲戜笢鍖�",
+ "鍏版邯甯�",
+ "涔変箤甯�",
+ "涓滈槼甯�",
+ "姘稿悍甯�",
+ "娴︽睙鍘�",
+ "姝︿箟鍘�",
+ "纾愬畨鍘�"
+ ]
+ },
+ {
+ "name": "琛㈠窞甯�",
+ "area": [
+ "鏌煄鍖�",
+ "琛㈡睙鍖�",
+ "榫欐父鍘�",
+ "姹熷北甯�",
+ "甯稿北鍘�",
+ "寮�鍖栧幙"
+ ]
+ },
+ {
+ "name": "鑸熷北甯�",
+ "area": [
+ "瀹氭捣鍖�",
+ "鏅檧鍖�",
+ "宀卞北鍘�",
+ "宓婃硹鍘�"
+ ]
+ },
+ {
+ "name": "鍙板窞甯�",
+ "area": [
+ "妞掓睙鍖�",
+ "榛勫博鍖�",
+ "璺ˉ鍖�",
+ "涓存捣甯�",
+ "娓╁箔甯�",
+ "鐜夌幆甯�",
+ "澶╁彴鍘�",
+ "浠欏眳鍘�",
+ "涓夐棬鍘�"
+ ]
+ },
+ {
+ "name": "涓芥按甯�",
+ "area": [
+ "鑾查兘鍖�",
+ "榫欐硥甯�",
+ "闈掔敯鍘�",
+ "浜戝拰鍘�",
+ "搴嗗厓鍘�",
+ "缂欎簯鍘�",
+ "閬傛槍鍘�",
+ "鏉鹃槼鍘�",
+ "鏅畞鐣叉棌鑷不鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "娌冲崡鐪�",
+ "city": [
+ {
+ "name": "閮戝窞甯�",
+ "area": [
+ "涓師鍖�",
+ "浜屼竷鍖�",
+ "绠″煄鍥炴棌鍖�",
+ "閲戞按鍖�",
+ "涓婅鍖�",
+ "鎯犳祹鍖�",
+ "涓墴鍘�",
+ "宸╀箟甯�",
+ "鑽ラ槼甯�",
+ "鏂板瘑甯�",
+ "鏂伴儜甯�",
+ "鐧诲皝甯�"
+ ]
+ },
+ {
+ "name": "寮�灏佸競",
+ "area": [
+ "榫欎涵鍖�",
+ "椤烘渤鍥炴棌鍖�",
+ "榧撴ゼ鍖�",
+ "绂圭帇鍙板尯",
+ "绁ョ鍖�",
+ "鏉炲幙",
+ "閫氳鍘�",
+ "灏夋皬鍘�",
+ "鍏拌�冨幙"
+ ]
+ },
+ {
+ "name": "娲涢槼甯�",
+ "area": [
+ "鑰佸煄鍖�",
+ "瑗垮伐鍖�",
+ "鐎嶆渤鍥炴棌鍖�",
+ "娑цタ鍖�",
+ "鍚夊埄鍖�",
+ "娲涢緳鍖�",
+ "瀛熸触鍘�",
+ "鏂板畨鍘�",
+ "鏍惧窛鍘�",
+ "宓╁幙",
+ "姹濋槼鍘�",
+ "瀹滈槼鍘�",
+ "娲涘畞鍘�",
+ "浼婂窛鍘�",
+ "鍋冨笀甯�"
+ ]
+ },
+ {
+ "name": "骞抽《灞卞競",
+ "area": [
+ "鏂板崕鍖�",
+ "鍗笢鍖�",
+ "鐭抽緳鍖�",
+ "婀涙渤鍖�",
+ "瀹濅赴鍘�",
+ "鍙跺幙",
+ "椴佸北鍘�",
+ "閮忓幙",
+ "鑸為挗甯�",
+ "姹濆窞甯�"
+ ]
+ },
+ {
+ "name": "瀹夐槼甯�",
+ "area": [
+ "鏂囧嘲鍖�",
+ "鍖楀叧鍖�",
+ "娈烽兘鍖�",
+ "榫欏畨鍖�",
+ "瀹夐槼鍘�",
+ "姹ら槾鍘�",
+ "婊戝幙",
+ "鍐呴粍鍘�",
+ "鏋楀窞甯�"
+ ]
+ },
+ {
+ "name": "楣ゅ甯�",
+ "area": [
+ "楣ゅ北鍖�",
+ "灞卞煄鍖�",
+ "娣囨花鍖�",
+ "娴氬幙",
+ "娣囧幙"
+ ]
+ },
+ {
+ "name": "鏂颁埂甯�",
+ "area": [
+ "绾㈡棗鍖�",
+ "鍗花鍖�",
+ "鍑ゆ硥鍖�",
+ "鐗ч噹鍖�",
+ "鏂颁埂鍘�",
+ "鑾峰槈鍘�",
+ "鍘熼槼鍘�",
+ "寤舵触鍘�",
+ "灏佷笜鍘�",
+ "鍗緣甯�",
+ "杈夊幙甯�",
+ "闀垮灒甯�"
+ ]
+ },
+ {
+ "name": "鐒︿綔甯�",
+ "area": [
+ "瑙f斁鍖�",
+ "涓珯鍖�",
+ "椹潙鍖�",
+ "灞遍槼鍖�",
+ "淇鍘�",
+ "鍗氱埍鍘�",
+ "姝﹂櫉鍘�",
+ "娓╁幙",
+ "娌侀槼甯�",
+ "瀛熷窞甯�"
+ ]
+ },
+ {
+ "name": "婵槼甯�",
+ "area": [
+ "鍗庨緳鍖�",
+ "娓呬赴鍘�",
+ "鍗椾箰鍘�",
+ "鑼冨幙",
+ "鍙板墠鍘�",
+ "婵槼鍘�"
+ ]
+ },
+ {
+ "name": "璁告槍甯�",
+ "area": [
+ "榄忛兘鍖�",
+ "寤哄畨鍖�",
+ "閯㈤櫟鍘�",
+ "瑗勫煄鍘�",
+ "绂瑰窞甯�",
+ "闀胯憶甯�"
+ ]
+ },
+ {
+ "name": "婕渤甯�",
+ "area": [
+ "婧愭眹鍖�",
+ "閮惧煄鍖�",
+ "鍙櫟鍖�",
+ "鑸為槼鍘�",
+ "涓撮鍘�"
+ ]
+ },
+ {
+ "name": "涓夐棬宄″競",
+ "area": [
+ "婀栨花鍖�",
+ "闄曞窞鍖�",
+ "娓戞睜鍘�",
+ "鍗㈡皬鍘�",
+ "涔夐┈甯�",
+ "鐏靛疂甯�"
+ ]
+ },
+ {
+ "name": "鍗楅槼甯�",
+ "area": [
+ "瀹涘煄鍖�",
+ "鍗ч緳鍖�",
+ "鍗楀彫鍘�",
+ "鏂瑰煄鍘�",
+ "瑗垮场鍘�",
+ "闀囧钩鍘�",
+ "鍐呬埂鍘�",
+ "娣呭窛鍘�",
+ "绀炬棗鍘�",
+ "鍞愭渤鍘�",
+ "鏂伴噹鍘�",
+ "妗愭煆鍘�",
+ "閭撳窞甯�"
+ ]
+ },
+ {
+ "name": "鍟嗕笜甯�",
+ "area": [
+ "姊佸洯鍖�",
+ "鐫㈤槼鍖�",
+ "姘戞潈鍘�",
+ "鐫㈠幙",
+ "瀹侀櫟鍘�",
+ "鏌樺煄鍘�",
+ "铏炲煄鍘�",
+ "澶忛倯鍘�",
+ "姘稿煄甯�"
+ ]
+ },
+ {
+ "name": "淇¢槼甯�",
+ "area": [
+ "娴夋渤鍖�",
+ "骞虫ˉ鍖�",
+ "缃楀北鍘�",
+ "鍏夊北鍘�",
+ "鏂板幙",
+ "鍟嗗煄鍘�",
+ "鍥哄鍘�",
+ "娼㈠窛鍘�",
+ "娣花鍘�",
+ "鎭幙"
+ ]
+ },
+ {
+ "name": "鍛ㄥ彛甯�",
+ "area": [
+ "宸濇眹鍖�",
+ "鎵舵矡鍘�",
+ "娣槼鍖�",
+ "瑗垮崕鍘�",
+ "鍟嗘按鍘�",
+ "娌堜笜鍘�",
+ "閮稿煄鍘�",
+ "澶悍鍘�",
+ "楣块倯鍘�",
+ "椤瑰煄甯�"
+ ]
+ },
+ {
+ "name": "椹婚┈搴楀競",
+ "area": [
+ "椹垮煄鍖�",
+ "瑗垮钩鍘�",
+ "涓婅敗鍘�",
+ "骞宠垎鍘�",
+ "姝i槼鍘�",
+ "纭北鍘�",
+ "娉岄槼鍘�",
+ "姹濆崡鍘�",
+ "閬傚钩鍘�",
+ "鏂拌敗鍘�"
+ ]
+ },
+ {
+ "name": "娴庢簮甯�",
+ "area": [
+ "娴庢按琛楅亾",
+ "娌佸洯琛楅亾",
+ "鍖楁捣琛楅亾",
+ "澶╁潧琛楅亾",
+ "鐜夋硥琛楅亾",
+ "鍏嬩簳闀�",
+ "浜旈緳鍙i晣",
+ "姊ㄦ灄闀�",
+ "杞靛煄闀�",
+ "鎵跨暀闀�",
+ "鍧″ご闀�",
+ "澶у唱闀�",
+ "閭靛師闀�",
+ "鎬濈ぜ闀�",
+ "鐜嬪眿闀�",
+ "涓嬪喍闀�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "鍥涘窛鐪�",
+ "city": [
+ {
+ "name": "鎴愰兘甯�",
+ "area": [
+ "閿︽睙鍖�",
+ "闈掔緤鍖�",
+ "閲戠墰鍖�",
+ "姝︿警鍖�",
+ "鎴愬崕鍖�",
+ "榫欐硥椹垮尯",
+ "闈掔櫧姹熷尯",
+ "鏂伴兘鍖�",
+ "娓╂睙鍖�",
+ "鍙屾祦鍖�",
+ "閮兘鍖�",
+ "鏂版触鍖�",
+ "閲戝爞鍘�",
+ "澶ч倯鍘�",
+ "钂叉睙鍘�",
+ "閮芥睙鍫板競",
+ "褰窞甯�",
+ "閭涘磧甯�",
+ "宕囧窞甯�",
+ "绠�闃冲競",
+ "澶╁簻鍖�"
+ ]
+ },
+ {
+ "name": "鑷础甯�",
+ "area": [
+ "鑷祦浜曞尯",
+ "璐′簳鍖�",
+ "澶у畨鍖�",
+ "娌挎哗鍖�",
+ "鑽e幙",
+ "瀵岄『鍘�"
+ ]
+ },
+ {
+ "name": "鏀�鏋濊姳甯�",
+ "area": [
+ "涓滃尯",
+ "瑗垮尯",
+ "浠佸拰鍖�",
+ "绫虫槗鍘�",
+ "鐩愯竟鍘�"
+ ]
+ },
+ {
+ "name": "娉稿窞甯�",
+ "area": [
+ "姹熼槼鍖�",
+ "绾虫邯鍖�",
+ "榫欓┈娼尯",
+ "娉稿幙",
+ "鍚堟睙鍘�",
+ "鍙欐案鍘�",
+ "鍙よ敽鍘�"
+ ]
+ },
+ {
+ "name": "寰烽槼甯�",
+ "area": [
+ "鏃岄槼鍖�",
+ "缃楁睙鍖�",
+ "涓睙鍘�",
+ "骞挎眽甯�",
+ "浠�閭″競",
+ "缁电甯�"
+ ]
+ },
+ {
+ "name": "缁甸槼甯�",
+ "area": [
+ "娑煄鍖�",
+ "娓镐粰鍖�",
+ "瀹夊窞鍖�",
+ "涓夊彴鍘�",
+ "鐩愪涵鍘�",
+ "姊撴郊鍘�",
+ "鍖楀窛缇屾棌鑷不鍘�",
+ "骞虫鍘�",
+ "姹熸补甯�"
+ ]
+ },
+ {
+ "name": "骞垮厓甯�",
+ "area": [
+ "鍒╁窞鍖�",
+ "鏄寲鍖�",
+ "鏈濆ぉ鍖�",
+ "鏃鸿媿鍘�",
+ "闈掑窛鍘�",
+ "鍓戦榿鍘�",
+ "鑻嶆邯鍘�"
+ ]
+ },
+ {
+ "name": "閬傚畞甯�",
+ "area": [
+ "鑸瑰北鍖�",
+ "瀹夊眳鍖�",
+ "钃邯鍘�",
+ "澶ц嫳鍘�",
+ "灏勬椽甯�"
+ ]
+ },
+ {
+ "name": "鍐呮睙甯�",
+ "area": [
+ "甯備腑鍖�",
+ "涓滃叴鍖�",
+ "濞佽繙鍘�",
+ "璧勪腑鍘�",
+ "闅嗘槍甯�"
+ ]
+ },
+ {
+ "name": "涔愬北甯�",
+ "area": [
+ "甯備腑鍖�",
+ "娌欐咕鍖�",
+ "浜旈�氭ˉ鍖�",
+ "閲戝彛娌冲尯",
+ "鐘嶄负鍘�",
+ "浜曠爺鍘�",
+ "澶规睙鍘�",
+ "娌愬窛鍘�",
+ "宄ㄨ竟褰濇棌鑷不鍘�",
+ "椹竟褰濇棌鑷不鍘�",
+ "宄ㄧ湁灞卞競"
+ ]
+ },
+ {
+ "name": "鍗楀厖甯�",
+ "area": [
+ "椤哄簡鍖�",
+ "楂樺潽鍖�",
+ "鍢夐櫟鍖�",
+ "鍗楅儴鍘�",
+ "钀ュ北鍘�",
+ "钃畨鍘�",
+ "浠檱鍘�",
+ "瑗垮厖鍘�",
+ "闃嗕腑甯�"
+ ]
+ },
+ {
+ "name": "鐪夊北甯�",
+ "area": [
+ "涓滃潯鍖�",
+ "褰北鍖�",
+ "浠佸鍘�",
+ "娲泤鍘�",
+ "涓规1鍘�",
+ "闈掔鍘�"
+ ]
+ },
+ {
+ "name": "瀹滃甯�",
+ "area": [
+ "缈犲睆鍖�",
+ "鍗楁邯鍖�",
+ "鍙欏窞鍖�",
+ "姹熷畨鍘�",
+ "闀垮畞鍘�",
+ "楂樺幙",
+ "鐝欏幙",
+ "绛犺繛鍘�",
+ "鍏存枃鍘�",
+ "灞忓北鍘�"
+ ]
+ },
+ {
+ "name": "骞垮畨甯�",
+ "area": [
+ "骞垮畨鍖�",
+ "鍓嶉攱鍖�",
+ "宀虫睜鍘�",
+ "姝﹁儨鍘�",
+ "閭绘按鍘�",
+ "鍗庤摜甯�"
+ ]
+ },
+ {
+ "name": "杈惧窞甯�",
+ "area": [
+ "閫氬窛鍖�",
+ "杈惧窛鍖�",
+ "瀹f眽鍘�",
+ "寮�姹熷幙",
+ "澶х鍘�",
+ "娓犲幙",
+ "涓囨簮甯�"
+ ]
+ },
+ {
+ "name": "闆呭畨甯�",
+ "area": [
+ "闆ㄥ煄鍖�",
+ "鍚嶅北鍖�",
+ "鑽ョ粡鍘�",
+ "姹夋簮鍘�",
+ "鐭虫鍘�",
+ "澶╁叏鍘�",
+ "鑺﹀北鍘�",
+ "瀹濆叴鍘�"
+ ]
+ },
+ {
+ "name": "宸翠腑甯�",
+ "area": [
+ "宸村窞鍖�",
+ "鎭╅槼鍖�",
+ "閫氭睙鍘�",
+ "鍗楁睙鍘�",
+ "骞虫槍鍘�"
+ ]
+ },
+ {
+ "name": "璧勯槼甯�",
+ "area": [
+ "闆佹睙鍖�",
+ "瀹夊渤鍘�",
+ "涔愯嚦鍘�"
+ ]
+ },
+ {
+ "name": "闃垮潩钘忔棌缇屾棌鑷不宸�",
+ "area": [
+ "椹皵搴峰競",
+ "姹跺窛鍘�",
+ "鐞嗗幙",
+ "鑼傚幙",
+ "鏉炬綐鍘�",
+ "涔濆娌熷幙",
+ "閲戝窛鍘�",
+ "灏忛噾鍘�",
+ "榛戞按鍘�",
+ "澹ゅ鍘�",
+ "闃垮潩鍘�",
+ "鑻ュ皵鐩栧幙",
+ "绾㈠師鍘�"
+ ]
+ },
+ {
+ "name": "鐢樺瓬钘忔棌鑷不宸�",
+ "area": [
+ "搴峰畾甯�",
+ "娉稿畾鍘�",
+ "涓瑰反鍘�",
+ "涔濋緳鍘�",
+ "闆呮睙鍘�",
+ "閬撳瓪鍘�",
+ "鐐夐湇鍘�",
+ "鐢樺瓬鍘�",
+ "鏂伴緳鍘�",
+ "寰锋牸鍘�",
+ "鐧界帀鍘�",
+ "鐭虫笭鍘�",
+ "鑹茶揪鍘�",
+ "鐞嗗鍘�",
+ "宸村鍘�",
+ "涔″煄鍘�",
+ "绋诲煄鍘�",
+ "寰楄崳鍘�"
+ ]
+ },
+ {
+ "name": "鍑夊北褰濇棌鑷不宸�",
+ "area": [
+ "瑗挎槍甯�",
+ "鏈ㄩ噷钘忔棌鑷不鍘�",
+ "鐩愭簮鍘�",
+ "寰锋槍鍘�",
+ "浼氱悊鍘�",
+ "浼氫笢鍘�",
+ "瀹佸崡鍘�",
+ "鏅牸鍘�",
+ "甯冩嫋鍘�",
+ "閲戦槼鍘�",
+ "鏄鍘�",
+ "鍠滃痉鍘�",
+ "鍐曞畞鍘�",
+ "瓒婅タ鍘�",
+ "鐢樻礇鍘�",
+ "缇庡鍘�",
+ "闆锋尝鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "婀栧寳鐪�",
+ "city": [
+ {
+ "name": "姝︽眽甯�",
+ "area": [
+ "姹熷哺鍖�",
+ "姹熸眽鍖�",
+ "纭氬彛鍖�",
+ "姹夐槼鍖�",
+ "姝︽槍鍖�",
+ "闈掑北鍖�",
+ "娲北鍖�",
+ "涓滆タ婀栧尯",
+ "姹夊崡鍖�",
+ "钄$敻鍖�",
+ "姹熷鍖�",
+ "榛勯檪鍖�",
+ "鏂版床鍖�"
+ ]
+ },
+ {
+ "name": "榛勭煶甯�",
+ "area": [
+ "榛勭煶娓尯",
+ "瑗垮灞卞尯",
+ "涓嬮檰鍖�",
+ "閾佸北鍖�",
+ "闃虫柊鍘�",
+ "澶у喍甯�"
+ ]
+ },
+ {
+ "name": "鍗佸牥甯�",
+ "area": [
+ "鑼呯鍖�",
+ "寮犳咕鍖�",
+ "閮ч槼鍖�",
+ "閮цタ鍘�",
+ "绔瑰北鍘�",
+ "绔规邯鍘�",
+ "鎴垮幙",
+ "涓规睙鍙e競"
+ ]
+ },
+ {
+ "name": "瀹滄槍甯�",
+ "area": [
+ "瑗块櫟鍖�",
+ "浼嶅宀楀尯",
+ "鐐瑰啗鍖�",
+ "鐚囦涵鍖�",
+ "澶烽櫟鍖�",
+ "杩滃畨鍘�",
+ "鍏村北鍘�",
+ "绉綊鍘�",
+ "闀块槼鍦熷鏃忚嚜娌诲幙",
+ "浜斿嘲鍦熷鏃忚嚜娌诲幙",
+ "瀹滈兘甯�",
+ "褰撻槼甯�",
+ "鏋濇睙甯�"
+ ]
+ },
+ {
+ "name": "瑗勯槼甯�",
+ "area": [
+ "瑗勫煄鍖�",
+ "妯婂煄鍖�",
+ "瑗勫窞鍖�",
+ "鍗楁汲鍘�",
+ "璋峰煄鍘�",
+ "淇濆悍鍘�",
+ "鑰佹渤鍙e競",
+ "鏋i槼甯�",
+ "瀹滃煄甯�"
+ ]
+ },
+ {
+ "name": "閯傚窞甯�",
+ "area": [
+ "姊佸瓙婀栧尯",
+ "鍗庡鍖�",
+ "閯傚煄鍖�"
+ ]
+ },
+ {
+ "name": "鑽嗛棬甯�",
+ "area": [
+ "涓滃疂鍖�",
+ "鎺囧垁鍖�",
+ "娌欐磱鍘�",
+ "閽熺ゥ甯�",
+ "浜北甯�"
+ ]
+ },
+ {
+ "name": "瀛濇劅甯�",
+ "area": [
+ "瀛濆崡鍖�",
+ "瀛濇槍鍘�",
+ "澶ф偀鍘�",
+ "浜戞ⅵ鍘�",
+ "搴斿煄甯�",
+ "瀹夐檰甯�",
+ "姹夊窛甯�"
+ ]
+ },
+ {
+ "name": "鑽嗗窞甯�",
+ "area": [
+ "娌欏競鍖�",
+ "鑽嗗窞鍖�",
+ "鍏畨鍘�",
+ "鐩戝埄鍘�",
+ "姹熼櫟鍘�",
+ "鐭抽甯�",
+ "娲箹甯�",
+ "鏉炬粙甯�"
+ ]
+ },
+ {
+ "name": "榛勫唸甯�",
+ "area": [
+ "榛勫窞鍖�",
+ "鍥㈤鍘�",
+ "绾㈠畨鍘�",
+ "缃楃敯鍘�",
+ "鑻卞北鍘�",
+ "娴犳按鍘�",
+ "钑叉槬鍘�",
+ "榛勬鍘�",
+ "楹诲煄甯�",
+ "姝︾┐甯�"
+ ]
+ },
+ {
+ "name": "鍜稿畞甯�",
+ "area": [
+ "鍜稿畨鍖�",
+ "鍢夐奔鍘�",
+ "閫氬煄鍘�",
+ "宕囬槼鍘�",
+ "閫氬北鍘�",
+ "璧ゅ甯�"
+ ]
+ },
+ {
+ "name": "闅忓窞甯�",
+ "area": [
+ "鏇鹃兘鍖�",
+ "闅忓幙",
+ "骞挎按甯�"
+ ]
+ },
+ {
+ "name": "鎭╂柦鍦熷鏃忚嫍鏃忚嚜娌诲窞",
+ "area": [
+ "鎭╂柦甯�",
+ "鍒╁窛甯�",
+ "寤哄鍘�",
+ "宸翠笢鍘�",
+ "瀹f仼鍘�",
+ "鍜镐赴鍘�",
+ "鏉ュ嚖鍘�",
+ "楣ゅ嘲鍘�"
+ ]
+ },
+ {
+ "name": "浠欐甯�",
+ "area": [
+ "骞叉渤琛楅亾",
+ "榫欏崕灞辫閬�",
+ "娌欏槾琛楅亾",
+ "閮戝満闀�",
+ "姣涘槾闀�",
+ "鍓呮渤闀�",
+ "涓変紡娼晣",
+ "鑳″満闀�",
+ "闀垮煫鍙i晣",
+ "瑗挎祦娌抽晣",
+ "褰満闀�",
+ "娌欐箹闀�",
+ "鏉ㄦ灄灏鹃晣",
+ "寮犳矡闀�",
+ "閮渤闀�",
+ "娌斿煄鍥炴棌闀�",
+ "閫氭捣鍙i晣",
+ "闄堝満闀�",
+ "浠欐缁忔祹寮�鍙戝尯",
+ "浠欐宸ヤ笟鍥�",
+ "娌欐箹鍘熺鍦�",
+ "涔濆悎鍨稿師绉嶅満",
+ "鎺掓箹椋庢櫙鍖�"
+ ]
+ },
+ {
+ "name": "娼滄睙甯�",
+ "area": [
+ "鍥灄鍔炰簨澶�",
+ "骞垮崕鍔炰簨澶�",
+ "鏉ㄥ競鍔炰簨澶�",
+ "鍛ㄧ煻鍔炰簨澶�",
+ "娉颁赴鍔炰簨澶�",
+ "楂樺満鍔炰簨澶�",
+ "鐔婂彛闀�",
+ "楂樼煶纰戦晣",
+ "鑰佹柊闀�",
+ "鐜嬪満闀�",
+ "娓旀磱闀�",
+ "榫欐咕闀�",
+ "娴╁彛闀�",
+ "绉帀鍙i晣",
+ "寮犻噾闀�",
+ "鐧介弓婀栫鐞嗗尯",
+ "鎬诲彛绠$悊鍖�",
+ "鐔婂彛鍐滃満绠$悊鍖�",
+ "杩愮伯婀栫鐞嗗尯",
+ "鍚庢箹绠$悊鍖�",
+ "鍛ㄧ煻绠$悊鍖�",
+ "绔规牴婊╅晣"
+ ]
+ },
+ {
+ "name": "澶╅棬甯�",
+ "area": [
+ "绔熼櫟琛楅亾",
+ "鍊欏彛琛楅亾",
+ "鏉ㄦ灄琛楅亾",
+ "澶氬疂闀�",
+ "鎷栧競闀�",
+ "寮犳腐闀�",
+ "钂嬪満闀�",
+ "姹満闀�",
+ "娓旇柂闀�",
+ "榛勬江闀�",
+ "宀冲彛闀�",
+ "妯灄闀�",
+ "褰競闀�",
+ "楹绘磱闀�",
+ "澶氱ゥ闀�",
+ "骞查┛闀�",
+ "椹咕闀�",
+ "鍗㈠競闀�",
+ "灏忔澘闀�",
+ "涔濈湡闀�",
+ "鐨傚競闀�",
+ "鑳″競闀�",
+ "鐭冲娌抽晣",
+ "浣涘瓙灞遍晣",
+ "鍑�娼埂"
+ ]
+ },
+ {
+ "name": "绁炲啘鏋舵灄鍖�",
+ "area": [
+ "鏉炬煆闀�",
+ "闃虫棩闀�",
+ "鏈ㄩ奔闀�",
+ "绾㈠潽闀�",
+ "鏂板崕闀�",
+ "澶т節婀栭晣",
+ "瀹嬫礇涔�",
+ "涓嬭胺鍧湡瀹舵棌涔�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "婀栧崡鐪�",
+ "city": [
+ {
+ "name": "闀挎矙甯�",
+ "area": [
+ "鑺欒搲鍖�",
+ "澶╁績鍖�",
+ "宀抽簱鍖�",
+ "寮�绂忓尯",
+ "闆ㄨ姳鍖�",
+ "鏈涘煄鍖�",
+ "闀挎矙鍘�",
+ "娴忛槼甯�",
+ "瀹佷埂甯�"
+ ]
+ },
+ {
+ "name": "鏍床甯�",
+ "area": [
+ "鑽峰鍖�",
+ "鑺︽窞鍖�",
+ "鐭冲嘲鍖�",
+ "澶╁厓鍖�",
+ "娓屽彛鍖�",
+ "鏀稿幙",
+ "鑼堕櫟鍘�",
+ "鐐庨櫟鍘�",
+ "閱撮櫟甯�",
+ "浜戦緳绀鸿寖鍖�"
+ ]
+ },
+ {
+ "name": "婀樻江甯�",
+ "area": [
+ "闆ㄦ箹鍖�",
+ "宀冲鍖�",
+ "婀樻江鍘�",
+ "婀樹埂甯�",
+ "闊跺北甯�"
+ ]
+ },
+ {
+ "name": "琛¢槼甯�",
+ "area": [
+ "鐝犳櫀鍖�",
+ "闆佸嘲鍖�",
+ "鐭抽紦鍖�",
+ "钂告箻鍖�",
+ "鍗楀渤鍖�",
+ "琛¢槼鍘�",
+ "琛″崡鍘�",
+ "琛″北鍘�",
+ "琛′笢鍘�",
+ "绁佷笢鍘�",
+ "鑰掗槼甯�",
+ "甯稿畞甯�"
+ ]
+ },
+ {
+ "name": "閭甸槼甯�",
+ "area": [
+ "鍙屾竻鍖�",
+ "澶хゥ鍖�",
+ "鍖楀鍖�",
+ "鏂伴偟鍘�",
+ "閭甸槼鍘�",
+ "闅嗗洖鍘�",
+ "娲炲彛鍘�",
+ "缁ュ畞鍘�",
+ "鏂板畞鍘�",
+ "鍩庢鑻楁棌鑷不鍘�",
+ "姝﹀唸甯�",
+ "閭典笢甯�"
+ ]
+ },
+ {
+ "name": "宀抽槼甯�",
+ "area": [
+ "宀抽槼妤煎尯",
+ "浜戞邯鍖�",
+ "鍚涘北鍖�",
+ "宀抽槼鍘�",
+ "鍗庡鍘�",
+ "婀橀槾鍘�",
+ "骞虫睙鍘�",
+ "姹ㄧ綏甯�",
+ "涓存箻甯�"
+ ]
+ },
+ {
+ "name": "甯稿痉甯�",
+ "area": [
+ "姝﹂櫟鍖�",
+ "榧庡煄鍖�",
+ "瀹変埂鍘�",
+ "姹夊鍘�",
+ "婢у幙",
+ "涓存晶鍘�",
+ "妗冩簮鍘�",
+ "鐭抽棬鍘�",
+ "娲ュ競甯�"
+ ]
+ },
+ {
+ "name": "寮犲鐣屽競",
+ "area": [
+ "姘稿畾鍖�",
+ "姝﹂櫟婧愬尯",
+ "鎱堝埄鍘�",
+ "妗戞鍘�"
+ ]
+ },
+ {
+ "name": "鐩婇槼甯�",
+ "area": [
+ "璧勯槼鍖�",
+ "璧北鍖�",
+ "鍗楀幙",
+ "妗冩睙鍘�",
+ "瀹夊寲鍘�",
+ "娌呮睙甯�"
+ ]
+ },
+ {
+ "name": "閮村窞甯�",
+ "area": [
+ "鍖楁箹鍖�",
+ "鑻忎粰鍖�",
+ "妗傞槼鍘�",
+ "瀹滅珷鍘�",
+ "姘稿叴鍘�",
+ "鍢夌鍘�",
+ "涓存鍘�",
+ "姹濆煄鍘�",
+ "妗備笢鍘�",
+ "瀹変粊鍘�",
+ "璧勫叴甯�"
+ ]
+ },
+ {
+ "name": "姘稿窞甯�",
+ "area": [
+ "闆堕櫟鍖�",
+ "鍐锋按婊╁尯",
+ "绁侀槼鍘�",
+ "涓滃畨鍘�",
+ "鍙岀墝鍘�",
+ "閬撳幙",
+ "姹熸案鍘�",
+ "瀹佽繙鍘�",
+ "钃濆北鍘�",
+ "鏂扮敯鍘�",
+ "姹熷崕鐟舵棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "鎬�鍖栧競",
+ "area": [
+ "楣ゅ煄鍖�",
+ "涓柟鍘�",
+ "娌呴櫟鍘�",
+ "杈版邯鍘�",
+ "婧嗘郸鍘�",
+ "浼氬悓鍘�",
+ "楹婚槼鑻楁棌鑷不鍘�",
+ "鏂版檭渚楁棌鑷不鍘�",
+ "鑺锋睙渚楁棌鑷不鍘�",
+ "闈栧窞鑻楁棌渚楁棌鑷不鍘�",
+ "閫氶亾渚楁棌鑷不鍘�",
+ "娲睙甯�"
+ ]
+ },
+ {
+ "name": "濞勫簳甯�",
+ "area": [
+ "濞勬槦鍖�",
+ "鍙屽嘲鍘�",
+ "鏂板寲鍘�",
+ "鍐锋按姹熷競",
+ "娑熸簮甯�"
+ ]
+ },
+ {
+ "name": "婀樿タ鍦熷鏃忚嫍鏃忚嚜娌诲窞",
+ "area": [
+ "鍚夐甯�",
+ "娉告邯鍘�",
+ "鍑ゅ嚢鍘�",
+ "鑺卞灒鍘�",
+ "淇濋潠鍘�",
+ "鍙や笀鍘�",
+ "姘搁『鍘�",
+ "榫欏北鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "娌冲寳鐪�",
+ "city": [
+ {
+ "name": "鐭冲搴勫競",
+ "area": [
+ "闀垮畨鍖�",
+ "妗ヨタ鍖�",
+ "鏂板崕鍖�",
+ "浜曢檳鐭垮尯",
+ "瑁曞崕鍖�",
+ "钘佸煄鍖�",
+ "楣挎硥鍖�",
+ "鏍惧煄鍖�",
+ "浜曢檳鍘�",
+ "姝e畾鍘�",
+ "琛屽攼鍘�",
+ "鐏靛鍘�",
+ "楂橀倯鍘�",
+ "娣辨辰鍘�",
+ "璧炵殗鍘�",
+ "鏃犳瀬鍘�",
+ "骞冲北鍘�",
+ "鍏冩皬鍘�",
+ "璧靛幙",
+ "杈涢泦甯�",
+ "鏅嬪窞甯�",
+ "鏂颁箰甯�"
+ ]
+ },
+ {
+ "name": "鍞愬北甯�",
+ "area": [
+ "璺崡鍖�",
+ "璺寳鍖�",
+ "鍙ゅ喍鍖�",
+ "寮�骞冲尯",
+ "涓板崡鍖�",
+ "涓版鼎鍖�",
+ "鏇瑰鐢稿尯",
+ "婊﹀窞甯�",
+ "婊﹀崡鍘�",
+ "涔愪涵鍘�",
+ "杩佽タ鍘�",
+ "鐜夌敯鍘�",
+ "閬靛寲甯�",
+ "杩佸畨甯�"
+ ]
+ },
+ {
+ "name": "绉︾殗宀涘競",
+ "area": [
+ "娴锋腐鍖�",
+ "灞辨捣鍏冲尯",
+ "鍖楁埓娌冲尯",
+ "鎶氬畞鍖�",
+ "闈掗緳婊℃棌鑷不鍘�",
+ "鏄岄粠鍘�",
+ "鍗㈤緳鍘�"
+ ]
+ },
+ {
+ "name": "閭兏甯�",
+ "area": [
+ "閭北鍖�",
+ "涓涘彴鍖�",
+ "澶嶅叴鍖�",
+ "宄板嘲鐭垮尯",
+ "鑲ヤ埂鍖�",
+ "姘稿勾鍖�",
+ "涓存汲鍘�",
+ "鎴愬畨鍘�",
+ "澶у悕鍘�",
+ "娑夊幙",
+ "纾佸幙",
+ "閭卞幙",
+ "楦℃辰鍘�",
+ "骞垮钩鍘�",
+ "棣嗛櫠鍘�",
+ "榄忓幙",
+ "鏇插懆鍘�",
+ "姝﹀畨甯�"
+ ]
+ },
+ {
+ "name": "閭㈠彴甯�",
+ "area": [
+ "瑗勯兘鍖�",
+ "淇¢兘鍖�",
+ "浠绘辰鍖�",
+ "鍗楀拰鍖�",
+ "涓村煄鍘�",
+ "鍐呬笜鍘�",
+ "鏌忎埂鍘�",
+ "闅嗗哀鍘�",
+ "瀹佹檵鍘�",
+ "宸ㄩ箍鍘�",
+ "鏂版渤鍘�",
+ "骞垮畻鍘�",
+ "骞充埂鍘�",
+ "濞佸幙",
+ "娓呮渤鍘�",
+ "涓磋タ鍘�",
+ "鍗楀甯�",
+ "娌欐渤甯�"
+ ]
+ },
+ {
+ "name": "淇濆畾甯�",
+ "area": [
+ "绔炵鍖�",
+ "鑾叉睜鍖�",
+ "婊″煄鍖�",
+ "娓呰嫅鍖�",
+ "寰愭按鍖�",
+ "娑炴按鍘�",
+ "闃滃钩鍘�",
+ "瀹氬叴鍘�",
+ "鍞愬幙",
+ "楂橀槼鍘�",
+ "瀹瑰煄鍘�",
+ "娑炴簮鍘�",
+ "鏈涢兘鍘�",
+ "瀹夋柊鍘�",
+ "鏄撳幙",
+ "鏇查槼鍘�",
+ "锠″幙",
+ "椤哄钩鍘�",
+ "鍗氶噹鍘�",
+ "闆勫幙",
+ "娑垮窞甯�",
+ "瀹氬窞甯�",
+ "瀹夊浗甯�",
+ "楂樼搴楀競"
+ ]
+ },
+ {
+ "name": "寮犲鍙e競",
+ "area": [
+ "妗ヤ笢鍖�",
+ "妗ヨタ鍖�",
+ "瀹e寲鍖�",
+ "涓嬭姳鍥尯",
+ "涓囧叏鍖�",
+ "宕囩ぜ鍖�",
+ "寮犲寳鍘�",
+ "搴蜂繚鍘�",
+ "娌芥簮鍘�",
+ "灏氫箟鍘�",
+ "钄氬幙",
+ "闃冲師鍘�",
+ "鎬�瀹夊幙",
+ "鎬�鏉ュ幙",
+ "娑块箍鍘�",
+ "璧ゅ煄鍘�"
+ ]
+ },
+ {
+ "name": "鎵垮痉甯�",
+ "area": [
+ "鍙屾ˉ鍖�",
+ "鍙屾沪鍖�",
+ "楣版墜钀ュ瓙鐭垮尯",
+ "鎵垮痉鍘�",
+ "鍏撮殕鍘�",
+ "婊﹀钩鍘�",
+ "闅嗗寲鍘�",
+ "涓板畞婊℃棌鑷不鍘�",
+ "瀹藉煄婊℃棌鑷不鍘�",
+ "鍥村満婊℃棌钂欏彜鏃忚嚜娌诲幙",
+ "骞虫硥甯�"
+ ]
+ },
+ {
+ "name": "娌у窞甯�",
+ "area": [
+ "鏂板崕鍖�",
+ "杩愭渤鍖�",
+ "娌у幙",
+ "闈掑幙",
+ "涓滃厜鍘�",
+ "娴峰叴鍘�",
+ "鐩愬北鍘�",
+ "鑲冨畞鍘�",
+ "鍗楃毊鍘�",
+ "鍚存ˉ鍘�",
+ "鐚幙",
+ "瀛熸潙鍥炴棌鑷不鍘�",
+ "娉婂ご甯�",
+ "浠讳笜甯�",
+ "榛勯獏甯�",
+ "娌抽棿甯�"
+ ]
+ },
+ {
+ "name": "寤婂潑甯�",
+ "area": [
+ "瀹夋鍖�",
+ "骞块槼鍖�",
+ "鍥哄畨鍘�",
+ "姘告竻鍘�",
+ "棣欐渤鍘�",
+ "澶у煄鍘�",
+ "鏂囧畨鍘�",
+ "澶у巶鍥炴棌鑷不鍘�",
+ "闇稿窞甯�",
+ "涓夋渤甯�"
+ ]
+ },
+ {
+ "name": "琛℃按甯�",
+ "area": [
+ "妗冨煄鍖�",
+ "鍐�宸炲尯",
+ "鏋e己鍘�",
+ "姝﹂倯鍘�",
+ "姝﹀己鍘�",
+ "楗堕槼鍘�",
+ "瀹夊钩鍘�",
+ "鏁呭煄鍘�",
+ "鏅幙",
+ "闃滃煄鍘�",
+ "娣卞窞甯�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "绂忓缓鐪�",
+ "city": [
+ {
+ "name": "绂忓窞甯�",
+ "area": [
+ "榧撴ゼ鍖�",
+ "鍙版睙鍖�",
+ "浠撳北鍖�",
+ "椹熬鍖�",
+ "鏅嬪畨鍖�",
+ "闀夸箰鍖�",
+ "闂戒警鍘�",
+ "杩炴睙鍘�",
+ "缃楁簮鍘�",
+ "闂芥竻鍘�",
+ "姘告嘲鍘�",
+ "骞虫江鍘�",
+ "绂忔竻甯�",
+ "楂樻柊鎶�鏈骇涓氬紑鍙戝尯"
+ ]
+ },
+ {
+ "name": "鍘﹂棬甯�",
+ "area": [
+ "鎬濇槑鍖�",
+ "娴锋钵鍖�",
+ "婀栭噷鍖�",
+ "闆嗙編鍖�",
+ "鍚屽畨鍖�",
+ "缈斿畨鍖�"
+ ]
+ },
+ {
+ "name": "鑾嗙敯甯�",
+ "area": [
+ "鍩庡帰鍖�",
+ "娑垫睙鍖�",
+ "鑽斿煄鍖�",
+ "绉�灞垮尯",
+ "浠欐父鍘�"
+ ]
+ },
+ {
+ "name": "涓夋槑甯�",
+ "area": [
+ "姊呭垪鍖�",
+ "涓夊厓鍖�",
+ "鏄庢邯鍘�",
+ "娓呮祦鍘�",
+ "瀹佸寲鍘�",
+ "澶х敯鍘�",
+ "灏ゆ邯鍘�",
+ "娌欏幙",
+ "灏嗕箰鍘�",
+ "娉板畞鍘�",
+ "寤哄畞鍘�",
+ "姘稿畨甯�"
+ ]
+ },
+ {
+ "name": "娉夊窞甯�",
+ "area": [
+ "椴ゅ煄鍖�",
+ "涓版辰鍖�",
+ "娲涙睙鍖�",
+ "娉夋腐鍖�",
+ "鎯犲畨鍘�",
+ "瀹夋邯鍘�",
+ "姘告槬鍘�",
+ "寰峰寲鍘�",
+ "閲戦棬鍘�",
+ "鐭崇嫯甯�",
+ "鏅嬫睙甯�",
+ "鍗楀畨甯�"
+ ]
+ },
+ {
+ "name": "婕冲窞甯�",
+ "area": [
+ "鑺楀煄鍖�",
+ "榫欐枃鍖�",
+ "浜戦渼鍘�",
+ "婕虫郸鍘�",
+ "璇忓畨鍘�",
+ "闀挎嘲鍘�",
+ "涓滃北鍘�",
+ "鍗楅潠鍘�",
+ "骞冲拰鍘�",
+ "鍗庡畨鍘�",
+ "榫欐捣甯�"
+ ]
+ },
+ {
+ "name": "鍗楀钩甯�",
+ "area": [
+ "寤跺钩鍖�",
+ "寤洪槼鍖�",
+ "椤烘槍鍘�",
+ "娴﹀煄鍘�",
+ "鍏夋辰鍘�",
+ "鏉炬邯鍘�",
+ "鏀垮拰鍘�",
+ "閭垫甯�",
+ "姝﹀し灞卞競",
+ "寤虹摨甯�"
+ ]
+ },
+ {
+ "name": "榫欏博甯�",
+ "area": [
+ "鏂扮綏鍖�",
+ "姘稿畾鍖�",
+ "闀挎眬鍘�",
+ "涓婃澀鍘�",
+ "姝﹀钩鍘�",
+ "杩炲煄鍘�",
+ "婕冲钩甯�"
+ ]
+ },
+ {
+ "name": "瀹佸痉甯�",
+ "area": [
+ "钑夊煄鍖�",
+ "闇炴郸鍘�",
+ "鍙ょ敯鍘�",
+ "灞忓崡鍘�",
+ "瀵垮畞鍘�",
+ "鍛ㄥ畞鍘�",
+ "鏌樿崳鍘�",
+ "绂忓畨甯�",
+ "绂忛紟甯�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "瀹夊窘鐪�",
+ "city": [
+ {
+ "name": "鍚堣偉甯�",
+ "area": [
+ "鐟舵捣鍖�",
+ "搴愰槼鍖�",
+ "铚�灞卞尯",
+ "鍖呮渤鍖�",
+ "闀夸赴鍘�",
+ "鑲ヤ笢鍘�",
+ "鑲ヨタ鍘�",
+ "搴愭睙鍘�",
+ "宸㈡箹甯�"
+ ]
+ },
+ {
+ "name": "鑺滄箹甯�",
+ "area": [
+ "闀滄箹鍖�",
+ "寮嬫睙鍖�",
+ "楦犳睙鍖�",
+ "涓夊北鍖�",
+ "鑺滄箹鍘�",
+ "绻佹槍鍘�",
+ "鍗楅櫟鍘�",
+ "鏃犱负甯�"
+ ]
+ },
+ {
+ "name": "铓屽煚甯�",
+ "area": [
+ "榫欏瓙婀栧尯",
+ "铓屽北鍖�",
+ "绂逛細鍖�",
+ "娣笂鍖�",
+ "鎬�杩滃幙",
+ "浜旀渤鍘�",
+ "鍥洪晣鍘�"
+ ]
+ },
+ {
+ "name": "娣崡甯�",
+ "area": [
+ "澶ч�氬尯",
+ "鐢板搴靛尯",
+ "璋㈠闆嗗尯",
+ "鍏叕灞卞尯",
+ "娼橀泦鍖�",
+ "鍑ゅ彴鍘�",
+ "瀵垮幙"
+ ]
+ },
+ {
+ "name": "椹瀺灞卞競",
+ "area": [
+ "鑺卞北鍖�",
+ "闆ㄥ北鍖�",
+ "鍗氭湜鍖�",
+ "褰撴秱鍘�",
+ "鍚北鍘�",
+ "鍜屽幙"
+ ]
+ },
+ {
+ "name": "娣寳甯�",
+ "area": [
+ "鏉滈泦鍖�",
+ "鐩稿北鍖�",
+ "鐑堝北鍖�",
+ "婵夋邯鍘�"
+ ]
+ },
+ {
+ "name": "閾滈櫟甯�",
+ "area": [
+ "閾滃畼鍖�",
+ "涔夊畨鍖�",
+ "閮婂尯",
+ "鏋為槼鍘�"
+ ]
+ },
+ {
+ "name": "瀹夊簡甯�",
+ "area": [
+ "杩庢睙鍖�",
+ "澶ц鍖�",
+ "瀹滅鍖�",
+ "鎬�瀹佸幙",
+ "澶箹鍘�",
+ "瀹挎澗鍘�",
+ "鏈涙睙鍘�",
+ "宀宠タ鍘�",
+ "妗愬煄甯�",
+ "娼滃北甯�"
+ ]
+ },
+ {
+ "name": "榛勫北甯�",
+ "area": [
+ "灞邯鍖�",
+ "榛勫北鍖�",
+ "寰藉窞鍖�",
+ "姝欏幙",
+ "浼戝畞鍘�",
+ "榛熷幙",
+ "绁侀棬鍘�"
+ ]
+ },
+ {
+ "name": "婊佸窞甯�",
+ "area": [
+ "鐞呯悐鍖�",
+ "鍗楄隘鍖�",
+ "鏉ュ畨鍘�",
+ "鍏ㄦ鍘�",
+ "瀹氳繙鍘�",
+ "鍑ら槼鍘�",
+ "澶╅暱甯�",
+ "鏄庡厜甯�"
+ ]
+ },
+ {
+ "name": "闃滈槼甯�",
+ "area": [
+ "棰嶅窞鍖�",
+ "棰嶄笢鍖�",
+ "棰嶆硥鍖�",
+ "涓存硥鍘�",
+ "澶拰鍘�",
+ "闃滃崡鍘�",
+ "棰嶄笂鍘�",
+ "鐣岄甯�"
+ ]
+ },
+ {
+ "name": "瀹垮窞甯�",
+ "area": [
+ "鍩囨ˉ鍖�",
+ "鐮�灞卞幙",
+ "钀у幙",
+ "鐏电挧鍘�",
+ "娉楀幙"
+ ]
+ },
+ {
+ "name": "鍏畨甯�",
+ "area": [
+ "閲戝畨鍖�",
+ "瑁曞畨鍖�",
+ "鍙堕泦鍖�",
+ "闇嶉偙鍘�",
+ "鑸掑煄鍘�",
+ "閲戝鍘�",
+ "闇嶅北鍘�"
+ ]
+ },
+ {
+ "name": "浜冲窞甯�",
+ "area": [
+ "璋煄鍖�",
+ "娑¢槼鍘�",
+ "钂欏煄鍘�",
+ "鍒╄緵鍘�"
+ ]
+ },
+ {
+ "name": "姹犲窞甯�",
+ "area": [
+ "璐垫睜鍖�",
+ "涓滆嚦鍘�",
+ "鐭冲彴鍘�",
+ "闈掗槼鍘�"
+ ]
+ },
+ {
+ "name": "瀹e煄甯�",
+ "area": [
+ "瀹e窞鍖�",
+ "閮庢邯鍘�",
+ "娉惧幙",
+ "缁╂邯鍘�",
+ "鏃屽痉鍘�",
+ "瀹佸浗甯�",
+ "骞垮痉甯�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "杈藉畞鐪�",
+ "city": [
+ {
+ "name": "娌堥槼甯�",
+ "area": [
+ "鍜屽钩鍖�",
+ "娌堟渤鍖�",
+ "澶т笢鍖�",
+ "鐨囧鍖�",
+ "閾佽タ鍖�",
+ "鑻忓灞尯",
+ "娴戝崡鍖�",
+ "娌堝寳鍖�",
+ "浜庢椽鍖�",
+ "杈戒腑鍖�",
+ "搴峰钩鍘�",
+ "娉曞簱鍘�",
+ "鏂版皯甯�"
+ ]
+ },
+ {
+ "name": "澶ц繛甯�",
+ "area": [
+ "涓北鍖�",
+ "瑗垮矖鍖�",
+ "娌欐渤鍙e尯",
+ "鐢樹簳瀛愬尯",
+ "鏃呴『鍙e尯",
+ "閲戝窞鍖�",
+ "鏅叞搴楀尯",
+ "闀挎捣鍘�",
+ "鐡︽埧搴楀競",
+ "搴勬渤甯�"
+ ]
+ },
+ {
+ "name": "闉嶅北甯�",
+ "area": [
+ "閾佷笢鍖�",
+ "閾佽タ鍖�",
+ "绔嬪北鍖�",
+ "鍗冨北鍖�",
+ "鍙板畨鍘�",
+ "宀博婊℃棌鑷不鍘�",
+ "娴峰煄甯�"
+ ]
+ },
+ {
+ "name": "鎶氶『甯�",
+ "area": [
+ "鏂版姎鍖�",
+ "涓滄床鍖�",
+ "鏈涜姳鍖�",
+ "椤哄煄鍖�",
+ "鎶氶『鍘�",
+ "鏂板婊℃棌鑷不鍘�",
+ "娓呭師婊℃棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "鏈邯甯�",
+ "area": [
+ "骞冲北鍖�",
+ "婧箹鍖�",
+ "鏄庡北鍖�",
+ "鍗楄姮鍖�",
+ "鏈邯婊℃棌鑷不鍘�",
+ "妗撲粊婊℃棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "涓逛笢甯�",
+ "area": [
+ "鍏冨疂鍖�",
+ "鎸叴鍖�",
+ "鎸畨鍖�",
+ "瀹界敻婊℃棌鑷不鍘�",
+ "涓滄腐甯�",
+ "鍑ゅ煄甯�"
+ ]
+ },
+ {
+ "name": "閿﹀窞甯�",
+ "area": [
+ "鍙ゅ鍖�",
+ "鍑屾渤鍖�",
+ "澶拰鍖�",
+ "榛戝北鍘�",
+ "涔夊幙",
+ "鍑屾捣甯�",
+ "鍖楅晣甯�"
+ ]
+ },
+ {
+ "name": "钀ュ彛甯�",
+ "area": [
+ "绔欏墠鍖�",
+ "瑗垮競鍖�",
+ "椴呴奔鍦堝尯",
+ "鑰佽竟鍖�",
+ "鐩栧窞甯�",
+ "澶х煶妗ュ競"
+ ]
+ },
+ {
+ "name": "闃滄柊甯�",
+ "area": [
+ "娴峰窞鍖�",
+ "鏂伴偙鍖�",
+ "澶钩鍖�",
+ "娓呮渤闂ㄥ尯",
+ "缁嗘渤鍖�",
+ "闃滄柊钂欏彜鏃忚嚜娌诲幙",
+ "褰版鍘�"
+ ]
+ },
+ {
+ "name": "杈介槼甯�",
+ "area": [
+ "鐧藉鍖�",
+ "鏂囧湥鍖�",
+ "瀹忎紵鍖�",
+ "寮撻暱宀尯",
+ "澶瓙娌冲尯",
+ "杈介槼鍘�",
+ "鐏甯�"
+ ]
+ },
+ {
+ "name": "鐩橀敠甯�",
+ "area": [
+ "鍙屽彴瀛愬尯",
+ "鍏撮殕鍙板尯",
+ "澶ф醇鍖�",
+ "鐩樺北鍘�"
+ ]
+ },
+ {
+ "name": "閾佸箔甯�",
+ "area": [
+ "閾跺窞鍖�",
+ "娓呮渤鍖�",
+ "閾佸箔鍘�",
+ "瑗夸赴鍘�",
+ "鏄屽浘鍘�",
+ "璋冨叺灞卞競",
+ "寮�鍘熷競"
+ ]
+ },
+ {
+ "name": "鏈濋槼甯�",
+ "area": [
+ "鍙屽鍖�",
+ "榫欏煄鍖�",
+ "鏈濋槼鍘�",
+ "寤哄钩鍘�",
+ "鍠�鍠囨瞾宸︾考钂欏彜鏃忚嚜娌诲幙",
+ "鍖楃エ甯�",
+ "鍑屾簮甯�"
+ ]
+ },
+ {
+ "name": "钁姦宀涘競",
+ "area": [
+ "杩炲北鍖�",
+ "榫欐腐鍖�",
+ "鍗楃エ鍖�",
+ "缁ヤ腑鍘�",
+ "寤烘槍鍘�",
+ "鍏村煄甯�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "闄曡タ鐪�",
+ "city": [
+ {
+ "name": "瑗垮畨甯�",
+ "area": [
+ "鏂板煄鍖�",
+ "纰戞灄鍖�",
+ "鑾叉箹鍖�",
+ "鐏炴ˉ鍖�",
+ "鏈ぎ鍖�",
+ "闆佸鍖�",
+ "闃庤壇鍖�",
+ "涓存郊鍖�",
+ "闀垮畨鍖�",
+ "楂橀櫟鍖�",
+ "閯犻倯鍖�",
+ "钃濈敯鍘�",
+ "鍛ㄨ嚦鍘�",
+ "瑗垮捀鍖�"
+ ]
+ },
+ {
+ "name": "閾滃窛甯�",
+ "area": [
+ "鐜嬬泭鍖�",
+ "鍗板彴鍖�",
+ "鑰�宸炲尯",
+ "瀹滃悰鍘�"
+ ]
+ },
+ {
+ "name": "瀹濋浮甯�",
+ "area": [
+ "娓花鍖�",
+ "閲戝彴鍖�",
+ "闄堜粨鍖�",
+ "鍑ょ繑鍘�",
+ "宀愬北鍘�",
+ "鎵堕鍘�",
+ "鐪夊幙",
+ "闄囧幙",
+ "鍗冮槼鍘�",
+ "楹熸父鍘�",
+ "鍑ゅ幙",
+ "澶櫧鍘�"
+ ]
+ },
+ {
+ "name": "鍜搁槼甯�",
+ "area": [
+ "绉﹂兘鍖�",
+ "鏉ㄩ櫟鍖�",
+ "娓煄鍖�",
+ "涓夊師鍘�",
+ "娉鹃槼鍘�",
+ "涔惧幙",
+ "绀兼硥鍘�",
+ "姘稿鍘�",
+ "闀挎鍘�",
+ "鏃倯鍘�",
+ "娣冲寲鍘�",
+ "姝﹀姛鍘�",
+ "鍏村钩甯�",
+ "褰窞甯�"
+ ]
+ },
+ {
+ "name": "娓崡甯�",
+ "area": [
+ "涓存腑鍖�",
+ "鍗庡窞鍖�",
+ "娼煎叧鍘�",
+ "澶ц崝鍘�",
+ "鍚堥槼鍘�",
+ "婢勫煄鍘�",
+ "钂插煄鍘�",
+ "鐧芥按鍘�",
+ "瀵屽钩鍘�",
+ "闊╁煄甯�",
+ "鍗庨槾甯�"
+ ]
+ },
+ {
+ "name": "寤跺畨甯�",
+ "area": [
+ "瀹濆鍖�",
+ "瀹夊鍖�",
+ "寤堕暱鍘�",
+ "寤跺窛鍘�",
+ "蹇椾腹鍘�",
+ "鍚磋捣鍘�",
+ "鐢樻硥鍘�",
+ "瀵屽幙",
+ "娲涘窛鍘�",
+ "瀹滃窛鍘�",
+ "榛勯緳鍘�",
+ "榛勯櫟鍘�",
+ "瀛愰暱甯�"
+ ]
+ },
+ {
+ "name": "姹変腑甯�",
+ "area": [
+ "姹夊彴鍖�",
+ "鍗楅儜鍖�",
+ "鍩庡浐鍘�",
+ "娲嬪幙",
+ "瑗夸埂鍘�",
+ "鍕夊幙",
+ "瀹佸己鍘�",
+ "鐣ラ槼鍘�",
+ "闀囧反鍘�",
+ "鐣欏潩鍘�",
+ "浣涘潽鍘�"
+ ]
+ },
+ {
+ "name": "姒嗘灄甯�",
+ "area": [
+ "姒嗛槼鍖�",
+ "妯北鍖�",
+ "搴滆胺鍘�",
+ "闈栬竟鍘�",
+ "瀹氳竟鍘�",
+ "缁ュ痉鍘�",
+ "绫宠剛鍘�",
+ "浣冲幙",
+ "鍚村牎鍘�",
+ "娓呮锭鍘�",
+ "瀛愭床鍘�",
+ "绁炴湪甯�"
+ ]
+ },
+ {
+ "name": "瀹夊悍甯�",
+ "area": [
+ "姹夋花鍖�",
+ "姹夐槾鍘�",
+ "鐭虫硥鍘�",
+ "瀹侀檿鍘�",
+ "绱槼鍘�",
+ "宀氱殝鍘�",
+ "骞冲埄鍘�",
+ "闀囧潽鍘�",
+ "鏃槼鍘�",
+ "鐧芥渤鍘�"
+ ]
+ },
+ {
+ "name": "鍟嗘礇甯�",
+ "area": [
+ "鍟嗗窞鍖�",
+ "娲涘崡鍘�",
+ "涓瑰嚖鍘�",
+ "鍟嗗崡鍘�",
+ "灞遍槼鍘�",
+ "闀囧畨鍘�",
+ "鏌炴按鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "姹熻タ鐪�",
+ "city": [
+ {
+ "name": "鍗楁槍甯�",
+ "area": [
+ "涓滄箹鍖�",
+ "瑗挎箹鍖�",
+ "闈掍簯璋卞尯",
+ "闈掑北婀栧尯",
+ "鏂板缓鍖�",
+ "绾㈣胺婊╁尯",
+ "鍗楁槍鍘�",
+ "瀹変箟鍘�",
+ "杩涜搐鍘�"
+ ]
+ },
+ {
+ "name": "鏅痉闀囧競",
+ "area": [
+ "鏄屾睙鍖�",
+ "鐝犲北鍖�",
+ "娴鍘�",
+ "涔愬钩甯�"
+ ]
+ },
+ {
+ "name": "钀嶄埂甯�",
+ "area": [
+ "瀹夋簮鍖�",
+ "婀樹笢鍖�",
+ "鑾茶姳鍘�",
+ "涓婃牀鍘�",
+ "鑺︽邯鍘�"
+ ]
+ },
+ {
+ "name": "涔濇睙甯�",
+ "area": [
+ "婵傛邯鍖�",
+ "娴旈槼鍖�",
+ "鏌存鍖�",
+ "姝﹀畞鍘�",
+ "淇按鍘�",
+ "姘镐慨鍘�",
+ "寰峰畨鍘�",
+ "閮芥槍鍘�",
+ "婀栧彛鍘�",
+ "褰辰鍘�",
+ "鐟炴槍甯�",
+ "鍏遍潚鍩庡競",
+ "搴愬北甯�"
+ ]
+ },
+ {
+ "name": "鏂颁綑甯�",
+ "area": [
+ "娓濇按鍖�",
+ "鍒嗗疁鍘�"
+ ]
+ },
+ {
+ "name": "楣版江甯�",
+ "area": [
+ "鏈堟箹鍖�",
+ "浣欐睙鍖�",
+ "璐垫邯甯�"
+ ]
+ },
+ {
+ "name": "璧e窞甯�",
+ "area": [
+ "绔犺础鍖�",
+ "鍗楀悍鍖�",
+ "璧e幙鍖�",
+ "淇′赴鍘�",
+ "澶т綑鍘�",
+ "涓婄姽鍘�",
+ "宕囦箟鍘�",
+ "瀹夎繙鍘�",
+ "瀹氬崡鍘�",
+ "鍏ㄥ崡鍘�",
+ "瀹侀兘鍘�",
+ "浜庨兘鍘�",
+ "鍏村浗鍘�",
+ "浼氭槍鍘�",
+ "瀵讳箤鍘�",
+ "鐭冲煄鍘�",
+ "鐟為噾甯�",
+ "榫欏崡甯�"
+ ]
+ },
+ {
+ "name": "鍚夊畨甯�",
+ "area": [
+ "鍚夊窞鍖�",
+ "闈掑師鍖�",
+ "鍚夊畨鍘�",
+ "鍚夋按鍘�",
+ "宄℃睙鍘�",
+ "鏂板共鍘�",
+ "姘镐赴鍘�",
+ "娉板拰鍘�",
+ "閬傚窛鍘�",
+ "涓囧畨鍘�",
+ "瀹夌鍘�",
+ "姘告柊鍘�",
+ "浜曞唸灞卞競"
+ ]
+ },
+ {
+ "name": "瀹滄槬甯�",
+ "area": [
+ "琚佸窞鍖�",
+ "濂夋柊鍘�",
+ "涓囪浇鍘�",
+ "涓婇珮鍘�",
+ "瀹滀赴鍘�",
+ "闈栧畨鍘�",
+ "閾滈紦鍘�",
+ "涓板煄甯�",
+ "妯熸爲甯�",
+ "楂樺畨甯�"
+ ]
+ },
+ {
+ "name": "鎶氬窞甯�",
+ "area": [
+ "涓村窛鍖�",
+ "涓滀埂鍖�",
+ "鍗楀煄鍘�",
+ "榛庡窛鍘�",
+ "鍗椾赴鍘�",
+ "宕囦粊鍘�",
+ "涔愬畨鍘�",
+ "瀹滈粍鍘�",
+ "閲戞邯鍘�",
+ "璧勬邯鍘�",
+ "骞挎槍鍘�"
+ ]
+ },
+ {
+ "name": "涓婇ザ甯�",
+ "area": [
+ "淇″窞鍖�",
+ "骞夸赴鍖�",
+ "骞夸俊鍖�",
+ "鐜夊北鍘�",
+ "閾呭北鍘�",
+ "妯嘲鍘�",
+ "寮嬮槼鍘�",
+ "浣欏共鍘�",
+ "閯遍槼鍘�",
+ "涓囧勾鍘�",
+ "濠烘簮鍘�",
+ "寰峰叴甯�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "浜戝崡鐪�",
+ "city": [
+ {
+ "name": "鏄嗘槑甯�",
+ "area": [
+ "浜斿崕鍖�",
+ "鐩橀緳鍖�",
+ "瀹樻浮鍖�",
+ "瑗垮北鍖�",
+ "涓滃窛鍖�",
+ "鍛堣础鍖�",
+ "鏅嬪畞鍖�",
+ "瀵屾皯鍘�",
+ "瀹滆壇鍘�",
+ "鐭虫灄褰濇棌鑷不鍘�",
+ "宓╂槑鍘�",
+ "绂勫姖褰濇棌鑻楁棌鑷不鍘�",
+ "瀵荤敻鍥炴棌褰濇棌鑷不鍘�",
+ "瀹夊畞甯�"
+ ]
+ },
+ {
+ "name": "鏇查潠甯�",
+ "area": [
+ "楹掗簾鍖�",
+ "娌剧泭鍖�",
+ "椹緳鍖�",
+ "闄嗚壇鍘�",
+ "甯堝畻鍘�",
+ "缃楀钩鍘�",
+ "瀵屾簮鍘�",
+ "浼氭辰鍘�",
+ "瀹e▉甯�"
+ ]
+ },
+ {
+ "name": "鐜夋邯甯�",
+ "area": [
+ "绾㈠鍖�",
+ "姹熷窛鍖�",
+ "閫氭捣鍘�",
+ "鍗庡畞鍘�",
+ "鏄撻棬鍘�",
+ "宄ㄥ北褰濇棌鑷不鍘�",
+ "鏂板钩褰濇棌鍌f棌鑷不鍘�",
+ "鍏冩睙鍝堝凹鏃忓綕鏃忓偅鏃忚嚜娌诲幙",
+ "婢勬睙甯�"
+ ]
+ },
+ {
+ "name": "淇濆北甯�",
+ "area": [
+ "闅嗛槼鍖�",
+ "鏂界敻鍘�",
+ "榫欓櫟鍘�",
+ "鏄屽畞鍘�",
+ "鑵惧啿甯�"
+ ]
+ },
+ {
+ "name": "鏄�氬競",
+ "area": [
+ "鏄槼鍖�",
+ "椴佺敻鍘�",
+ "宸у鍘�",
+ "鐩愭触鍘�",
+ "澶у叧鍘�",
+ "姘稿杽鍘�",
+ "缁ユ睙鍘�",
+ "闀囬泟鍘�",
+ "褰濊壇鍘�",
+ "濞佷俊鍘�",
+ "姘村瘜甯�"
+ ]
+ },
+ {
+ "name": "涓芥睙甯�",
+ "area": [
+ "鍙ゅ煄鍖�",
+ "鐜夐緳绾宠タ鏃忚嚜娌诲幙",
+ "姘歌儨鍘�",
+ "鍗庡潽鍘�",
+ "瀹佽挆褰濇棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "鏅幢甯�",
+ "area": [
+ "鎬濊寘鍖�",
+ "瀹佹幢鍝堝凹鏃忓綕鏃忚嚜娌诲幙",
+ "澧ㄦ睙鍝堝凹鏃忚嚜娌诲幙",
+ "鏅笢褰濇棌鑷不鍘�",
+ "鏅胺鍌f棌褰濇棌鑷不鍘�",
+ "闀囨矃褰濇棌鍝堝凹鏃忔媺绁滄棌鑷不鍘�",
+ "姹熷煄鍝堝凹鏃忓綕鏃忚嚜娌诲幙",
+ "瀛熻繛鍌f棌鎷夌鏃忎饯鏃忚嚜娌诲幙",
+ "婢滄钵鎷夌鏃忚嚜娌诲幙",
+ "瑗跨洘浣ゆ棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "涓存钵甯�",
+ "area": [
+ "涓寸繑鍖�",
+ "鍑ゅ簡鍘�",
+ "浜戝幙",
+ "姘稿痉鍘�",
+ "闀囧悍鍘�",
+ "鍙屾睙鎷夌鏃忎饯鏃忓竷鏈楁棌鍌f棌鑷不鍘�",
+ "鑰块┈鍌f棌浣ゆ棌鑷不鍘�",
+ "娌ф簮浣ゆ棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "妤氶泟褰濇棌鑷不宸�",
+ "area": [
+ "妤氶泟甯�",
+ "鍙屾煆鍘�",
+ "鐗熷畾鍘�",
+ "鍗楀崕鍘�",
+ "濮氬畨鍘�",
+ "澶у鍘�",
+ "姘镐粊鍘�",
+ "鍏冭皨鍘�",
+ "姝﹀畾鍘�",
+ "绂勪赴鍘�"
+ ]
+ },
+ {
+ "name": "绾㈡渤鍝堝凹鏃忓綕鏃忚嚜娌诲窞",
+ "area": [
+ "涓棫甯�",
+ "寮�杩滃競",
+ "钂欒嚜甯�",
+ "寮ュ嫆甯�",
+ "灞忚竟鑻楁棌鑷不鍘�",
+ "寤烘按鍘�",
+ "鐭冲睆鍘�",
+ "娉歌タ鍘�",
+ "鍏冮槼鍘�",
+ "绾㈡渤鍘�",
+ "閲戝钩鑻楁棌鐟舵棌鍌f棌鑷不鍘�",
+ "缁挎槬鍘�",
+ "娌冲彛鐟舵棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "鏂囧北澹棌鑻楁棌鑷不宸�",
+ "area": [
+ "鏂囧北甯�",
+ "鐮氬北鍘�",
+ "瑗跨暣鍘�",
+ "楹绘牀鍧″幙",
+ "椹叧鍘�",
+ "涓樺寳鍘�",
+ "骞垮崡鍘�",
+ "瀵屽畞鍘�"
+ ]
+ },
+ {
+ "name": "瑗垮弻鐗堢撼鍌f棌鑷不宸�",
+ "area": [
+ "鏅椽甯�",
+ "鍕愭捣鍘�",
+ "鍕愯厞鍘�"
+ ]
+ },
+ {
+ "name": "澶х悊鐧芥棌鑷不宸�",
+ "area": [
+ "澶х悊甯�",
+ "婕炬繛褰濇棌鑷不鍘�",
+ "绁ヤ簯鍘�",
+ "瀹惧窛鍘�",
+ "寮ユ浮鍘�",
+ "鍗楁锭褰濇棌鑷不鍘�",
+ "宸嶅北褰濇棌鍥炴棌鑷不鍘�",
+ "姘稿钩鍘�",
+ "浜戦緳鍘�",
+ "娲辨簮鍘�",
+ "鍓戝窛鍘�",
+ "楣ゅ簡鍘�"
+ ]
+ },
+ {
+ "name": "寰峰畯鍌f棌鏅鏃忚嚜娌诲窞",
+ "area": [
+ "鐟炰附甯�",
+ "鑺掑競",
+ "姊佹渤鍘�",
+ "鐩堟睙鍘�",
+ "闄囧窛鍘�"
+ ]
+ },
+ {
+ "name": "鎬掓睙鍌堝兂鏃忚嚜娌诲窞",
+ "area": [
+ "娉告按甯�",
+ "绂忚础鍘�",
+ "璐″北鐙緳鏃忔�掓棌鑷不鍘�",
+ "鍏板潽鐧芥棌鏅背鏃忚嚜娌诲幙"
+ ]
+ },
+ {
+ "name": "杩簡钘忔棌鑷不宸�",
+ "area": [
+ "棣欐牸閲屾媺甯�",
+ "寰烽挦鍘�",
+ "缁磋タ鍌堝兂鏃忚嚜娌诲幙"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "灞辫タ鐪�",
+ "city": [
+ {
+ "name": "澶師甯�",
+ "area": [
+ "灏忓簵鍖�",
+ "杩庢辰鍖�",
+ "鏉忚姳宀尯",
+ "灏栬崏鍧尯",
+ "涓囨煆鏋楀尯",
+ "鏅嬫簮鍖�",
+ "娓呭緪鍘�",
+ "闃虫洸鍘�",
+ "濞勭儲鍘�",
+ "鍙や氦甯�"
+ ]
+ },
+ {
+ "name": "澶у悓甯�",
+ "area": [
+ "鏂拌崳鍖�",
+ "骞冲煄鍖�",
+ "浜戝唸鍖�",
+ "浜戝窞鍖�",
+ "闃抽珮鍘�",
+ "澶╅晣鍘�",
+ "骞跨伒鍘�",
+ "鐏典笜鍘�",
+ "娴戞簮鍘�",
+ "宸︿簯鍘�"
+ ]
+ },
+ {
+ "name": "闃虫硥甯�",
+ "area": [
+ "鍩庡尯",
+ "鐭垮尯",
+ "閮婂尯",
+ "骞冲畾鍘�",
+ "鐩傚幙"
+ ]
+ },
+ {
+ "name": "闀挎不甯�",
+ "area": [
+ "娼炲窞鍖�",
+ "涓婂厷鍖�",
+ "灞暀鍖�",
+ "娼炲煄鍖�",
+ "瑗勫灒鍘�",
+ "骞抽『鍘�",
+ "榛庡煄鍘�",
+ "澹跺叧鍘�",
+ "闀垮瓙鍘�",
+ "姝︿埂鍘�",
+ "娌佸幙",
+ "娌佹簮鍘�"
+ ]
+ },
+ {
+ "name": "鏅嬪煄甯�",
+ "area": [
+ "鍩庡尯",
+ "娌佹按鍘�",
+ "闃冲煄鍘�",
+ "闄靛窛鍘�",
+ "娉藉窞鍘�",
+ "楂樺钩甯�"
+ ]
+ },
+ {
+ "name": "鏈斿窞甯�",
+ "area": [
+ "鏈斿煄鍖�",
+ "骞抽瞾鍖�",
+ "灞遍槾鍘�",
+ "搴斿幙",
+ "鍙崇帀鍘�",
+ "鎬�浠佸競"
+ ]
+ },
+ {
+ "name": "鏅嬩腑甯�",
+ "area": [
+ "姒嗘鍖�",
+ "澶胺鍖�",
+ "姒嗙ぞ鍘�",
+ "宸︽潈鍘�",
+ "鍜岄『鍘�",
+ "鏄旈槼鍘�",
+ "瀵块槼鍘�",
+ "绁佸幙",
+ "骞抽仴鍘�",
+ "鐏电煶鍘�",
+ "浠嬩紤甯�"
+ ]
+ },
+ {
+ "name": "杩愬煄甯�",
+ "area": [
+ "鐩愭箹鍖�",
+ "涓寸寳鍘�",
+ "涓囪崳鍘�",
+ "闂诲枩鍘�",
+ "绋峰北鍘�",
+ "鏂扮粵鍘�",
+ "缁涘幙",
+ "鍨f洸鍘�",
+ "澶忓幙",
+ "骞抽檰鍘�",
+ "鑺煄鍘�",
+ "姘告祹甯�",
+ "娌虫触甯�"
+ ]
+ },
+ {
+ "name": "蹇诲窞甯�",
+ "area": [
+ "蹇诲簻鍖�",
+ "瀹氳鍘�",
+ "浜斿彴鍘�",
+ "浠e幙",
+ "绻佸硻鍘�",
+ "瀹佹鍘�",
+ "闈欎箰鍘�",
+ "绁炴睜鍘�",
+ "浜斿鍘�",
+ "宀㈠矚鍘�",
+ "娌虫洸鍘�",
+ "淇濆痉鍘�",
+ "鍋忓叧鍘�",
+ "鍘熷钩甯�"
+ ]
+ },
+ {
+ "name": "涓存本甯�",
+ "area": [
+ "灏ч兘鍖�",
+ "鏇叉矁鍘�",
+ "缈煎煄鍘�",
+ "瑗勬本鍘�",
+ "娲礊鍘�",
+ "鍙ゅ幙",
+ "瀹夋辰鍘�",
+ "娴北鍘�",
+ "鍚夊幙",
+ "涔″畞鍘�",
+ "澶у畞鍘�",
+ "闅板幙",
+ "姘稿拰鍘�",
+ "钂插幙",
+ "姹捐タ鍘�",
+ "渚┈甯�",
+ "闇嶅窞甯�"
+ ]
+ },
+ {
+ "name": "鍚曟甯�",
+ "area": [
+ "绂荤煶鍖�",
+ "鏂囨按鍘�",
+ "浜ゅ煄鍘�",
+ "鍏村幙",
+ "涓村幙",
+ "鏌虫灄鍘�",
+ "鐭虫ゼ鍘�",
+ "宀氬幙",
+ "鏂瑰北鍘�",
+ "涓槼鍘�",
+ "浜ゅ彛鍘�",
+ "瀛濅箟甯�",
+ "姹鹃槼甯�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "鍚夋灄鐪�",
+ "city": [
+ {
+ "name": "闀挎槬甯�",
+ "area": [
+ "鍗楀叧鍖�",
+ "瀹藉煄鍖�",
+ "鏈濋槼鍖�",
+ "浜岄亾鍖�",
+ "缁垮洯鍖�",
+ "鍙岄槼鍖�",
+ "涔濆彴鍖�",
+ "鍐滃畨鍘�",
+ "姒嗘爲甯�",
+ "寰锋儬甯�",
+ "鍏富宀競",
+ "闀垮痉鍖�",
+ "鍖楁箹鍖�",
+ "绌烘腐鍖�",
+ "鍖楀尯",
+ "鍗楀尯",
+ "楂樻柊鍖�",
+ "姹藉紑鍖�",
+ "鍑�鏈堝尯",
+ "鑾茶姳灞辨梾娓稿害鍋囧尯"
+ ]
+ },
+ {
+ "name": "鍚夋灄甯�",
+ "area": [
+ "鏄岄倯鍖�",
+ "榫欐江鍖�",
+ "鑸硅惀鍖�",
+ "涓版弧鍖�",
+ "姘稿悏鍘�",
+ "铔熸渤甯�",
+ "妗︾敻甯�",
+ "鑸掑叞甯�",
+ "纾愮煶甯�"
+ ]
+ },
+ {
+ "name": "鍥涘钩甯�",
+ "area": [
+ "閾佽タ鍖�",
+ "閾佷笢鍖�",
+ "姊ㄦ爲鍘�",
+ "浼婇�氭弧鏃忚嚜娌诲幙",
+ "鍙岃窘甯�"
+ ]
+ },
+ {
+ "name": "杈芥簮甯�",
+ "area": [
+ "榫欏北鍖�",
+ "瑗垮畨鍖�",
+ "涓滀赴鍘�",
+ "涓滆窘鍘�"
+ ]
+ },
+ {
+ "name": "閫氬寲甯�",
+ "area": [
+ "涓滄槍鍖�",
+ "浜岄亾姹熷尯",
+ "閫氬寲鍘�",
+ "杈夊崡鍘�",
+ "鏌虫渤鍘�",
+ "姊呮渤鍙e競",
+ "闆嗗畨甯�"
+ ]
+ },
+ {
+ "name": "鐧藉北甯�",
+ "area": [
+ "娴戞睙鍖�",
+ "姹熸簮鍖�",
+ "鎶氭澗鍘�",
+ "闈栧畤鍘�",
+ "闀跨櫧鏈濋矞鏃忚嚜娌诲幙",
+ "涓存睙甯�"
+ ]
+ },
+ {
+ "name": "鏉惧師甯�",
+ "area": [
+ "瀹佹睙鍖�",
+ "鍓嶉儹灏旂綏鏂挋鍙ゆ棌鑷不鍘�",
+ "闀垮箔鍘�",
+ "涔惧畨鍘�",
+ "鎵朵綑甯�"
+ ]
+ },
+ {
+ "name": "鐧藉煄甯�",
+ "area": [
+ "娲寳鍖�",
+ "闀囪祲鍘�",
+ "閫氭鍘�",
+ "娲崡甯�",
+ "澶у畨甯�"
+ ]
+ },
+ {
+ "name": "寤惰竟鏈濋矞鏃忚嚜娌诲窞",
+ "area": [
+ "寤跺悏甯�",
+ "鍥句滑甯�",
+ "鏁﹀寲甯�",
+ "鐝叉槬甯�",
+ "榫欎簳甯�",
+ "鍜岄緳甯�",
+ "姹竻鍘�",
+ "瀹夊浘鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "璐靛窞鐪�",
+ "city": [
+ {
+ "name": "璐甸槼甯�",
+ "area": [
+ "鍗楁槑鍖�",
+ "浜戝博鍖�",
+ "鑺辨邯鍖�",
+ "涔屽綋鍖�",
+ "鐧戒簯鍖�",
+ "瑙傚北婀栧尯",
+ "寮�闃冲幙",
+ "鎭兘鍘�",
+ "淇枃鍘�",
+ "娓呴晣甯�"
+ ]
+ },
+ {
+ "name": "鍏洏姘村競",
+ "area": [
+ "閽熷北鍖�",
+ "鍏灊鐗瑰尯",
+ "姘村煄鍘�",
+ "鐩樺窞甯�"
+ ]
+ },
+ {
+ "name": "閬典箟甯�",
+ "area": [
+ "绾㈣姳宀楀尯",
+ "姹囧窛鍖�",
+ "鎾窞鍖�",
+ "妗愭鍘�",
+ "缁ラ槼鍘�",
+ "姝e畨鍘�",
+ "閬撶湡浠′浆鏃忚嫍鏃忚嚜娌诲幙",
+ "鍔″窛浠′浆鏃忚嫍鏃忚嚜娌诲幙",
+ "鍑ゅ唸鍘�",
+ "婀勬江鍘�",
+ "浣欏簡鍘�",
+ "涔犳按鍘�",
+ "璧ゆ按甯�",
+ "浠佹��甯�"
+ ]
+ },
+ {
+ "name": "瀹夐『甯�",
+ "area": [
+ "瑗跨鍖�",
+ "骞冲潩鍖�",
+ "鏅畾鍘�",
+ "闀囧畞甯冧緷鏃忚嫍鏃忚嚜娌诲幙",
+ "鍏冲箔甯冧緷鏃忚嫍鏃忚嚜娌诲幙",
+ "绱簯鑻楁棌甯冧緷鏃忚嚜娌诲幙"
+ ]
+ },
+ {
+ "name": "姣曡妭甯�",
+ "area": [
+ "涓冩槦鍏冲尯",
+ "澶ф柟鍘�",
+ "榛旇タ鍘�",
+ "閲戞矙鍘�",
+ "缁囬噾鍘�",
+ "绾抽泹鍘�",
+ "濞佸畞褰濇棌鍥炴棌鑻楁棌鑷不鍘�",
+ "璧珷鍘�"
+ ]
+ },
+ {
+ "name": "閾滀粊甯�",
+ "area": [
+ "纰ф睙鍖�",
+ "涓囧北鍖�",
+ "姹熷彛鍘�",
+ "鐜夊睆渚楁棌鑷不鍘�",
+ "鐭抽槨鍘�",
+ "鎬濆崡鍘�",
+ "鍗版睙鍦熷鏃忚嫍鏃忚嚜娌诲幙",
+ "寰锋睙鍘�",
+ "娌挎渤鍦熷鏃忚嚜娌诲幙",
+ "鏉炬鑻楁棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "榛旇タ鍗楀竷渚濇棌鑻楁棌鑷不宸�",
+ "area": [
+ "鍏翠箟甯�",
+ "鍏翠粊甯�",
+ "鏅畨鍘�",
+ "鏅撮殕鍘�",
+ "璐炰赴鍘�",
+ "鏈涜盁鍘�",
+ "鍐屼酣鍘�",
+ "瀹夐緳鍘�"
+ ]
+ },
+ {
+ "name": "榛斾笢鍗楄嫍鏃忎緱鏃忚嚜娌诲窞",
+ "area": [
+ "鍑噷甯�",
+ "榛勫钩鍘�",
+ "鏂界鍘�",
+ "涓夌鍘�",
+ "闀囪繙鍘�",
+ "宀戝珐鍘�",
+ "澶╂煴鍘�",
+ "閿﹀睆鍘�",
+ "鍓戞渤鍘�",
+ "鍙版睙鍘�",
+ "榛庡钩鍘�",
+ "姒曟睙鍘�",
+ "浠庢睙鍘�",
+ "闆峰北鍘�",
+ "楹绘睙鍘�",
+ "涓瑰鍘�"
+ ]
+ },
+ {
+ "name": "榛斿崡甯冧緷鏃忚嫍鏃忚嚜娌诲窞",
+ "area": [
+ "閮藉寑甯�",
+ "绂忔硥甯�",
+ "鑽旀尝鍘�",
+ "璐靛畾鍘�",
+ "鐡畨鍘�",
+ "鐙北鍘�",
+ "骞冲鍘�",
+ "缃楃敻鍘�",
+ "闀块『鍘�",
+ "榫欓噷鍘�",
+ "鎯犳按鍘�",
+ "涓夐兘姘存棌鑷不鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "鐢樿們鐪�",
+ "city": [
+ {
+ "name": "鍏板窞甯�",
+ "area": [
+ "鍩庡叧鍖�",
+ "涓冮噷娌冲尯",
+ "瑗垮浐鍖�",
+ "瀹夊畞鍖�",
+ "绾㈠彜鍖�",
+ "姘哥櫥鍘�",
+ "鐨嬪叞鍘�",
+ "姒嗕腑鍘�"
+ ]
+ },
+ {
+ "name": "鍢夊唱鍏冲競",
+ "area": [
+ "鑳滃埄琛楅亾",
+ "浜斾竴琛楅亾",
+ "鐭垮北琛楅亾",
+ "鏂板崕琛楅亾",
+ "寤鸿琛楅亾",
+ "鍓嶈繘琛楅亾",
+ "宄嫅琛楅亾",
+ "鏈濋槼琛楅亾",
+ "宄硥闀�",
+ "鏂囨畩闀�",
+ "鏂板煄闀�",
+ "闆勫叧鍖�",
+ "闀垮煄鍖�",
+ "闀滈搧鍖�"
+ ]
+ },
+ {
+ "name": "閲戞槍甯�",
+ "area": [
+ "閲戝窛鍖�",
+ "姘告槍鍘�"
+ ]
+ },
+ {
+ "name": "鐧介摱甯�",
+ "area": [
+ "鐧介摱鍖�",
+ "骞冲窛鍖�",
+ "闈栬繙鍘�",
+ "浼氬畞鍘�",
+ "鏅嘲鍘�"
+ ]
+ },
+ {
+ "name": "澶╂按甯�",
+ "area": [
+ "绉﹀窞鍖�",
+ "楹︾Н鍖�",
+ "娓呮按鍘�",
+ "绉﹀畨鍘�",
+ "鐢樿胺鍘�",
+ "姝﹀北鍘�",
+ "寮犲宸濆洖鏃忚嚜娌诲幙"
+ ]
+ },
+ {
+ "name": "姝﹀▉甯�",
+ "area": [
+ "鍑夊窞鍖�",
+ "姘戝嫟鍘�",
+ "鍙ゆ氮鍘�",
+ "澶╃钘忔棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "寮犳帠甯�",
+ "area": [
+ "鐢樺窞鍖�",
+ "鑲冨崡瑁曞浐鏃忚嚜娌诲幙",
+ "姘戜箰鍘�",
+ "涓存辰鍘�",
+ "楂樺彴鍘�",
+ "灞变腹鍘�"
+ ]
+ },
+ {
+ "name": "骞冲噳甯�",
+ "area": [
+ "宕嗗硳鍖�",
+ "娉惧窛鍘�",
+ "鐏靛彴鍘�",
+ "宕囦俊鍘�",
+ "搴勬氮鍘�",
+ "闈欏畞鍘�",
+ "鍗庝涵甯�"
+ ]
+ },
+ {
+ "name": "閰掓硥甯�",
+ "area": [
+ "鑲冨窞鍖�",
+ "閲戝鍘�",
+ "鐡滃窞鍘�",
+ "鑲冨寳钂欏彜鏃忚嚜娌诲幙",
+ "闃垮厠濉炲搱钀ㄥ厠鏃忚嚜娌诲幙",
+ "鐜夐棬甯�",
+ "鏁︾厡甯�"
+ ]
+ },
+ {
+ "name": "搴嗛槼甯�",
+ "area": [
+ "瑗垮嘲鍖�",
+ "搴嗗煄鍘�",
+ "鐜幙",
+ "鍗庢睜鍘�",
+ "鍚堟按鍘�",
+ "姝e畞鍘�",
+ "瀹佸幙",
+ "闀囧師鍘�"
+ ]
+ },
+ {
+ "name": "瀹氳タ甯�",
+ "area": [
+ "瀹夊畾鍖�",
+ "閫氭腑鍘�",
+ "闄囪タ鍘�",
+ "娓簮鍘�",
+ "涓存串鍘�",
+ "婕冲幙",
+ "宀峰幙"
+ ]
+ },
+ {
+ "name": "闄囧崡甯�",
+ "area": [
+ "姝﹂兘鍖�",
+ "鎴愬幙",
+ "鏂囧幙",
+ "瀹曟槍鍘�",
+ "搴峰幙",
+ "瑗垮拰鍘�",
+ "绀煎幙",
+ "寰藉幙",
+ "涓ゅ綋鍘�"
+ ]
+ },
+ {
+ "name": "涓村鍥炴棌鑷不宸�",
+ "area": [
+ "涓村甯�",
+ "涓村鍘�",
+ "搴蜂箰鍘�",
+ "姘搁潠鍘�",
+ "骞挎渤鍘�",
+ "鍜屾斂鍘�",
+ "涓滀埂鏃忚嚜娌诲幙",
+ "绉煶灞变繚瀹夋棌涓滀埂鏃忔拻鎷夋棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "鐢樺崡钘忔棌鑷不宸�",
+ "area": [
+ "鍚堜綔甯�",
+ "涓存江鍘�",
+ "鍗撳凹鍘�",
+ "鑸熸洸鍘�",
+ "杩儴鍘�",
+ "鐜涙洸鍘�",
+ "纰屾洸鍘�",
+ "澶忔渤鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "娴峰崡鐪�",
+ "city": [
+ {
+ "name": "娴峰彛甯�",
+ "area": [
+ "绉�鑻卞尯",
+ "榫欏崕鍖�",
+ "鐞煎北鍖�",
+ "缇庡叞鍖�"
+ ]
+ },
+ {
+ "name": "涓変簹甯�",
+ "area": [
+ "娴锋鍖�",
+ "鍚夐槼鍖�",
+ "澶╂动鍖�",
+ "宕栧窞鍖�"
+ ]
+ },
+ {
+ "name": "涓夋矙甯�",
+ "area": [
+ "瑗挎矙缇ゅ矝",
+ "涓矙缇ゅ矝",
+ "鍗楁矙缇ゅ矝"
+ ]
+ },
+ {
+ "name": "鍎嬪窞甯�",
+ "area": [
+ "閭eぇ闀�",
+ "鍜屽簡闀�",
+ "鍗椾赴闀�",
+ "澶ф垚闀�",
+ "闆呮槦闀�",
+ "鍏版磱闀�",
+ "鍏夋潙闀�",
+ "鏈ㄦ闀�",
+ "娴峰ご闀�",
+ "宄ㄨ敁闀�",
+ "鐜嬩簲闀�",
+ "鐧介┈浜曢晣",
+ "涓拰闀�",
+ "鎺掓郸闀�",
+ "涓滄垚闀�",
+ "鏂板窞闀�",
+ "鍥借惀鍏竴鎬诲満",
+ "鍥借惀钃濇磱鍐滃満",
+ "鍥借惀瑗胯仈鍐滃満",
+ "鍥借惀瑗垮煿鍐滃満"
+ ]
+ },
+ {
+ "name": "浜旀寚灞卞競",
+ "area": [
+ "閫氫粈闀�",
+ "鍗楀湥闀�",
+ "姣涢槼闀�",
+ "鐣槼闀�",
+ "鐣呭ソ涔�",
+ "姣涢亾涔�",
+ "姘存弧涔�"
+ ]
+ },
+ {
+ "name": "鐞兼捣甯�",
+ "area": [
+ "鍢夌Н闀�",
+ "鍗氶硨闀�",
+ "涓囨硥闀�",
+ "娼棬闀�",
+ "闀垮潯闀�",
+ "濉旀磱闀�",
+ "澶ц矾闀�",
+ "涓師闀�",
+ "闃虫睙闀�",
+ "榫欐睙闀�",
+ "鐭冲闀�",
+ "浼氬北闀�"
+ ]
+ },
+ {
+ "name": "鏂囨槍甯�",
+ "area": [
+ "鏂囧煄闀�",
+ "閲嶅叴闀�",
+ "钃幈闀�",
+ "浼氭枃闀�",
+ "涓滆矾闀�",
+ "娼墰闀�",
+ "涓滈榿闀�",
+ "鏂囨暀闀�",
+ "涓滈儕闀�",
+ "榫欐ゼ闀�",
+ "鏄屾磼闀�",
+ "缈佺敯闀�",
+ "鎶辩綏闀�",
+ "鍐潯闀�",
+ "閿﹀北闀�",
+ "閾哄墠闀�",
+ "鍏潯闀�"
+ ]
+ },
+ {
+ "name": "涓囧畞甯�",
+ "area": [
+ "涓囧煄闀�",
+ "榫欐粴闀�",
+ "鍜屼箰闀�",
+ "鍚庡畨闀�",
+ "澶ц寕闀�",
+ "涓滄境闀�",
+ "绀肩邯闀�",
+ "闀夸赴闀�",
+ "灞辨牴闀�",
+ "鍖楀ぇ闀�",
+ "鍗楁ˉ闀�",
+ "涓夋洿缃楅晣",
+ "鍏撮殕鍗庝鲸鍐滃満",
+ "鍦版柟鍥借惀鍏繛鏋楀満"
+ ]
+ },
+ {
+ "name": "涓滄柟甯�",
+ "area": [
+ "鍏墍闀�",
+ "涓滄渤闀�",
+ "澶х敯闀�",
+ "鎰熷煄闀�",
+ "鏉挎ˉ闀�",
+ "涓夊闀�",
+ "鍥涙洿闀�",
+ "鏂伴緳闀�",
+ "澶╁畨涔�",
+ "姹熻竟涔�"
+ ]
+ },
+ {
+ "name": "瀹氬畨鍘�",
+ "area": [
+ "瀹氬煄闀�",
+ "鏂扮闀�",
+ "榫欐箹闀�",
+ "榛勭闀�",
+ "闆烽福闀�",
+ "榫欓棬闀�",
+ "榫欐渤闀�",
+ "宀彛闀�",
+ "缈版灄闀�",
+ "瀵屾枃闀�"
+ ]
+ },
+ {
+ "name": "灞槍鍘�",
+ "area": [
+ "灞煄闀�",
+ "鏂板叴闀�",
+ "鏋湪闀�",
+ "涔屽潯闀�",
+ "鍗楀悤闀�",
+ "鍗楀潳闀�",
+ "鍧″績闀�",
+ "瑗挎槍闀�"
+ ]
+ },
+ {
+ "name": "婢勮繄鍘�",
+ "area": [
+ "閲戞睙闀�",
+ "鐟炴邯闀�",
+ "姘稿彂闀�",
+ "鑰佸煄闀�",
+ "鍔犱箰闀�",
+ "鏂囧剴闀�",
+ "绂忓北闀�",
+ "妗ュご闀�",
+ "涓叴闀�",
+ "浠佸叴闀�",
+ "澶т赴闀�",
+ "閲戝畨鍐滃満",
+ "绾㈠厜鍐滃満",
+ "瑗胯揪鍐滃満",
+ "婢勮繄鏋楀満",
+ "娴峰崡鑰佸煄缁忔祹寮�鍙戝尯",
+ "娴峰彛缁煎悎淇濈◣鍖�",
+ "椹潙涓績娓尯"
+ ]
+ },
+ {
+ "name": "涓撮珮鍘�",
+ "area": [
+ "涓村煄闀�",
+ "涓滆嫳闀�",
+ "娉㈣幉闀�",
+ "璋冩ゼ闀�",
+ "鏂扮泩闀�",
+ "鍗楀疂闀�",
+ "鍜岃垗闀�",
+ "澶氭枃闀�",
+ "鍗氬帤闀�",
+ "鐨囨闀�",
+ "鍔犳潵鍐滃満",
+ "閲戠墝娓粡娴庡紑鍙戝尯",
+ "涓撮珮瑙掓梾娓稿害鍋囧紑鍙戝尯"
+ ]
+ },
+ {
+ "name": "鐧芥矙榛庢棌鑷不鍘�",
+ "area": [
+ "鐗欏弶闀�",
+ "涓冨潑闀�",
+ "閭︽邯闀�",
+ "鎵撳畨闀�",
+ "缁嗘按涔�",
+ "鍏冮棬涔�",
+ "鍗楀紑涔�",
+ "闃滈緳涔�",
+ "闈掓澗涔�",
+ "閲戞尝涔�",
+ "鑽i偊涔�"
+ ]
+ },
+ {
+ "name": "鏄屾睙榛庢棌鑷不鍘�",
+ "area": [
+ "鐭崇闀�",
+ "鍙夋渤闀�",
+ "鍗佹湀鐢伴晣",
+ "涔岀儓闀�",
+ "鏄屽寲闀�",
+ "娴峰熬闀�",
+ "涓冨弶闀�",
+ "鐜嬩笅涔�"
+ ]
+ },
+ {
+ "name": "涔愪笢榛庢棌鑷不鍘�",
+ "area": [
+ "鎶辩敱闀�",
+ "涓囧啿闀�",
+ "澶у畨闀�",
+ "蹇椾徊闀�",
+ "鍗冨闀�",
+ "涔濇墍闀�",
+ "鍒╁浗闀�",
+ "榛勬祦闀�",
+ "浣涚綏闀�",
+ "灏栧嘲闀�",
+ "鑾烘瓕娴烽晣"
+ ]
+ },
+ {
+ "name": "闄垫按榛庢棌鑷不鍘�",
+ "area": [
+ "妞版灄闀�",
+ "鏂版潙闀�",
+ "鑻卞窞闀�",
+ "鏈彿闀�",
+ "鍏夊潯闀�",
+ "涓夋墠闀�",
+ "榛庡畨闀�",
+ "闅嗗箍闀�",
+ "鏂囩綏闀�",
+ "鎻愯挋涔�",
+ "缇よ嫳涔�"
+ ]
+ },
+ {
+ "name": "淇濅涵榛庢棌鑻楁棌鑷不鍘�",
+ "area": [
+ "淇濆煄闀�",
+ "浠�鐜查晣",
+ "鍔犺寕闀�",
+ "鍝嶆按闀�",
+ "鏂版斂闀�",
+ "涓夐亾闀�",
+ "鍏紦涔�",
+ "鍗楁灄涔�",
+ "姣涙劅涔�"
+ ]
+ },
+ {
+ "name": "鐞间腑榛庢棌鑻楁棌鑷不鍘�",
+ "area": [
+ "钀ユ牴闀�",
+ "婀惧箔闀�",
+ "榛庢瘝灞遍晣",
+ "绾㈡瘺闀�",
+ "闀垮緛闀�",
+ "涓钩闀�",
+ "鍜屽钩闀�",
+ "浠�杩愪埂",
+ "涓婂畨涔�",
+ "鍚婄綏灞变埂",
+ "闃虫睙鍐滃満",
+ "澶т赴鍐滃満",
+ "鏂拌繘鍐滃満",
+ "涔岀煶鍐滃満",
+ "宀ご鍐滃満",
+ "鍗楁柟鍐滃満",
+ "鏂颁紵鍐滃満",
+ "鍔犻挆鍐滃満",
+ "闀垮緛鍐滃満",
+ "涔樺潯鍐滃満",
+ "澶钩鍐滃満"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "闈掓捣鐪�",
+ "city": [
+ {
+ "name": "瑗垮畞甯�",
+ "area": [
+ "鍩庝笢鍖�",
+ "鍩庝腑鍖�",
+ "鍩庤タ鍖�",
+ "鍩庡寳鍖�",
+ "婀熶腑鍖�",
+ "澶ч�氬洖鏃忓湡鏃忚嚜娌诲幙",
+ "婀熸簮鍘�"
+ ]
+ },
+ {
+ "name": "娴蜂笢甯�",
+ "area": [
+ "涔愰兘鍖�",
+ "骞冲畨鍖�",
+ "姘戝拰鍥炴棌鍦熸棌鑷不鍘�",
+ "浜掑姪鍦熸棌鑷不鍘�",
+ "鍖栭殕鍥炴棌鑷不鍘�",
+ "寰寲鎾掓媺鏃忚嚜娌诲幙"
+ ]
+ },
+ {
+ "name": "娴峰寳钘忔棌鑷不宸�",
+ "area": [
+ "闂ㄦ簮鍥炴棌鑷不鍘�",
+ "绁佽繛鍘�",
+ "娴锋檹鍘�",
+ "鍒氬療鍘�"
+ ]
+ },
+ {
+ "name": "榛勫崡钘忔棌鑷不宸�",
+ "area": [
+ "鍚屼粊甯�",
+ "灏栨墡鍘�",
+ "娉藉簱鍘�",
+ "娌冲崡钂欏彜鏃忚嚜娌诲幙"
+ ]
+ },
+ {
+ "name": "娴峰崡钘忔棌鑷不宸�",
+ "area": [
+ "鍏卞拰鍘�",
+ "鍚屽痉鍘�",
+ "璐靛痉鍘�",
+ "鍏存捣鍘�",
+ "璐靛崡鍘�"
+ ]
+ },
+ {
+ "name": "鏋滄礇钘忔棌鑷不宸�",
+ "area": [
+ "鐜涙瞾鍘�",
+ "鐝帥鍘�",
+ "鐢樺痉鍘�",
+ "杈炬棩鍘�",
+ "涔呮不鍘�",
+ "鐜涘鍘�"
+ ]
+ },
+ {
+ "name": "鐜夋爲钘忔棌鑷不宸�",
+ "area": [
+ "鐜夋爲甯�",
+ "鏉傚鍘�",
+ "绉板鍘�",
+ "娌诲鍘�",
+ "鍥婅唉鍘�",
+ "鏇查夯鑾卞幙"
+ ]
+ },
+ {
+ "name": "娴疯タ钂欏彜鏃忚棌鏃忚嚜娌诲窞",
+ "area": [
+ "鏍煎皵鏈ㄥ競",
+ "寰蜂护鍝堝競",
+ "鑼礀甯�",
+ "涔屽叞鍘�",
+ "閮藉叞鍘�",
+ "澶╁郴鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "榛戦緳姹熺渷",
+ "city": [
+ {
+ "name": "鍝堝皵婊ㄥ競",
+ "area": [
+ "閬撻噷鍖�",
+ "鍗楀矖鍖�",
+ "閬撳鍖�",
+ "骞虫埧鍖�",
+ "鏉惧寳鍖�",
+ "棣欏潑鍖�",
+ "鍛煎叞鍖�",
+ "闃垮煄鍖�",
+ "鍙屽煄鍖�",
+ "渚濆叞鍘�",
+ "鏂规鍘�",
+ "瀹惧幙",
+ "宸村溅鍘�",
+ "鏈ㄥ叞鍘�",
+ "閫氭渤鍘�",
+ "寤跺鍘�",
+ "灏氬織甯�",
+ "浜斿父甯�"
+ ]
+ },
+ {
+ "name": "榻愰綈鍝堝皵甯�",
+ "area": [
+ "榫欐矙鍖�",
+ "寤哄崕鍖�",
+ "閾侀攱鍖�",
+ "鏄傛槀婧尯",
+ "瀵屾媺灏斿熀鍖�",
+ "纰惧瓙灞卞尯",
+ "姊呴噷鏂揪鏂″皵鏃忓尯",
+ "榫欐睙鍘�",
+ "渚濆畨鍘�",
+ "娉版潵鍘�",
+ "鐢樺崡鍘�",
+ "瀵岃鍘�",
+ "鍏嬪北鍘�",
+ "鍏嬩笢鍘�",
+ "鎷滄硥鍘�",
+ "璁锋渤甯�"
+ ]
+ },
+ {
+ "name": "楦¤タ甯�",
+ "area": [
+ "楦″啝鍖�",
+ "鎭掑北鍖�",
+ "婊撮亾鍖�",
+ "姊ㄦ爲鍖�",
+ "鍩庡瓙娌冲尯",
+ "楹诲北鍖�",
+ "楦′笢鍘�",
+ "铏庢灄甯�",
+ "瀵嗗北甯�"
+ ]
+ },
+ {
+ "name": "楣ゅ矖甯�",
+ "area": [
+ "鍚戦槼鍖�",
+ "宸ュ啘鍖�",
+ "鍗楀北鍖�",
+ "鍏村畨鍖�",
+ "涓滃北鍖�",
+ "鍏村北鍖�",
+ "钀濆寳鍘�",
+ "缁ユ花鍘�"
+ ]
+ },
+ {
+ "name": "鍙岄腑灞卞競",
+ "area": [
+ "灏栧北鍖�",
+ "宀笢鍖�",
+ "鍥涙柟鍙板尯",
+ "瀹濆北鍖�",
+ "闆嗚搐鍘�",
+ "鍙嬭皧鍘�",
+ "瀹濇竻鍘�",
+ "楗舵渤鍘�"
+ ]
+ },
+ {
+ "name": "澶у簡甯�",
+ "area": [
+ "钀ㄥ皵鍥惧尯",
+ "榫欏嚖鍖�",
+ "璁╄儭璺尯",
+ "绾㈠矖鍖�",
+ "澶у悓鍖�",
+ "鑲囧窞鍘�",
+ "鑲囨簮鍘�",
+ "鏋楃敻鍘�",
+ "鏉滃皵浼壒钂欏彜鏃忚嚜娌诲幙"
+ ]
+ },
+ {
+ "name": "浼婃槬甯�",
+ "area": [
+ "浼婄編鍖�",
+ "涔岀繝鍖�",
+ "鍙嬪ソ鍖�",
+ "鍢夎崼鍘�",
+ "姹ゆ椇鍘�",
+ "涓版灄鍘�",
+ "澶х異灞卞幙",
+ "鍗楀矓鍘�",
+ "閲戞灄鍖�",
+ "閾佸姏甯�"
+ ]
+ },
+ {
+ "name": "浣虫湪鏂競",
+ "area": [
+ "鍚戦槼鍖�",
+ "鍓嶈繘鍖�",
+ "涓滈鍖�",
+ "閮婂尯",
+ "妗﹀崡鍘�",
+ "妗﹀窛鍘�",
+ "姹ゅ師鍘�",
+ "鍚屾睙甯�",
+ "瀵岄敠甯�",
+ "鎶氳繙甯�"
+ ]
+ },
+ {
+ "name": "涓冨彴娌冲競",
+ "area": [
+ "鏂板叴鍖�",
+ "妗冨北鍖�",
+ "鑼勫瓙娌冲尯",
+ "鍕冨埄鍘�"
+ ]
+ },
+ {
+ "name": "鐗′腹姹熷競",
+ "area": [
+ "涓滃畨鍖�",
+ "闃虫槑鍖�",
+ "鐖辨皯鍖�",
+ "瑗垮畨鍖�",
+ "鏋楀彛鍘�",
+ "缁ヨ姮娌冲競",
+ "娴锋灄甯�",
+ "瀹佸畨甯�",
+ "绌嗘1甯�",
+ "涓滃畞甯�"
+ ]
+ },
+ {
+ "name": "榛戞渤甯�",
+ "area": [
+ "鐖辫緣鍖�",
+ "閫婂厠鍘�",
+ "瀛欏惔鍘�",
+ "鍖楀畨甯�",
+ "浜斿ぇ杩炴睜甯�",
+ "瀚╂睙甯�"
+ ]
+ },
+ {
+ "name": "缁ュ寲甯�",
+ "area": [
+ "鍖楁灄鍖�",
+ "鏈涘鍘�",
+ "鍏拌タ鍘�",
+ "闈掑唸鍘�",
+ "搴嗗畨鍘�",
+ "鏄庢按鍘�",
+ "缁ユ1鍘�",
+ "瀹夎揪甯�",
+ "鑲囦笢甯�",
+ "娴蜂鸡甯�"
+ ]
+ },
+ {
+ "name": "澶у叴瀹夊箔鍦板尯",
+ "area": [
+ "婕犳渤甯�",
+ "鍛肩帥鍘�",
+ "濉旀渤鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "瑗胯棌鑷不鍖�",
+ "city": [
+ {
+ "name": "鎷夎惃甯�",
+ "area": [
+ "鍩庡叧鍖�",
+ "鍫嗛緳寰峰簡鍖�",
+ "杈惧瓬鍖�",
+ "鏋楀懆鍘�",
+ "褰撻泟鍘�",
+ "灏兼湪鍘�",
+ "鏇叉按鍘�",
+ "澧ㄧ宸ュ崱鍘�"
+ ]
+ },
+ {
+ "name": "鏃ュ杸鍒欏競",
+ "area": [
+ "妗戠彔瀛滃尯",
+ "鍗楁湪鏋楀幙",
+ "姹熷瓬鍘�",
+ "瀹氭棩鍘�",
+ "钀ㄨ喀鍘�",
+ "鎷夊瓬鍘�",
+ "鏄備粊鍘�",
+ "璋㈤�氶棬鍘�",
+ "鐧芥湕鍘�",
+ "浠佸竷鍘�",
+ "搴烽┈鍘�",
+ "瀹氱粨鍘�",
+ "浠插反鍘�",
+ "浜氫笢鍘�",
+ "鍚夐殕鍘�",
+ "鑱傛媺鏈ㄥ幙",
+ "钀ㄥ槑鍘�",
+ "宀楀反鍘�"
+ ]
+ },
+ {
+ "name": "鏄岄兘甯�",
+ "area": [
+ "鍗¤嫢鍖�",
+ "姹熻揪鍘�",
+ "璐¤鍘�",
+ "绫讳箤榻愬幙",
+ "涓侀潚鍘�",
+ "瀵熼泤鍘�",
+ "鍏鍘�",
+ "宸﹁础鍘�",
+ "鑺掑悍鍘�",
+ "娲涢殕鍘�",
+ "杈瑰潩鍘�"
+ ]
+ },
+ {
+ "name": "鏋楄姖甯�",
+ "area": [
+ "宸村疁鍖�",
+ "宸ュ竷姹熻揪鍘�",
+ "绫虫灄鍘�",
+ "澧ㄨ劚鍘�",
+ "娉㈠瘑鍘�",
+ "瀵熼殔鍘�",
+ "鏈楀幙"
+ ]
+ },
+ {
+ "name": "灞卞崡甯�",
+ "area": [
+ "涔冧笢鍖�",
+ "鎵庡泭鍘�",
+ "璐″槑鍘�",
+ "妗戞棩鍘�",
+ "鐞肩粨鍘�",
+ "鏇叉澗鍘�",
+ "鎺編鍘�",
+ "娲涙墡鍘�",
+ "鍔犳煡鍘�",
+ "闅嗗瓙鍘�",
+ "閿欓偅鍘�",
+ "娴崱瀛愬幙"
+ ]
+ },
+ {
+ "name": "閭f洸甯�",
+ "area": [
+ "鑹插凹鍖�",
+ "鍢夐粠鍘�",
+ "姣斿鍘�",
+ "鑱傝崳鍘�",
+ "瀹夊鍘�",
+ "鐢虫墡鍘�",
+ "绱㈠幙",
+ "鐝垐鍘�",
+ "宸撮潚鍘�",
+ "灏肩帥鍘�",
+ "鍙屾箹鍘�"
+ ]
+ },
+ {
+ "name": "闃块噷鍦板尯",
+ "area": [
+ "鏅叞鍘�",
+ "鏈揪鍘�",
+ "鍣跺皵鍘�",
+ "鏃ュ湡鍘�",
+ "闈╁悏鍘�",
+ "鏀瑰垯鍘�",
+ "鎺嫟鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "鍐呰挋鍙よ嚜娌诲尯",
+ "city": [
+ {
+ "name": "鍛煎拰娴╃壒甯�",
+ "area": [
+ "鏂板煄鍖�",
+ "鍥炴皯鍖�",
+ "鐜夋硥鍖�",
+ "璧涚綍鍖�",
+ "鍦熼粯鐗瑰乏鏃�",
+ "鎵樺厠鎵樺幙",
+ "鍜屾灄鏍煎皵鍘�",
+ "娓呮按娌冲幙",
+ "姝﹀窛鍘�"
+ ]
+ },
+ {
+ "name": "鍖呭ご甯�",
+ "area": [
+ "涓滄渤鍖�",
+ "鏄嗛兘浠戝尯",
+ "闈掑北鍖�",
+ "鐭虫嫄鍖�",
+ "鐧戒簯閯傚崥鐭垮尯",
+ "涔濆師鍖�",
+ "鍦熼粯鐗瑰彸鏃�",
+ "鍥洪槼鍘�",
+ "杈惧皵缃曡寕鏄庡畨鑱斿悎鏃�"
+ ]
+ },
+ {
+ "name": "涔屾捣甯�",
+ "area": [
+ "娴峰媰婀惧尯",
+ "娴峰崡鍖�",
+ "涔岃揪鍖�"
+ ]
+ },
+ {
+ "name": "璧ゅ嘲甯�",
+ "area": [
+ "绾㈠北鍖�",
+ "鍏冨疂灞卞尯",
+ "鏉惧北鍖�",
+ "闃块瞾绉戝皵娌佹棗",
+ "宸存灄宸︽棗",
+ "宸存灄鍙虫棗",
+ "鏋楄タ鍘�",
+ "鍏嬩粈鍏嬭吘鏃�",
+ "缈佺墰鐗规棗",
+ "鍠�鍠囨瞾鏃�",
+ "瀹佸煄鍘�",
+ "鏁栨眽鏃�",
+ "鏂板煄鍖�"
+ ]
+ },
+ {
+ "name": "閫氳窘甯�",
+ "area": [
+ "绉戝皵娌佸尯",
+ "绉戝皵娌佸乏缈间腑鏃�",
+ "绉戝皵娌佸乏缈煎悗鏃�",
+ "寮�椴佸幙",
+ "搴撲鸡鏃�",
+ "濂堟浖鏃�",
+ "鎵庨瞾鐗规棗",
+ "闇嶆灄閮嫆甯�"
+ ]
+ },
+ {
+ "name": "閯傚皵澶氭柉甯�",
+ "area": [
+ "涓滆儨鍖�",
+ "搴峰反浠�鍖�",
+ "杈炬媺鐗规棗",
+ "鍑嗘牸灏旀棗",
+ "閯傛墭鍏嬪墠鏃�",
+ "閯傛墭鍏嬫棗",
+ "鏉敠鏃�",
+ "涔屽鏃�",
+ "浼婇噾闇嶆礇鏃�"
+ ]
+ },
+ {
+ "name": "鍛间鸡璐濆皵甯�",
+ "area": [
+ "娴锋媺灏斿尯",
+ "鎵庤祲璇哄皵鍖�",
+ "闃胯崳鏃�",
+ "鑾姏杈剧摝杈炬枴灏旀棌鑷不鏃�",
+ "閯備鸡鏄ヨ嚜娌绘棗",
+ "閯傛俯鍏嬫棌鑷不鏃�",
+ "闄堝反灏旇檸鏃�",
+ "鏂板反灏旇檸宸︽棗",
+ "鏂板反灏旇檸鍙虫棗",
+ "婊℃床閲屽競",
+ "鐗欏厠鐭冲競",
+ "鎵庡叞灞競",
+ "棰濆皵鍙ょ撼甯�",
+ "鏍规渤甯�"
+ ]
+ },
+ {
+ "name": "宸村溅娣栧皵甯�",
+ "area": [
+ "涓存渤鍖�",
+ "浜斿師鍘�",
+ "纾村彛鍘�",
+ "涔屾媺鐗瑰墠鏃�",
+ "涔屾媺鐗逛腑鏃�",
+ "涔屾媺鐗瑰悗鏃�",
+ "鏉敠鍚庢棗"
+ ]
+ },
+ {
+ "name": "涔屽叞瀵熷竷甯�",
+ "area": [
+ "闆嗗畞鍖�",
+ "鍗撹祫鍘�",
+ "鍖栧痉鍘�",
+ "鍟嗛兘鍘�",
+ "鍏村拰鍘�",
+ "鍑夊煄鍘�",
+ "瀵熷搱灏斿彸缈煎墠鏃�",
+ "瀵熷搱灏斿彸缈间腑鏃�",
+ "瀵熷搱灏斿彸缈煎悗鏃�",
+ "鍥涘瓙鐜嬫棗",
+ "涓伴晣甯�"
+ ]
+ },
+ {
+ "name": "鍏村畨鐩�",
+ "area": [
+ "涔屽叞娴╃壒甯�",
+ "闃垮皵灞卞競",
+ "绉戝皵娌佸彸缈煎墠鏃�",
+ "绉戝皵娌佸彸缈间腑鏃�",
+ "鎵庤祲鐗规棗",
+ "绐佹硥鍘�"
+ ]
+ },
+ {
+ "name": "閿℃灄閮嫆鐩�",
+ "area": [
+ "浜岃繛娴╃壒甯�",
+ "閿℃灄娴╃壒甯�",
+ "闃垮反鍢庢棗",
+ "鑻忓凹鐗瑰乏鏃�",
+ "鑻忓凹鐗瑰彸鏃�",
+ "涓滀箤鐝犵﹩娌佹棗",
+ "瑗夸箤鐝犵﹩娌佹棗",
+ "澶粏瀵烘棗",
+ "闀堕粍鏃�",
+ "姝i暥鐧芥棗",
+ "姝h摑鏃�",
+ "澶氫鸡鍘�"
+ ]
+ },
+ {
+ "name": "闃挎媺鍠勭洘",
+ "area": [
+ "闃挎媺鍠勫乏鏃�",
+ "闃挎媺鍠勫彸鏃�",
+ "棰濇祹绾虫棗"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "骞胯タ澹棌鑷不鍖�",
+ "city": [
+ {
+ "name": "鍗楀畞甯�",
+ "area": [
+ "鍏村畞鍖�",
+ "闈掔鍖�",
+ "姹熷崡鍖�",
+ "瑗夸埂濉樺尯",
+ "鑹簡鍖�",
+ "閭曞畞鍖�",
+ "姝﹂福鍖�",
+ "闅嗗畨鍘�",
+ "椹北鍘�",
+ "涓婃灄鍘�",
+ "瀹鹃槼鍘�",
+ "妯幙"
+ ]
+ },
+ {
+ "name": "鏌冲窞甯�",
+ "area": [
+ "鍩庝腑鍖�",
+ "楸煎嘲鍖�",
+ "鏌冲崡鍖�",
+ "鏌冲寳鍖�",
+ "鏌虫睙鍖�",
+ "鏌冲煄鍘�",
+ "楣垮鍘�",
+ "铻嶅畨鍘�",
+ "铻嶆按鑻楁棌鑷不鍘�",
+ "涓夋睙渚楁棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "妗傛灄甯�",
+ "area": [
+ "绉�宄板尯",
+ "鍙犲僵鍖�",
+ "璞″北鍖�",
+ "涓冩槦鍖�",
+ "闆佸北鍖�",
+ "涓存鍖�",
+ "闃虫湐鍘�",
+ "鐏靛窛鍘�",
+ "鍏ㄥ窞鍘�",
+ "鍏村畨鍘�",
+ "姘哥鍘�",
+ "鐏岄槼鍘�",
+ "榫欒儨鍚勬棌鑷不鍘�",
+ "璧勬簮鍘�",
+ "骞充箰鍘�",
+ "鑽旀郸甯�",
+ "鎭煄鐟舵棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "姊у窞甯�",
+ "area": [
+ "涓囩鍖�",
+ "闀挎床鍖�",
+ "榫欏湬鍖�",
+ "鑻嶆ⅶ鍘�",
+ "钘ゅ幙",
+ "钂欏北鍘�",
+ "宀戞邯甯�"
+ ]
+ },
+ {
+ "name": "鍖楁捣甯�",
+ "area": [
+ "娴峰煄鍖�",
+ "閾舵捣鍖�",
+ "閾佸北娓尯",
+ "鍚堟郸鍘�"
+ ]
+ },
+ {
+ "name": "闃插煄娓競",
+ "area": [
+ "娓彛鍖�",
+ "闃插煄鍖�",
+ "涓婃�濆幙",
+ "涓滃叴甯�"
+ ]
+ },
+ {
+ "name": "閽﹀窞甯�",
+ "area": [
+ "閽﹀崡鍖�",
+ "閽﹀寳鍖�",
+ "鐏靛北鍘�",
+ "娴﹀寳鍘�"
+ ]
+ },
+ {
+ "name": "璐垫腐甯�",
+ "area": [
+ "娓寳鍖�",
+ "娓崡鍖�",
+ "瑕冨鍖�",
+ "骞冲崡鍘�",
+ "妗傚钩甯�"
+ ]
+ },
+ {
+ "name": "鐜夋灄甯�",
+ "area": [
+ "鐜夊窞鍖�",
+ "绂忕坏鍖�",
+ "瀹瑰幙",
+ "闄嗗窛鍘�",
+ "鍗氱櫧鍘�",
+ "鍏翠笟鍘�",
+ "鍖楁祦甯�"
+ ]
+ },
+ {
+ "name": "鐧捐壊甯�",
+ "area": [
+ "鍙虫睙鍖�",
+ "鐢伴槼鍖�",
+ "鐢颁笢鍘�",
+ "寰蜂繚鍘�",
+ "閭e潯鍘�",
+ "鍑屼簯鍘�",
+ "涔愪笟鍘�",
+ "鐢版灄鍘�",
+ "瑗挎灄鍘�",
+ "闅嗘灄鍚勬棌鑷不鍘�",
+ "闈栬タ甯�",
+ "骞虫灉甯�"
+ ]
+ },
+ {
+ "name": "璐哄窞甯�",
+ "area": [
+ "鍏鍖�",
+ "骞虫鍖�",
+ "鏄钩鍘�",
+ "閽熷北鍘�",
+ "瀵屽窛鐟舵棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "娌虫睜甯�",
+ "area": [
+ "閲戝煄姹熷尯",
+ "瀹滃窞鍖�",
+ "鍗椾腹鍘�",
+ "澶╁敞鍘�",
+ "鍑ゅ北鍘�",
+ "涓滃叞鍘�",
+ "缃楀煄浠浆鏃忚嚜娌诲幙",
+ "鐜睙姣涘崡鏃忚嚜娌诲幙",
+ "宸撮┈鐟舵棌鑷不鍘�",
+ "閮藉畨鐟舵棌鑷不鍘�",
+ "澶у寲鐟舵棌鑷不鍘�"
+ ]
+ },
+ {
+ "name": "鏉ュ甯�",
+ "area": [
+ "鍏村鍖�",
+ "蹇诲煄鍘�",
+ "璞″窞鍘�",
+ "姝﹀鍘�",
+ "閲戠鐟舵棌鑷不鍘�",
+ "鍚堝北甯�"
+ ]
+ },
+ {
+ "name": "宕囧乏甯�",
+ "area": [
+ "姹熷窞鍖�",
+ "鎵剁互鍘�",
+ "瀹佹槑鍘�",
+ "榫欏窞鍘�",
+ "澶ф柊鍘�",
+ "澶╃瓑鍘�",
+ "鍑ゥ甯�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "瀹佸鍥炴棌鑷不鍖�",
+ "city": [
+ {
+ "name": "閾跺窛甯�",
+ "area": [
+ "鍏村簡鍖�",
+ "瑗垮鍖�",
+ "閲戝嚖鍖�",
+ "姘稿畞鍘�",
+ "璐哄叞鍘�",
+ "鐏垫甯�"
+ ]
+ },
+ {
+ "name": "鐭冲槾灞卞競",
+ "area": [
+ "澶ф鍙e尯",
+ "鎯犲啘鍖�",
+ "骞崇綏鍘�"
+ ]
+ },
+ {
+ "name": "鍚村繝甯�",
+ "area": [
+ "鍒╅�氬尯",
+ "绾㈠鍫″尯",
+ "鐩愭睜鍘�",
+ "鍚屽績鍘�",
+ "闈掗摐宄″競"
+ ]
+ },
+ {
+ "name": "鍥哄師甯�",
+ "area": [
+ "鍘熷窞鍖�",
+ "瑗垮悏鍘�",
+ "闅嗗痉鍘�",
+ "娉炬簮鍘�",
+ "褰槼鍘�"
+ ]
+ },
+ {
+ "name": "涓崼甯�",
+ "area": [
+ "娌欏潯澶村尯",
+ "涓畞鍘�",
+ "娴峰師鍘�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "鏂扮枂缁村惥灏旇嚜娌诲尯",
+ "city": [
+ {
+ "name": "涔岄瞾鏈ㄩ綈甯�",
+ "area": [
+ "澶╁北鍖�",
+ "娌欎緷宸村厠鍖�",
+ "鏂板競鍖�",
+ "姘寸(娌熷尯",
+ "澶村悲娌冲尯",
+ "杈惧潅鍩庡尯",
+ "绫充笢鍖�",
+ "涔岄瞾鏈ㄩ綈鍘�"
+ ]
+ },
+ {
+ "name": "鍏嬫媺鐜涗緷甯�",
+ "area": [
+ "鐙北瀛愬尯",
+ "鍏嬫媺鐜涗緷鍖�",
+ "鐧界⒈婊╁尯",
+ "涔屽皵绂惧尯"
+ ]
+ },
+ {
+ "name": "鍚愰瞾鐣競",
+ "area": [
+ "楂樻槍鍖�",
+ "閯杽鍘�",
+ "鎵樺厠閫婂幙"
+ ]
+ },
+ {
+ "name": "鍝堝瘑甯�",
+ "area": [
+ "浼婂窞鍖�",
+ "宸撮噷鍧ゅ搱钀ㄥ厠鑷不鍘�",
+ "浼婂惥鍘�"
+ ]
+ },
+ {
+ "name": "鏄屽悏鍥炴棌鑷不宸�",
+ "area": [
+ "鏄屽悏甯�",
+ "闃滃悍甯�",
+ "鍛煎浘澹佸幙",
+ "鐜涚撼鏂幙",
+ "濂囧彴鍘�",
+ "鍚夋湪钀ㄥ皵鍘�",
+ "鏈ㄥ瀿鍝堣惃鍏嬭嚜娌诲幙"
+ ]
+ },
+ {
+ "name": "鍗氬皵濉旀媺钂欏彜鑷不宸�",
+ "area": [
+ "鍗氫箰甯�",
+ "闃挎媺灞卞彛甯�",
+ "绮炬渤鍘�",
+ "娓╂硥鍘�"
+ ]
+ },
+ {
+ "name": "宸撮煶閮钂欏彜鑷不宸�",
+ "area": [
+ "搴撳皵鍕掑競",
+ "杞彴鍘�",
+ "灏夌妬鍘�",
+ "鑻ョ緦鍘�",
+ "涓旀湯鍘�",
+ "鐒夎�嗗洖鏃忚嚜娌诲幙",
+ "鍜岄潤鍘�",
+ "鍜岀鍘�",
+ "鍗氭箹鍘�"
+ ]
+ },
+ {
+ "name": "闃垮厠鑻忓湴鍖�",
+ "area": [
+ "闃垮厠鑻忓競",
+ "搴撹溅甯�",
+ "娓╁鍘�",
+ "娌欓泤鍘�",
+ "鏂板拰鍘�",
+ "鎷滃煄鍘�",
+ "涔屼粈鍘�",
+ "闃跨摝鎻愬幙",
+ "鏌潽鍘�"
+ ]
+ },
+ {
+ "name": "鍏嬪瓬鍕掕嫃鏌皵鍏嬪瓬鑷不宸�",
+ "area": [
+ "闃垮浘浠�甯�",
+ "闃垮厠闄跺幙",
+ "闃垮悎濂囧幙",
+ "涔屾伆鍘�"
+ ]
+ },
+ {
+ "name": "鍠�浠�鍦板尯",
+ "area": [
+ "鍠�浠�甯�",
+ "鐤忛檮鍘�",
+ "鐤忓嫆鍘�",
+ "鑻卞悏娌欏幙",
+ "娉芥櫘鍘�",
+ "鑾庤溅鍘�",
+ "鍙跺煄鍘�",
+ "楹︾洊鎻愬幙",
+ "宀虫櫘婀栧幙",
+ "浼藉笀鍘�",
+ "宸存鍘�",
+ "濉斾粈搴撳皵骞插鍚夊厠鑷不鍘�"
+ ]
+ },
+ {
+ "name": "鍜岀敯鍦板尯",
+ "area": [
+ "鍜岀敯甯�",
+ "鍜岀敯鍘�",
+ "澧ㄧ帀鍘�",
+ "鐨北鍘�",
+ "娲涙郸鍘�",
+ "绛栧嫆鍘�",
+ "浜庣敯鍘�",
+ "姘戜赴鍘�"
+ ]
+ },
+ {
+ "name": "浼婄妬鍝堣惃鍏嬭嚜娌诲窞",
+ "area": [
+ "浼婂畞甯�",
+ "濂庡悲甯�",
+ "闇嶅皵鏋滄柉甯�",
+ "浼婂畞鍘�",
+ "瀵熷竷鏌ュ皵閿′集鑷不鍘�",
+ "闇嶅煄鍘�",
+ "宸╃暀鍘�",
+ "鏂版簮鍘�",
+ "鏄嫃鍘�",
+ "鐗瑰厠鏂幙",
+ "灏煎嫆鍏嬪幙"
+ ]
+ },
+ {
+ "name": "濉斿煄鍦板尯",
+ "area": [
+ "濉斿煄甯�",
+ "涔岃嫃甯�",
+ "棰濇晱鍘�",
+ "娌欐咕鍘�",
+ "鎵橀噷鍘�",
+ "瑁曟皯鍘�",
+ "鍜屽竷鍏嬭禌灏旇挋鍙よ嚜娌诲幙"
+ ]
+ },
+ {
+ "name": "闃垮嫆娉板湴鍖�",
+ "area": [
+ "闃垮嫆娉板競",
+ "甯冨皵娲ュ幙",
+ "瀵岃暣鍘�",
+ "绂忔捣鍘�",
+ "鍝堝反娌冲幙",
+ "闈掓渤鍘�",
+ "鍚夋湪涔冨幙"
+ ]
+ },
+ {
+ "name": "鐭虫渤瀛愬競",
+ "area": [
+ "鏂板煄琛楅亾",
+ "鍚戦槼琛楅亾",
+ "绾㈠北琛楅亾",
+ "鑰佽琛楅亾",
+ "涓滃煄琛楅亾",
+ "鍖楁硥闀�",
+ "鐭虫渤瀛愰晣"
+ ]
+ },
+ {
+ "name": "闃挎媺灏斿競",
+ "area": [
+ "骞哥璺閬�",
+ "閲戦摱宸濊矾琛楅亾",
+ "闈掓澗璺閬�",
+ "鍗楀彛琛楅亾",
+ "鎵樺杸渚濅埂",
+ "涓�鍥㈤噾閾跺窛闀�",
+ "浜屽洟鏂颁簳瀛愰晣",
+ "涓夊洟鐢樻硥闀�",
+ "鍥涘洟姘稿畞闀�",
+ "浜斿洟娌欐渤闀�",
+ "鍏洟鍙屽煄闀�",
+ "涓冨洟鐜涙哗闀�",
+ "鍏洟濉旈棬闀�",
+ "涔濆洟姊ㄨ姳闀�",
+ "鍗佸洟鏄屽畨闀�",
+ "鍗佷竴鍥㈣姳妗ラ晣",
+ "鍗佷簩鍥㈠鍗楅晣",
+ "鍗佷笁鍥㈠垢绂忛晣",
+ "鍗佸洓鍥㈤噾鏉ㄩ晣",
+ "鍗佷簲鍥�",
+ "鍗佸叚鍥㈡柊寮�宀晣"
+ ]
+ },
+ {
+ "name": "鍥炬湪鑸掑厠甯�",
+ "area": [
+ "閿︾唬琛楅亾",
+ "鍓嶆捣琛楅亾",
+ "姘稿畨鍧濊閬�",
+ "鍥涘崄涓�鍥㈣崏婀栭晣",
+ "鍥涘崄浜屽洟榫欏彛闀�",
+ "鍥涘崄鍥涘洟姘稿畨闀�",
+ "鍥涘崄浜斿洟鍓嶆捣闀�",
+ "鍥涘崄鍏洟姘稿叴闀�",
+ "鍥涘崄鍏洟娌充笢闀�",
+ "鍥涘崄涔濆洟娴峰畨闀�",
+ "浜斿崄鍥㈠娌抽晣",
+ "浜斿崄涓�鍥㈠攼椹块晣",
+ "浜斿崄涓夊洟閲戣儭鏉ㄩ晣",
+ "浜斿崄鍥涘洟鍏村畨闀�",
+ "浼藉笀鎬诲満鍢夊拰闀�"
+ ]
+ },
+ {
+ "name": "浜斿娓犲競",
+ "area": [
+ "鍐涘灕璺閬�",
+ "闈掓箹璺閬�",
+ "浜烘皯璺閬�",
+ "涓�闆朵簩鍥㈡ⅶ妗愰晣",
+ "涓�闆朵笁鍥㈣敗瀹舵箹闀�"
+ ]
+ },
+ {
+ "name": "鍖楀悲甯�",
+ "area": [
+ "澶╅獎琛楅亾",
+ "榫欑枂琛楅亾",
+ "鍐涘灕琛楅亾",
+ "鍖楀悲闀�",
+ "涓�鍏笁鍥㈠弻娓犻晣",
+ "涓�鍏竷鍥赴搴嗛晣",
+ "涓�鍏叓鍥㈡捣宸濋晣"
+ ]
+ },
+ {
+ "name": "閾侀棬鍏冲競",
+ "area": [
+ "杩庡琛楅亾",
+ "浜屽崄浜屽洟娌崇晹闀�",
+ "浜屽崄鍥涘洟楂樻ˉ闀�",
+ "浜屽崄涓冨洟澶╂箹闀�",
+ "浜屽崄鍏洟鍗氬彜鍏堕晣",
+ "涓夊崄鍥㈠弻涓伴晣",
+ "涓夊崄鍏洟绫冲叞闀�",
+ "涓夊崄涓冨洟閲戝北闀�",
+ "涓夊崄鍏洟鍗楀悲闀�",
+ "浜屼簩涓夊洟寮�娉介晣"
+ ]
+ },
+ {
+ "name": "鍙屾渤甯�",
+ "area": [
+ "鍏崄涓�鍥㈠弻妗ラ晣",
+ "鍏崄鍥涘洟鐭冲唱闀�",
+ "鍏崄浜斿洟",
+ "鍏崄鍏洟鍗氭渤闀�",
+ "鍏崄涔濆洟",
+ "涔濆崄鍥㈠弻涔愰晣"
+ ]
+ },
+ {
+ "name": "鍙厠杈炬媺甯�",
+ "area": [
+ "鍏崄涓夊洟姒嗘爲搴勯晣",
+ "鍏崄鍥涘洟鑻囨箹闀�",
+ "鍏崄鍏洟",
+ "鍏崄涓冨洟",
+ "鍏崄鍏洟闀夸赴闀�"
+ ]
+ },
+ {
+ "name": "鏄嗙帀甯�",
+ "area": [
+ "鍥涘崄涓冨洟鑰佸叺闀�",
+ "鐨北鍐滃満鏄嗘硥闀�",
+ "涓�鐗у満鏄嗙墽闀�",
+ "浜屼簩鍥涘洟",
+ "浜屼簩浜斿洟鐜夋硥闀�"
+ ]
+ },
+ {
+ "name": "鑳℃潹娌冲競",
+ "area": [
+ "涓�浜屼笁鍥�",
+ "涓�浜屽洓鍥�",
+ "涓�浜屼簲鍥�",
+ "涓�浜屽叚鍥�",
+ "涓�浜屼竷鍥�",
+ "涓�浜屽叓鍥�",
+ "涓�浜屼節鍥�",
+ "涓�涓夐浂鍥�",
+ "涓�涓変竴鍥�",
+ "涓�涓変竷鍥�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "棣欐腐鐗瑰埆琛屾斂鍖�",
+ "city": [
+ {
+ "name": "棣欐腐鐗瑰埆琛屾斂鍖�",
+ "area": [
+ "涓タ鍖�",
+ "婀句粩鍖�",
+ "涓滃尯",
+ "鍗楀尯",
+ "娌瑰皷鏃哄尯",
+ "娣辨按鍩楀尯",
+ "涔濋緳鍩庡尯",
+ "榛勫ぇ浠欏尯",
+ "瑙傚鍖�",
+ "鍖楀尯",
+ "澶у煍鍖�",
+ "娌欑敯鍖�",
+ "瑗胯础鍖�",
+ "鑽冩咕鍖�",
+ "灞棬鍖�",
+ "鍏冩湕鍖�",
+ "钁甸潚鍖�",
+ "绂诲矝鍖�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "婢抽棬鐗瑰埆琛屾斂鍖�",
+ "city": [
+ {
+ "name": "婢抽棬鐗瑰埆琛屾斂鍖�",
+ "area": [
+ "鑺卞湴鐜涘爞鍖�",
+ "鍦e畨澶氬凹鍫傚尯",
+ "澶у爞鍖�",
+ "鏈涘痉鍫傚尯",
+ "椋庨『鍫傚尯",
+ "鍢夋ā鍫傚尯",
+ "鍦f柟娴庡悇鍫傚尯",
+ "璺肮鍩�"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "鍙版咕鐪�",
+ "city": [
+ {
+ "name": "鍙板寳甯�",
+ "area": [
+ "涓鍖�",
+ "澶у悓鍖�",
+ "涓北鍖�",
+ "涓囧崕鍖�",
+ "淇′箟鍖�",
+ "鏉惧北鍖�",
+ "澶у畨鍖�",
+ "鍗楁腐鍖�",
+ "鍖楁姇鍖�",
+ "鍐呮箹鍖�",
+ "澹灄鍖�",
+ "鏂囧北鍖�"
+ ]
+ },
+ {
+ "name": "鏂板寳甯�",
+ "area": [
+ "鏉挎ˉ鍖�",
+ "鍦熷煄鍖�",
+ "鏂板簞鍖�",
+ "鏂板簵鍖�",
+ "娣卞潙鍖�",
+ "鐭崇鍖�",
+ "鍧灄鍖�",
+ "涔屾潵鍖�",
+ "浜旇偂鍖�",
+ "鍏噷鍖�",
+ "鏋楀彛鍖�",
+ "娣℃按鍖�",
+ "涓拰鍖�",
+ "姘稿拰鍖�",
+ "涓夐噸鍖�",
+ "鑺︽床鍖�",
+ "娉板北鍖�",
+ "鏍戞灄鍖�",
+ "鑾烘瓕鍖�",
+ "涓夊场鍖�",
+ "姹愭鍖�",
+ "閲戝北鍖�",
+ "涓囬噷鍖�",
+ "涓夎姖鍖�",
+ "鐭抽棬鍖�",
+ "鐟炶姵鍖�",
+ "璐″鍖�",
+ "鍙屾邯鍖�",
+ "骞虫邯鍖�"
+ ]
+ },
+ {
+ "name": "妗冨洯甯�",
+ "area": [
+ "妗冨洯鍖�",
+ "涓潨鍖�",
+ "骞抽晣鍖�",
+ "鍏痉鍖�",
+ "鏉ㄦ鍖�",
+ "鑺︾鍖�",
+ "澶ф邯鍖�",
+ "榫欐江鍖�",
+ "榫熷北鍖�",
+ "澶у洯鍖�",
+ "瑙傞煶鍖�",
+ "鏂板眿鍖�",
+ "澶嶅叴鍖�"
+ ]
+ },
+ {
+ "name": "鍙颁腑甯�",
+ "area": [
+ "涓尯",
+ "涓滃尯",
+ "瑗垮尯",
+ "鍗楀尯",
+ "鍖楀尯",
+ "瑗垮悲鍖�",
+ "鍗楀悲鍖�",
+ "鍖楀悲鍖�",
+ "涓板師鍖�",
+ "澶ч噷鍖�",
+ "澶钩鍖�",
+ "涓滃娍鍖�",
+ "澶х敳鍖�",
+ "娓呮按鍖�",
+ "娌欓箍鍖�",
+ "姊ф爾鍖�",
+ "鍚庨噷鍖�",
+ "绁炲唸鍖�",
+ "娼瓙鍖�",
+ "澶ч泤鍖�",
+ "鏂扮ぞ鍖�",
+ "鐭冲唸鍖�",
+ "澶栧煍鍖�",
+ "澶у畨鍖�",
+ "涔屾棩鍖�",
+ "澶ц倸鍖�",
+ "榫欎簳鍖�",
+ "闆惧嘲鍖�",
+ "鍜屽钩鍖�"
+ ]
+ },
+ {
+ "name": "鍙板崡甯�",
+ "area": [
+ "涓タ鍖�",
+ "涓滃尯",
+ "鍗楀尯",
+ "鍖楀尯",
+ "瀹夊钩鍖�",
+ "瀹夊崡鍖�",
+ "姘稿悍鍖�",
+ "褰掍粊鍖�",
+ "鏂板寲鍖�",
+ "宸﹂晣鍖�",
+ "鐜変簳鍖�",
+ "妤犺タ鍖�",
+ "鍗楀寲鍖�",
+ "浠佸痉鍖�",
+ "鍏冲簷鍖�",
+ "榫欏磶鍖�",
+ "瀹樼敯鍖�",
+ "楹昏眴鍖�",
+ "浣抽噷鍖�",
+ "瑗挎腐鍖�",
+ "涓冭偂鍖�",
+ "灏嗗啗鍖�",
+ "瀛︾敳鍖�",
+ "鍖楅棬鍖�",
+ "鏂拌惀鍖�",
+ "鍚庡鍖�",
+ "鐧芥渤鍖�",
+ "涓滃北鍖�",
+ "鍏敳鍖�",
+ "涓嬭惀鍖�",
+ "鏌宠惀鍖�",
+ "鐩愭按鍖�",
+ "鍠勫寲鍖�",
+ "澶у唴鍖�",
+ "灞变笂鍖�",
+ "鏂板競鍖�",
+ "瀹夊畾鍖�"
+ ]
+ },
+ {
+ "name": "楂橀泟甯�",
+ "area": [
+ "妤犳鍖�",
+ "宸﹁惀鍖�",
+ "榧撳北鍖�",
+ "涓夋皯鍖�",
+ "鐩愬煏鍖�",
+ "鍓嶉噾鍖�",
+ "鏂板叴鍖鸿嫇闆呭尯",
+ "鍓嶉晣鍖�",
+ "鏃楁触鍖�",
+ "灏忔腐鍖�",
+ "鍑ゅ北鍖�",
+ "澶у鍖�",
+ "楦熸澗鍖�",
+ "鏋楀洯鍖�",
+ "浠佹鍖�",
+ "澶ф爲鍖�",
+ "澶хぞ鍖�",
+ "鍐堝北鍖�",
+ "璺鍖�",
+ "妗ュご鍖�",
+ "姊撳畼鍖�",
+ "寮ラ檧鍖�",
+ "姘稿畨鍖�",
+ "鐕曞发鍖�",
+ "闃胯幉鍖�",
+ "鑼勮悾鍖�",
+ "婀栧唴鍖�",
+ "鏃楀北鍖�",
+ "缇庢祿鍖�",
+ "鍐呴棬鍖�",
+ "鏉夋灄鍖�",
+ "鐢蹭粰鍖�",
+ "鍏緹鍖�",
+ "鑼傛灄鍖�",
+ "妗冩簮鍖�",
+ "閭g帥澶忓尯"
+ ]
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app_base/src/main/res/raw/welcome.json b/app_base/src/main/res/raw/welcome.json
new file mode 100644
index 0000000..0347258
--- /dev/null
+++ b/app_base/src/main/res/raw/welcome.json
@@ -0,0 +1 @@
+{"v":"5.5.2","fr":30,"ip":0,"op":136,"w":976,"h":671,"nm":"Hi Animation","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"h path 2 Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[987.04,469.648,0],"ix":2},"a":{"a":0,"k":[154.5,299.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,54.658]],"v":[[-99.143,-243.983],[-99.574,119.373],[-98.794,145.015]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.207843137255,0.517647058824,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.325,299.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[96]},{"i":{"x":[0.36],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":41,"s":[0]},{"i":{"x":[0.627],"y":[-2.176]},"o":{"x":[0.289],"y":[0]},"t":60,"s":[32]},{"i":{"x":[0.693],"y":[0.768]},"o":{"x":[0.281],"y":[-0.012]},"t":97,"s":[32.748]},{"t":105,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[98]},{"i":{"x":[0.36],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":41,"s":[55.4]},{"i":{"x":[0.627],"y":[-2.176]},"o":{"x":[0.289],"y":[0]},"t":60,"s":[94.4]},{"i":{"x":[0.693],"y":[0.768]},"o":{"x":[0.281],"y":[-0.012]},"t":97,"s":[96.608]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"h path 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[749.5,449.5,0],"ix":2},"a":{"a":0,"k":[154.5,299.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-54.658,0],[0,54.658]],"o":[[0,0],[0,0],[0,54.658],[54.66,0],[0,0]],"v":[[-99.143,-243.983],[-99.143,142.703],[-98.794,145.015],[0.174,243.983],[99.143,145.015]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.325,299.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[96]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.64],"y":[0]},"t":60,"s":[0]},{"t":97,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[98]},{"i":{"x":[0.675],"y":[-2.679]},"o":{"x":[0.342],"y":[0]},"t":60,"s":[55.4]},{"i":{"x":[0.675],"y":[0.696]},"o":{"x":[0.37],"y":[-0.022]},"t":97,"s":[56.806]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"h path 1 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[749.5,447.5,0],"ix":2},"a":{"a":0,"k":[154.5,202.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[54.659,0],[0,-54.658],[0,0]],"o":[[0,0],[0,0],[0,-54.658],[-54.658,0],[0,0],[0,0]],"v":[[98.969,147.132],[98.969,51.627],[98.969,51.868],[-0.001,-47.101],[-98.969,51.868],[-98.969,-147.132]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.5,202.632],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.74],"y":[1]},"o":{"x":[0.4],"y":[0.8]},"t":0,"s":[68]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.114],"y":[0.292]},"t":15,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.26],"y":[0]},"t":64,"s":[0]},{"t":97,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.74],"y":[1]},"o":{"x":[0.4],"y":[0.8]},"t":0,"s":[65]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.114],"y":[0.399]},"t":15,"s":[100]},{"i":{"x":[0.657],"y":[-9.391]},"o":{"x":[0.323],"y":[0]},"t":64,"s":[67.4]},{"i":{"x":[0.683],"y":[0.716]},"o":{"x":[0.281],"y":[-0.009]},"t":97,"s":[67.703]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Hi files","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[473.436,364,0],"ix":2},"a":{"a":0,"k":[750,500,0],"ix":1},"s":{"a":0,"k":[108,108,100],"ix":6}},"ao":0,"w":1500,"h":1000,"ip":29,"op":136,"st":29,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.504},"t":3,"s":[498.378,416.11,0],"to":[0,7.167,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.609},"o":{"x":0.54,"y":0},"t":12,"s":[498.378,459.11,0],"to":[0,0,0],"ti":[1.844,44.19,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.54,"y":0},"t":19,"s":[498.378,416.11,0],"to":[19.917,-49.917,0],"ti":[-20.594,42.719,0]},{"t":35,"s":[621.94,159.798,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.335,1.335,0]},"t":21,"s":[55.407,55.407,100]},{"t":35,"s":[10.1,10.1,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.845751594095,0.012161032359,0.012161032359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":130,"st":3,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.504},"t":4,"s":[521.864,548.108,0],"to":[0,9,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.608},"o":{"x":0.54,"y":0},"t":13,"s":[521.864,602.108,0],"to":[0,0,0],"ti":[2.053,34.822,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.301,"y":1},"t":20,"s":[521.864,548.108,0],"to":[9.4,-19.933,0],"ti":[-9.4,10.933,0]},{"t":35,"s":[578.264,482.508,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[53,53,100]},{"t":35,"s":[11,11,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":4,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.999,"y":0.496},"o":{"x":0.001,"y":0.504},"t":6,"s":[575.274,318.062,0],"to":[0,6.833,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.619},"o":{"x":0.54,"y":0},"t":15,"s":[575.274,359.062,0],"to":[0,0,0],"ti":[-9.167,15.167,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.27,"y":1},"t":22,"s":[575.274,318.062,0],"to":[9.167,-15.167,0],"ti":[-9.167,8.333,0]},{"t":35,"s":[630.274,268.062,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[35,35,100]},{"t":35,"s":[12.2,12.2,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.182193397073,0.579084927428,0.000757008265,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":6,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.56},"t":0,"s":[324.44,338.069,0],"to":[0,5.167,0],"ti":[-0.191,0.573,0]},{"i":{"x":0.999,"y":0.496},"o":{"x":0.54,"y":0},"t":10,"s":[324.44,369.069,0],"to":[0.191,-0.573,0],"ti":[-1.576,28.726,0]},{"i":{"x":0.999,"y":0.953},"o":{"x":0.54,"y":0},"t":20,"s":[325.585,334.633,0],"to":[49.678,18.231,0],"ti":[-49.487,-23.97,0]},{"t":29,"s":[622.507,478.452,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[100,100,100]},{"t":35,"s":[10.5,10.5,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.207843137255,0.517647058824,0.964705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
--
Gitblit v1.9.1