Linjiajia
2023-03-20 25b98735c5c0cbe40a07ae91a9fb2b204d9166b7
登录和家大事记
17个文件已修改
46个文件已添加
9 文件已重命名
2806 ■■■■■ 已修改文件
.idea/deploymentTargetDropDown.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/misc.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragmentViewModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragmentViewModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivityViewModel.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/main/MainActivity.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/main/MainViewModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragmentViewModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/bg_login_home.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/bg_login_zhang.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_delete.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_function_default.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_function_selected.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_home_default.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_home_selected.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_modify.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_password_invisable.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_personal_center_default.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_personal_center_selected.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_play.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/img_lotus.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/img_sakura.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/bg_login_home.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/bg_login_zhang.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_delete.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_function_default.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_function_selected.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_home_default.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_home_selected.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_modify.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_password_invisable.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_personal_center_default.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_personal_center_selected.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_play.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/img_lotus.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/img_sakura.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/selector_bottom_navigation_function.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/selector_bottom_navigation_home.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/selector_bottom_navigation_personal_center.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/shape_ff093878_10_solid.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/shape_ffd9d9d9_8_stroke.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_family_memorabilia.xml 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_login.xml 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_main.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_function.xml 548 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_home.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_personal_center.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_family_memorabilia.xml 283 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/colors.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/base/adapter/BaseVp2FragmentAdapter.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/utils/ScreenSizeUtils.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/widget/CustomScrollView.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/widget/CustomTextView.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/widget/LinearItemDecoration.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/res/values-sw1440dp/dimens.xml 419 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/res/values-sw360dp/dimens.xml 419 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/res/values/arrts.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
build.gradle 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screenMatch.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/deploymentTargetDropDown.xml
New file
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="deploymentTargetDropDown">
    <targetSelectedWithDropDown>
      <Target>
        <type value="QUICK_BOOT_TARGET" />
        <deviceKey>
          <Key>
            <type value="VIRTUAL_DEVICE_PATH" />
            <value value="D:\software\Android\.android\avd\Pixel_5_API_30.avd" />
          </Key>
        </deviceKey>
      </Target>
    </targetSelectedWithDropDown>
    <timeTargetWasSelectedWithDropDown value="2023-03-20T10:41:31.976173300Z" />
  </component>
</project>
.idea/misc.xml
@@ -7,4 +7,11 @@
  <component name="ProjectType">
    <option name="id" value="Android" />
  </component>
  <component name="VisualizationToolProject">
    <option name="state">
      <ProjectState>
        <option name="scale" value="0.152" />
      </ProjectState>
    </option>
  </component>
</project>
app/build.gradle
@@ -41,6 +41,7 @@
    }
    buildFeatures{
        dataBinding = true
        viewBinding true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
@@ -52,6 +53,10 @@
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    implementation 'androidx.annotation:annotation:1.3.0'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
app/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:name=".MyApplication"
@@ -11,36 +11,42 @@
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:maxAspectRatio="2.4"
        android:networkSecurityConfig="@xml/network_security_config"
        android:resizeableActivity="true"
        android:supportsRtl="true"
        android:theme="@style/Theme.Zhangshi_app_android"
        android:usesCleartextTraffic="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:resizeableActivity="true"
        android:maxAspectRatio="2.4"
        tools:targetApi="31" >
        <!--沉浸式状态栏全面屏-->
        tools:targetApi="31">
        <!-- 沉浸式状态栏全面屏 -->
        <meta-data
            android:name="android.max_aspect"
            android:value="2.4" />
        <!--适配华为(huawei)刘海屏-->
            android:value="2.4" /> <!-- 适配华为(huawei)刘海屏 -->
        <meta-data
            android:name="android.notch_support"
            android:value="true"/>
        <!--适配小米(xiaomi)刘海屏-->
            android:value="true" /> <!-- 适配小米(xiaomi)刘海屏 -->
        <meta-data
            android:name="notch.config"
            android:value="portrait|landscape" />
        <activity
            android:name=".module.main.MainActivity"
            android:name=".ui.main.MainActivity"
            android:exported="true">
        </activity>
        <activity
            android:name=".ui.login.LoginActivity"
            android:exported="true"
            android:screenOrientation="portrait"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.function.FamilyMemorabiliaActivity"
            android:exported="false" />
    </application>
</manifest>
app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java
New file
@@ -0,0 +1,102 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
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.ItemFamilyMemorabiliaBinding;
/**
 * @author Ljj
 * @date 2023.03.18. 10:27
 * @desc 家大事记 recyclerView 的 adapter
 */
public class FamilyMemorabiliaRvAdapter extends BaseRVAdapter<FamilyMemorabiliaBean, ItemFamilyMemorabiliaBinding, FamilyMemorabiliaRvAdapter.MyViewHolder> {
    public FamilyMemorabiliaRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_family_memorabilia;
    }
    @Override
    protected MyViewHolder getViewHolder(ItemFamilyMemorabiliaBinding itemBind) {
        return new MyViewHolder(itemBind);
    }
    @Override
    protected void onBind(MyViewHolder holder, int 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;
                }
            }
        });
    }
    public static class MyViewHolder extends BaseViewHolder<ItemFamilyMemorabiliaBinding>{
        private boolean isExpended;
        public MyViewHolder(ItemFamilyMemorabiliaBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/FamilyMemorabiliaBean.java
New file
@@ -0,0 +1,9 @@
package com.application.zhangshi_app_android.bean;
/**
 * @author Ljj
 * @date 2023.03.18. 10:29
 * @desc 家大事记 bean 类
 */
public class FamilyMemorabiliaBean {
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java
New file
@@ -0,0 +1,58 @@
package com.application.zhangshi_app_android.ui.function;
import com.android.app_base.base.view.BaseActivity;
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.FamilyMemorabiliaRvAdapter;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaBinding;
/**
 * @author Ljj
 * @date 2023.03.18. 10:00
 * @desc 家大事记 Activity
 */
public class FamilyMemorabiliaActivity extends BaseActivity<ActivityFamilyMemorabiliaBinding,FamilyMemorabiliaActivityViewModel> {
    FamilyMemorabiliaRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_family_memorabilia;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new FamilyMemorabiliaRvAdapter(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);
    }
    @Override
    public void initData() {
        adapter.addItem(new FamilyMemorabiliaBean());
        adapter.addItem(new FamilyMemorabiliaBean());
        adapter.addItem(new FamilyMemorabiliaBean());
        adapter.addItem(new FamilyMemorabiliaBean());
        adapter.addItem(new FamilyMemorabiliaBean());
    }
    @Override
    public void initLiveDataObserve() {
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
New file
@@ -0,0 +1,25 @@
package com.application.zhangshi_app_android.ui.function;
import android.app.Application;
import androidx.annotation.NonNull;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.03.18. 10:00
 * @desc 家大事记 viewmodel
 */
public class FamilyMemorabiliaActivityViewModel extends BaseViewModel<DataRepository> {
    public FamilyMemorabiliaActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
File was renamed from app/src/main/java/com/application/zhangshi_app_android/module/function/FunctionFragment.java
@@ -1,8 +1,10 @@
package com.application.zhangshi_app_android.module.function;
package com.application.zhangshi_app_android.ui.function;
import android.os.Bundle;
import android.view.View;
import com.android.app_base.base.view.BaseFragment;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.databinding.FragmentFunctionBinding;
@@ -39,7 +41,12 @@
    @Override
    protected void initView() {
        binding.layoutFamilyMemorabilia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AppManager.getAppManager().startActivity(FamilyMemorabiliaActivity.class);
            }
        });
    }
    @Override
@@ -56,4 +63,6 @@
    protected boolean isStatusBarImmersionEnabled() {
        return true;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragmentViewModel.java
File was renamed from app/src/main/java/com/application/zhangshi_app_android/module/function/FunctionFragmentViewModel.java
@@ -1,4 +1,4 @@
package com.application.zhangshi_app_android.module.function;
package com.application.zhangshi_app_android.ui.function;
import android.app.Application;
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragment.java
File was renamed from app/src/main/java/com/application/zhangshi_app_android/module/home/HomeFragment.java
@@ -1,4 +1,4 @@
package com.application.zhangshi_app_android.module.home;
package com.application.zhangshi_app_android.ui.home;
import android.os.Bundle;
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragmentViewModel.java
File was renamed from app/src/main/java/com/application/zhangshi_app_android/module/home/HomeFragmentViewModel.java
@@ -1,4 +1,4 @@
package com.application.zhangshi_app_android.module.home;
package com.application.zhangshi_app_android.ui.home;
import android.app.Application;
app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivity.java
New file
@@ -0,0 +1,63 @@
package com.application.zhangshi_app_android.ui.login;
import android.view.View;
import androidx.annotation.NonNull;
import com.android.app_base.base.view.BaseActivity;
import com.android.app_base.manager.AppManager;
import com.android.app_base.utils.ScreenSizeUtils;
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.gyf.immersionbar.ImmersionBar;
/**
 * @author Ljj
 * @date 2023.03.18. 17:44
 * @desc 登录注册 Activity
 */
public class LoginActivity extends BaseActivity<ActivityLoginBinding,LoginActivityViewModel> {
    @Override
    public int getLayoutId() {
        return R.layout.activity_login;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
       binding.tvLogin.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               AppManager.getAppManager().startActivity(MainActivity.class);
           }
       });
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
    }
    @NonNull
    @Override
    protected ImmersionBar createStatusBarConfig() {
        return super.createStatusBarConfig().fitsSystemWindows(true)  //使用该属性,必须指定状态栏颜色
                .statusBarColor(R.color.color_normal_background);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivityViewModel.java
New file
@@ -0,0 +1,24 @@
package com.application.zhangshi_app_android.ui.login;
import android.app.Application;
import androidx.annotation.NonNull;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.03.18. 17:47
 * @desc 登录注册ViewModel
 */
public class LoginActivityViewModel extends BaseViewModel<DataRepository> {
    public LoginActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/main/MainActivity.java
File was renamed from app/src/main/java/com/application/zhangshi_app_android/module/main/MainActivity.java
@@ -1,4 +1,4 @@
package com.application.zhangshi_app_android.module.main;
package com.application.zhangshi_app_android.ui.main;
import android.view.MenuItem;
@@ -6,18 +6,18 @@
import androidx.annotation.NonNull;
import androidx.viewpager2.widget.ViewPager2;
import com.android.app_base.base.adapter.BaseFragmentAdapter;
import com.android.app_base.base.adapter.BaseVp2FragmentAdapter;
import com.android.app_base.base.view.BaseActivity;
import com.android.app_base.base.view.BaseFragment;
import com.android.app_base.helper.DoubleClickHelper;
import com.android.app_base.manager.AppManager;
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.ActivityMainBinding;
import com.application.zhangshi_app_android.module.function.FunctionFragment;
import com.application.zhangshi_app_android.module.home.HomeFragment;
import com.application.zhangshi_app_android.module.personal_center.PersonalCenterFragment;
import com.application.zhangshi_app_android.ui.function.FunctionFragment;
import com.application.zhangshi_app_android.ui.home.HomeFragment;
import com.application.zhangshi_app_android.ui.personal_center.PersonalCenterFragment;
import com.blankj.utilcode.util.ToastUtils;
import com.google.android.material.navigation.NavigationBarView;
/**
@@ -42,28 +42,19 @@
    @Override
    public void initView() {
        BaseFragmentAdapter<BaseFragment> mPagerAdapter = new BaseFragmentAdapter<>(this);
        BaseVp2FragmentAdapter<BaseFragment> mPagerAdapter = new BaseVp2FragmentAdapter<>(this);
        mPagerAdapter.addFragment(HomeFragment.newInstance());
        mPagerAdapter.addFragment(FunctionFragment.newInstance());
        mPagerAdapter.addFragment(PersonalCenterFragment.newInstance());
        binding.mainVp.setAdapter(mPagerAdapter);
        binding.mainVp.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            }
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                binding.mainBnv.setSelectedItemId(binding.mainBnv.getMenu().getItem(position).getItemId());
            }
            @Override
            public void onPageScrollStateChanged(int state) {
                super.onPageScrollStateChanged(state);
                super.onPageSelected(position);
            }
        });
        // 不使用图标默认变色
        binding.mainBnv.setItemIconTintList(null);
        binding.mainBnv.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
app/src/main/java/com/application/zhangshi_app_android/ui/main/MainViewModel.java
File was renamed from app/src/main/java/com/application/zhangshi_app_android/module/main/MainViewModel.java
@@ -1,4 +1,4 @@
package com.application.zhangshi_app_android.module.main;
package com.application.zhangshi_app_android.ui.main;
import android.app.Application;
app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java
File was renamed from app/src/main/java/com/application/zhangshi_app_android/module/personal_center/PersonalCenterFragment.java
@@ -1,4 +1,4 @@
package com.application.zhangshi_app_android.module.personal_center;
package com.application.zhangshi_app_android.ui.personal_center;
import android.os.Bundle;
app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragmentViewModel.java
File was renamed from app/src/main/java/com/application/zhangshi_app_android/module/personal_center/PersonalCenterFragmentViewModel.java
@@ -1,4 +1,4 @@
package com.application.zhangshi_app_android.module.personal_center;
package com.application.zhangshi_app_android.ui.personal_center;
import android.app.Application;
app/src/main/res/drawable-xhdpi/bg_login_home.png
app/src/main/res/drawable-xhdpi/bg_login_zhang.png
app/src/main/res/drawable-xhdpi/ic_delete.png
app/src/main/res/drawable-xhdpi/ic_function_default.png
app/src/main/res/drawable-xhdpi/ic_function_selected.png
app/src/main/res/drawable-xhdpi/ic_home_default.png
app/src/main/res/drawable-xhdpi/ic_home_selected.png
app/src/main/res/drawable-xhdpi/ic_modify.png
app/src/main/res/drawable-xhdpi/ic_password_invisable.png
app/src/main/res/drawable-xhdpi/ic_personal_center_default.png
app/src/main/res/drawable-xhdpi/ic_personal_center_selected.png
app/src/main/res/drawable-xhdpi/ic_play.png
app/src/main/res/drawable-xhdpi/img_lotus.png
app/src/main/res/drawable-xhdpi/img_sakura.png
app/src/main/res/drawable-xxhdpi/bg_login_home.png
app/src/main/res/drawable-xxhdpi/bg_login_zhang.png
app/src/main/res/drawable-xxhdpi/ic_delete.png
app/src/main/res/drawable-xxhdpi/ic_function_default.png
app/src/main/res/drawable-xxhdpi/ic_function_selected.png
app/src/main/res/drawable-xxhdpi/ic_home_default.png
app/src/main/res/drawable-xxhdpi/ic_home_selected.png
app/src/main/res/drawable-xxhdpi/ic_modify.png
app/src/main/res/drawable-xxhdpi/ic_password_invisable.png
app/src/main/res/drawable-xxhdpi/ic_personal_center_default.png
app/src/main/res/drawable-xxhdpi/ic_personal_center_selected.png
app/src/main/res/drawable-xxhdpi/ic_play.png
app/src/main/res/drawable-xxhdpi/img_lotus.png
app/src/main/res/drawable-xxhdpi/img_sakura.png
app/src/main/res/drawable/selector_bottom_navigation_function.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--    &lt;!&ndash; 按压状态 &ndash;&gt;-->
<!--    <item android:drawable="@drawable/ic_function_selected" android:state_checked="true" />-->
    <!-- 按压状态 -->
    <item android:drawable="@drawable/ic_function_selected" android:state_checked="true" />
<!--    &lt;!&ndash; 默认状态 &ndash;&gt;-->
<!--    <item android:drawable="@drawable/ic_function_default" />-->
    <!-- 默认状态 -->
    <item android:drawable="@drawable/ic_function_default" />
</selector>
app/src/main/res/drawable/selector_bottom_navigation_home.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--    &lt;!&ndash; 按压状态 &ndash;&gt;-->
<!--    <item android:drawable="@drawable/ic_home_selected" android:state_checked="true" />-->
    <!-- 按压状态 -->
    <item android:drawable="@drawable/ic_home_selected" android:state_checked="true" />
<!--    &lt;!&ndash; 默认状态 &ndash;&gt;-->
<!--    <item android:drawable="@drawable/ic_home_default" />-->
    <!-- 默认状态 -->
    <item android:drawable="@drawable/ic_home_default" />
</selector>
app/src/main/res/drawable/selector_bottom_navigation_personal_center.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--    &lt;!&ndash; 按压状态 &ndash;&gt;-->
<!--    <item android:drawable="@drawable/ic_personal_center_selected" android:state_checked="true" />-->
    <!-- 按压状态 -->
    <item android:drawable="@drawable/ic_personal_center_selected" android:state_checked="true" />
<!--    &lt;!&ndash; 默认状态 &ndash;&gt;-->
<!--    <item android:drawable="@drawable/ic_personal_center_default" />-->
    <!-- 默认状态 -->
    <item android:drawable="@drawable/ic_personal_center_default" />
</selector>
app/src/main/res/drawable/shape_ff093878_10_solid.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/dp_10"/>
    <solid android:color="#FF093878"/>
</shape>
app/src/main/res/drawable/shape_ffd9d9d9_8_stroke.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/dp_8"/>
    <stroke android:color="#FFD9D9D9" android:width="@dimen/dp_1"/>
</shape>
app/src/main/res/layout/activity_family_memorabilia.xml
New file
@@ -0,0 +1,86 @@
<?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.FamilyMemorabiliaActivityViewModel"/>
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.function.FamilyMemorabiliaActivity"
        android:orientation="vertical">
        <com.hjq.bar.TitleBar
            android:id="@+id/titleBar"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_55"
            app:layout_constraintTop_toTopOf="parent"
            android:background="@color/color_title_bar_background"
            android:paddingHorizontal="@dimen/dp_16"
            app:leftIcon="@null"
            app:rightIcon="@null"
            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start|center_vertical"
                android:orientation="horizontal" >
                <ImageView
                    android:id="@+id/menu"
                    android:layout_width="@dimen/dp_24"
                    android:layout_height="@dimen/dp_24"
                    android:background="@drawable/ic_menu"
                    android:layout_gravity="center"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/dp_32"
                    android:text="家大事记"
                    android:textColor="@color/white"
                    android:textSize="@dimen/sp_20"
                    />
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end|center_vertical"
                android:orientation="horizontal" >
                <ImageView
                    android:layout_width="@dimen/dp_24"
                    android:layout_height="@dimen/dp_24"
                    android:background="@drawable/ic_search"
                    />
                <ImageView
                    android:layout_width="@dimen/dp_24"
                    android:layout_height="@dimen/dp_24"
                    android:background="@drawable/ic_operate"
                    android:layout_marginStart="@dimen/dp_16"
                    />
            </LinearLayout>
        </com.hjq.bar.TitleBar>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/color_normal_background"
            tools:listitem="@layout/item_family_memorabilia"
            tools:itemCount="20"
            />
    </LinearLayout>
</layout>
app/src/main/res/layout/activity_login.xml
New file
@@ -0,0 +1,208 @@
<?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">
    <data>
        <variable
            name="viewModel"
            type="com.application.zhangshi_app_android.ui.login.LoginActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        >
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginHorizontal="@dimen/dp_30"
            android:orientation="vertical"
            >
            <ImageView
                android:id="@+id/iv_bg_home"
                android:layout_width="match_parent"
                android:layout_height="@dimen/dp_165"
                android:background="@drawable/bg_login_home"
                />
            <androidx.cardview.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:cardCornerRadius="@dimen/dp_15"
                app:cardElevation="0dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="@+id/iv_bg_home"
                app:layout_constraintStart_toStartOf="@+id/iv_bg_home"
                app:layout_constraintTop_toBottomOf="@+id/iv_bg_home"
                >
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
                    <ImageView
                        android:id="@+id/iv_bg_zhang"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/dp_20"
                        android:background="@drawable/bg_login_zhang"
                        android:layout_centerHorizontal="true"
                        />
                    <TextView
                        android:id="@+id/tv_welcome"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginHorizontal="@dimen/dp_25"
                        android:text="欢迎来到张氏APP"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_20"
                        android:textStyle="bold"
                        android:layout_centerHorizontal="true"
                        android:layout_marginVertical="@dimen/dp_20"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginHorizontal="@dimen/dp_27"
                        android:orientation="vertical"
                        android:layout_below="@id/tv_welcome"
                        >
                        <TextView
                            android:id="@+id/tv_account"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="账号"
                            android:textColor="#FF484848"
                            android:textSize="@dimen/sp_12"
                            />
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="@dimen/dp_10"
                            android:background="@drawable/shape_ffd9d9d9_8_stroke"
                            android:paddingVertical="@dimen/dp_12"
                            >
                            <EditText
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_gravity="center"
                                android:layout_marginStart="@dimen/dp_16"
                                android:background="@null"
                                android:hint="请输入账号"
                                android:textColor="#FF093878"
                                android:textSize="@dimen/sp_16"
                                android:textColorHint="#FF8F9090"
                                />
                        </LinearLayout>
                        <TextView
                            android:id="@+id/tv_password"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="@dimen/dp_20"
                            android:text="密码"
                            android:textColor="#FF484848"
                            android:textSize="@dimen/sp_12"
                            />
                        <LinearLayout
                            android:id="@+id/layout_password"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="@dimen/dp_7"
                            android:paddingVertical="@dimen/dp_12"
                            android:background="@drawable/shape_ffd9d9d9_8_stroke"
                            android:gravity="center"
                            android:orientation="horizontal"
                            >
                            <EditText
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="@dimen/dp_16"
                                android:layout_weight="1"
                                android:background="@null"
                                android:textColor="#FF093878"
                                android:textSize="@dimen/sp_16"
                                android:hint="请输入账号"
                                android:textColorHint="#FF8F9090"
                                />
                            <ImageView
                                android:layout_width="@dimen/dp_16"
                                android:layout_height="@dimen/dp_20"
                                android:layout_marginEnd="@dimen/dp_12"
                                android:background="@drawable/ic_password_invisable" />
                        </LinearLayout>
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="验证码"
                            android:textColor="#FF484848"
                            android:textSize="@dimen/sp_12"
                            android:layout_marginTop="@dimen/dp_20"
                            />
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:orientation="horizontal"
                            android:layout_marginTop="@dimen/dp_10"
                            >
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:background="@drawable/shape_ffd9d9d9_8_stroke"
                                android:paddingVertical="@dimen/dp_12"
                                android:layout_weight="6"
                                >
                                <EditText
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content"
                                    android:layout_gravity="center"
                                    android:layout_marginStart="@dimen/dp_16"
                                    android:background="@null"
                                    android:hint="请输入验证码"
                                    android:textColor="#FF093878"
                                    android:textSize="@dimen/sp_16"
                                    android:textColorHint="#FF8F9090"
                                    />
                            </LinearLayout>
                            <ImageView
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="4"
                                android:layout_marginStart="@dimen/dp_6"
                                />
                        </LinearLayout>
                        <TextView
                            android:id="@+id/tv_login"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ff093878_10_solid"
                            android:text="注册/登录"
                            android:textColor="@color/white"
                            android:gravity="center"
                            android:paddingVertical="@dimen/dp_10"
                            android:paddingHorizontal="@dimen/dp_77"
                            android:textSize="@dimen/sp_12"
                            android:layout_marginVertical="@dimen/dp_27"
                            android:layout_gravity="center"
                            />
                    </LinearLayout>
                </RelativeLayout>
            </androidx.cardview.widget.CardView>
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_main.xml
@@ -6,7 +6,7 @@
    <data>
        <variable
            name="viewModel"
            type="com.application.zhangshi_app_android.module.main.MainViewModel" />
            type="com.application.zhangshi_app_android.ui.main.MainViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
app/src/main/res/layout/fragment_function.xml
@@ -5,51 +5,561 @@
    <data>
        <variable
            name="viewModel"
            type="com.application.zhangshi_app_android.module.function.FunctionFragmentViewModel" />
            type="com.application.zhangshi_app_android.ui.function.FunctionFragmentViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        android:orientation="vertical"
        >
        <com.hjq.bar.TitleBar
            android:id="@+id/titleBar"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_55"
            app:layout_constraintTop_toTopOf="parent"
            android:background="@color/color_title_background"
            android:background="@color/color_title_bar_background"
            android:paddingHorizontal="@dimen/dp_16"
            app:leftIcon="@drawable/ic_menu"
            app:leftTitle="功能"
            app:leftTitleSize="@dimen/sp_20"
            app:leftTitleColor="@color/white"
            app:leftIconWidth="@dimen/dp_24"
            app:leftIconHeight="@dimen/dp_24"
            app:leftIconPadding="@dimen/dp_32"
            app:leftHorizontalPadding="@dimen/dp_0"
            app:rightIcon="@null"
            >
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:leftIcon="@null"
            app:rightIcon="@null">
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start|center_vertical"
                android:orientation="horizontal">
                <ImageView
                    android:id="@+id/menu"
                    android:layout_width="@dimen/dp_24"
                    android:layout_height="@dimen/dp_24"
                    android:layout_gravity="center"
                    android:background="@drawable/ic_menu" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/dp_32"
                    android:text="@string/title_function"
                    android:textColor="@color/white"
                    android:textSize="@dimen/sp_20" />
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end|center_vertical"
                android:orientation="horizontal" >
                android:orientation="horizontal">
                <ImageView
                    android:layout_width="@dimen/dp_24"
                    android:layout_height="@dimen/dp_24"
                    android:background="@drawable/ic_search"
                    />
                    android:background="@drawable/ic_search" />
                <ImageView
                    android:layout_width="@dimen/dp_24"
                    android:layout_height="@dimen/dp_24"
                    android:background="@drawable/ic_operate"
                    android:layout_marginStart="@dimen/dp_16"
                    />
                    android:background="@drawable/ic_operate" />
            </LinearLayout>
        </com.hjq.bar.TitleBar>
        <ImageView
            android:id="@+id/iv_group_photo"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_200"
            android:background="@drawable/img_sakura"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/titleBar"
            />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:orientation="vertical"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@id/iv_group_photo"
            >
            <androidx.core.widget.NestedScrollView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                >
                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingBottom="@dimen/dp_10"
                    >
                    <androidx.constraintlayout.widget.Guideline
                        android:id="@+id/gl_v_0.5"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        app:layout_constraintGuide_percent="0.5"
                        />
                    <androidx.constraintlayout.widget.Guideline
                        android:id="@+id/gl_v_0.75"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        app:layout_constraintGuide_percent="0.75"
                        />
                    <androidx.constraintlayout.widget.Guideline
                        android:id="@+id/gl_v_0.25"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        app:layout_constraintGuide_percent="0.25"
                        />
                    <TextView
                        android:id="@+id/tv_core_module"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="@dimen/dp_20"
                        android:layout_marginTop="@dimen/dp_20"
                        android:text="核心模块"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_18"
                        android:textStyle="bold"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent" />
                    <LinearLayout
                        android:id="@+id/layout_home_root_net"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/dp_15"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.25"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@id/tv_core_module">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_family_memorabilia"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.5"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.25"
                        app:layout_constraintTop_toTopOf="@id/layout_home_root_net">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_family_assets"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.75"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.5"
                        app:layout_constraintTop_toTopOf="@id/layout_home_root_net">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_honor_collection"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.75"
                        app:layout_constraintTop_toTopOf="@id/layout_home_root_net">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_little_doctor"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        app:layout_constraintStart_toStartOf="@id/layout_home_root_net"
                        app:layout_constraintEnd_toEndOf="@id/layout_home_root_net"
                        app:layout_constraintTop_toBottomOf="@id/layout_home_root_net"
                        android:layout_marginTop="@dimen/dp_20"
                        android:gravity="center"
                        >
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="@dimen/dp_4"
                            android:textSize="@dimen/sp_14"
                            android:text="小医生"
                            android:textColor="@color/black"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:id="@+id/layout_clean_storage"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia"
                        app:layout_constraintEnd_toEndOf="@id/layout_family_memorabilia"
                        app:layout_constraintTop_toTopOf="@id/layout_little_doctor"
                        android:gravity="center"
                        >
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="@dimen/dp_4"
                            android:textSize="@dimen/sp_14"
                            android:text="保洁收纳"
                            android:textColor="@color/black"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:id="@+id/layout_contacts"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toEndOf="@+id/layout_family_assets"
                        app:layout_constraintStart_toStartOf="@+id/layout_family_assets"
                        app:layout_constraintTop_toTopOf="@id/layout_little_doctor">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_pet"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toEndOf="@+id/layout_honor_collection"
                        app:layout_constraintStart_toStartOf="@+id/layout_honor_collection"
                        app:layout_constraintTop_toTopOf="@id/layout_little_doctor">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_income_and_expenses"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        android:layout_marginTop="@dimen/dp_20"
                        app:layout_constraintEnd_toEndOf="@+id/layout_little_doctor"
                        app:layout_constraintStart_toStartOf="@+id/layout_little_doctor"
                        app:layout_constraintTop_toBottomOf="@+id/layout_little_doctor">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/dp_20"
                        android:text="个人模块"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_18"
                        android:textStyle="bold"
                        app:layout_constraintStart_toStartOf="@+id/tv_core_module"
                        app:layout_constraintTop_toBottomOf="@+id/layout_income_and_expenses" />
                    <LinearLayout
                        android:id="@+id/layout_growing_up"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/dp_15"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.25"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@id/tv_personal_module">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_marriage"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.5"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.25"
                        app:layout_constraintTop_toTopOf="@id/layout_growing_up">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_property"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.75"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.5"
                        app:layout_constraintTop_toTopOf="@+id/layout_growing_up">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_hundred_wish"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.75"
                        app:layout_constraintTop_toTopOf="@+id/layout_growing_up">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_tourism"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/dp_20"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.25"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/layout_growing_up">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_health_care"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.5"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.25"
                        app:layout_constraintTop_toTopOf="@+id/layout_tourism">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_certificate_of_honor"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toStartOf="@+id/gl_v_0.75"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.5"
                        app:layout_constraintTop_toTopOf="@+id/layout_tourism">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                    <LinearLayout
                        android:id="@+id/layout_privacy"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="vertical"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="@+id/gl_v_0.75"
                        app:layout_constraintTop_toTopOf="@+id/layout_tourism">
                        <ImageView
                            android:layout_width="@dimen/dp_24"
                            android:layout_height="@dimen/dp_24"
                            android:background="@drawable/ic_delete" />
                        <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>
                </androidx.constraintlayout.widget.ConstraintLayout>
            </androidx.core.widget.NestedScrollView>
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/fragment_home.xml
@@ -6,7 +6,7 @@
    <data>
        <variable
            name="viewModel"
            type="com.application.zhangshi_app_android.module.home.HomeFragmentViewModel" />
            type="com.application.zhangshi_app_android.ui.home.HomeFragmentViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
app/src/main/res/layout/fragment_personal_center.xml
@@ -4,7 +4,7 @@
    <data>
        <variable
            name="viewModel"
            type="com.application.zhangshi_app_android.module.personal_center.PersonalCenterFragmentViewModel" />
            type="com.application.zhangshi_app_android.ui.personal_center.PersonalCenterFragmentViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
app/src/main/res/layout/item_family_memorabilia.xml
New file
@@ -0,0 +1,283 @@
<?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="bean"
            type="com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean" />
    </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="@dimen/dp_40"
            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"
                android:paddingHorizontal="@dimen/dp_24"
                >
                <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="0dp"
                        android:layout_height="wrap_content"
                        android:textSize="@dimen/sp_16"
                        android:textColor="@color/black"
                        android:text="张氏app立项"
                        android:layout_weight="1"
                        android:textStyle="bold"
                        />
                    <TextView
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:textSize="@dimen/sp_16"
                        android:textColor="@color/black"
                        android:text="2023.3.1"
                        android:textStyle="bold"
                        android:gravity="end"
                        />
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    >
                    <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="01"
                            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="张三、李四、张四、李三"
                            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="项目立项"
                            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"
                        >
                        <LinearLayout
                            android:layout_width="wrap_content"
                            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>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginBottom="@dimen/dp_12"
                        >
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            >
                            <ImageView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:background="@drawable/ic_modify"
                                android:layout_gravity="center"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="修改"
                                android:textColor="@color/black"
                                android:textSize="@dimen/sp_14"
                                android:textStyle="bold"
                                android:layout_marginStart="@dimen/dp_4"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_alignParentEnd="true"
                            android:layout_marginStart="@dimen/dp_52"
                            >
                            <ImageView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:background="@drawable/ic_delete"
                                android:layout_gravity="center"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="删除"
                                android:textColor="#FFE86F72"
                                android:textSize="@dimen/sp_14"
                                android:textStyle="bold"
                                android:layout_marginStart="@dimen/dp_4"
                                />
                        </LinearLayout>
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/values/colors.xml
@@ -8,8 +8,11 @@
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="color_title_background">#FFF08EBA</color>
    <color name="color_normal_background">#FFFEF7FC</color>
    <color name="color_title_bar_background">#FFF08EBA</color>
    <color name="color_FFF08EBA_text_pink">#FFF08EBA</color>
    <color name="color_FF666666_text_default">#FF666666</color>
    <color name="color_card_pink">#FFFFE2EF</color>
    <color name="color_card_blue">#FFE0EEFE</color>
</resources>
app_base/build.gradle
@@ -62,5 +62,9 @@
    api 'com.geyifeng.immersionbar:immersionbar:3.2.2'
    // kotlin扩展(可选)
//    implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2'
    //图片相关
    api 'com.github.bumptech.glide:glide:4.11.0'
    //内存泄露工具
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
}
app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
@@ -23,31 +23,31 @@
 * @date 2023.03.02. 17:09
 * @desc
 */
public abstract class BaseRVAdapter<T,VDB extends ViewDataBinding> extends RecyclerView.Adapter<BaseRVAdapter.BaseViewHolder<VDB>> {
public abstract class BaseRVAdapter<T,VDB extends ViewDataBinding,VH extends BaseRVAdapter.BaseViewHolder<VDB>> extends RecyclerView.Adapter<VH> {
    /** 上下文对象 */
    private final Context mContext;
    protected final Context mContext;
    /** RecyclerView 对象 */
    private RecyclerView mRecyclerView;
    protected RecyclerView mRecyclerView;
    /** 条目点击监听器 */
    private OnItemClickListener mItemClickListener;
    protected OnItemClickListener mItemClickListener;
    /** 条目长按监听器 */
    private OnItemLongClickListener mItemLongClickListener;
    protected OnItemLongClickListener mItemLongClickListener;
    /**
     * 该 adapter 上绑定的滑动监听器
     */
    private MyOnScrollListener myOnScrollListener;
    protected MyOnScrollListener myOnScrollListener;
    /** 条目子 View 点击监听器 */
    private SparseArray<OnChildClickListener> mChildClickListeners;
    protected SparseArray<OnChildClickListener> mChildClickListeners;
    /** 条目子 View 长按监听器 */
    private SparseArray<OnChildLongClickListener> mChildLongClickListeners;
    protected SparseArray<OnChildLongClickListener> mChildLongClickListeners;
    /**
     * 列表数据
     */
    private List<T> mDataList;
    protected List<T> mDataList;
    public BaseRVAdapter(Context context) {
        mContext = context;
@@ -65,16 +65,17 @@
    @NonNull
    @Override
    public BaseViewHolder<VDB> onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        VDB itemBind = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),getLayoutId(),parent,false);
        return new BaseViewHolder<>(itemBind);
        return getViewHolder(itemBind);
    }
    protected abstract int getLayoutId();
    protected abstract void onBind(BaseViewHolder<VDB> holder, int position);
    protected abstract void onBind(VH holder, int position);
    protected abstract VH getViewHolder(VDB itemBind);
    @Override
    public void onBindViewHolder(@NonNull BaseViewHolder<VDB> holder, int position) {
    public void onBindViewHolder(@NonNull VH holder, int position) {
        View itemView = holder.itemView;
        // 设置条目的点击和长按事件
        if (mItemClickListener != null) {
@@ -172,7 +173,7 @@
     * @param <VDB>
     */
    public static class BaseViewHolder<VDB extends ViewDataBinding> extends RecyclerView.ViewHolder{
        private VDB binding;
        protected VDB binding;
        public BaseViewHolder(@NonNull View itemView) {
            super(itemView);
@@ -216,9 +217,9 @@
        }
    }
    /**
     * 从头部 追加一些数据 by hyz
     * 从头部 追加一些数据
     */
    public void addDataFormHead(List<T> data) {
    public void addDataFromHead(List<T> data) {
        if (data == null || data.size() == 0) {
            return;
        }
app_base/src/main/java/com/android/app_base/base/adapter/BaseVp2FragmentAdapter.java
File was renamed from app_base/src/main/java/com/android/app_base/base/adapter/BaseFragmentAdapter.java
@@ -1,7 +1,6 @@
package com.android.app_base.base.adapter;
import androidx.annotation.NonNull;
import androidx.collection.CircularArray;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
@@ -12,8 +11,6 @@
import com.android.app_base.base.view.BaseFragment;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
@@ -22,7 +19,7 @@
 * @date 2023.03.15. 14:36
 * @desc
 */
public class BaseFragmentAdapter<F extends BaseFragment> extends FragmentStateAdapter {
public class BaseVp2FragmentAdapter<F extends BaseFragment> extends FragmentStateAdapter {
    /**
@@ -50,15 +47,15 @@
    private ViewPager mViewPager;
    public BaseFragmentAdapter(@NonNull FragmentActivity fragmentActivity) {
    public BaseVp2FragmentAdapter(@NonNull FragmentActivity fragmentActivity) {
        super(fragmentActivity);
    }
    public BaseFragmentAdapter(@NonNull Fragment fragment) {
    public BaseVp2FragmentAdapter(@NonNull Fragment fragment) {
        super(fragment);
    }
    public BaseFragmentAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
    public BaseVp2FragmentAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
        super(fragmentManager, lifecycle);
    }
@@ -93,11 +90,11 @@
    /**
     * 添加 Fragment
     */
    public BaseFragmentAdapter<F> addFragment(F fragment) {
    public BaseVp2FragmentAdapter<F> addFragment(F fragment) {
        return addFragment(fragment, null);
    }
    public BaseFragmentAdapter<F> addFragment(Fragment fragment, String title) {
    public BaseVp2FragmentAdapter<F> addFragment(Fragment fragment, String title) {
        if (fragment != null) {
            mFragmentList.add(fragment);
            mTitleList.add(title);
@@ -109,7 +106,7 @@
    /**
     * 添加指定位置的Fragment
     */
    public BaseFragmentAdapter<F> addFragment(int index, Fragment fragment, String title) {
    public BaseVp2FragmentAdapter<F> addFragment(int index, Fragment fragment, String title) {
        if (fragment != null && index >= 0 && index <= mFragmentList.size()) {
            mFragmentList.add(index, fragment);
            mTitleList.add(index, title);
@@ -121,7 +118,7 @@
    /**
     * 删除
     */
    public BaseFragmentAdapter<F> removeFragment(int index) {
    public BaseVp2FragmentAdapter<F> removeFragment(int index) {
        if (index >= 0 && index < mFragmentList.size()) {
            mFragmentList.remove(index);
            mTitleList.remove(index);
@@ -134,7 +131,7 @@
    /**
     * 删除所有
     */
    public BaseFragmentAdapter<F> removeFragmentAll() {
    public BaseVp2FragmentAdapter<F> removeFragmentAll() {
        mFragmentList.clear();
        mTitleList.clear();
        mIds.clear();
app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
@@ -19,8 +19,11 @@
import androidx.lifecycle.ViewModelProvider;
import com.android.app_base.action.TitleBarAction;
import com.android.app_base.base.BaseApplication;
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.AdaptScreenUtils;
import com.gyf.immersionbar.ImmersionBar;
import com.hjq.bar.OnTitleBarListener;
import com.hjq.bar.TitleBar;
@@ -64,6 +67,8 @@
        initData();
        //页面事件监听的方法,用于ViewModel层转到View层的事件注册
        initLiveDataObserve();
        ScreenSizeUtils.setCustomDensity(this, BaseApplication.getInstance());
    }
    @Override
@@ -231,12 +236,6 @@
            mTitleBar = obtainTitleBar(findViewById(Window.ID_ANDROID_CONTENT));
        }
        return mTitleBar;
    }
    @Override
    public void onLeftClick(TitleBar titleBar) {
        TitleBarAction.super.onLeftClick(titleBar);
        onBackPressed();
    }
    /**
app_base/src/main/java/com/android/app_base/utils/ScreenSizeUtils.java
@@ -1,8 +1,15 @@
package com.android.app_base.utils;
import android.app.Activity;
import android.app.Application;
import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.res.Configuration;
import android.util.DisplayMetrics;
import androidx.annotation.DimenRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
/**
 * @author Ljj
@@ -32,7 +39,7 @@
     */
    public  static int getDP(Context context,@DimenRes int dpSize){
        float pxValue = context.getResources().getDimension(dpSize);//获取对应资源文件下的sp值
        //将px值转换成sp值
        //将px值转换成dp值
        return px2dip(context, pxValue);
    }
@@ -71,4 +78,50 @@
        final float scale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / scale + 0.5f);
    }
    public static int getScreenWidth(Context context){
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        if(dm != null)return dm.widthPixels;
        return 0;
    }
    public static int getScreenHeight(Context context){
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        if(dm != null)return dm.heightPixels;
        return 0;
    }
    private static float sNoncompatDensity;
    private static float sNoncompatScaledDensity;
    public static void setCustomDensity(@NonNull Activity activity, @NonNull final Application application){
        final  DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics();
        if (sNoncompatDensity == 0){
            sNoncompatDensity = appDisplayMetrics.density;
            sNoncompatScaledDensity = appDisplayMetrics.scaledDensity;
            application.registerComponentCallbacks(new ComponentCallbacks() {
                @Override
                public void onConfigurationChanged(@NonNull Configuration newConfig) {
                    if (newConfig != null && newConfig.fontScale > 0){
                        sNoncompatScaledDensity = application.getResources().getDisplayMetrics().scaledDensity;
                    }
                }
                @Override
                public void onLowMemory() {
                }
            });
        }
        final float targetDensity = appDisplayMetrics.widthPixels / 360;
        final float targetScaledDensity = targetDensity * (sNoncompatScaledDensity / sNoncompatDensity);
        final int targetDensityDpi = (int) (160*targetDensity);
        appDisplayMetrics.density = targetDensity;
        appDisplayMetrics.scaledDensity = targetScaledDensity;
        appDisplayMetrics.densityDpi = targetDensityDpi;
        final DisplayMetrics activityDisplayMetrics = activity.getResources().getDisplayMetrics();
        activityDisplayMetrics.density = targetDensity;
        activityDisplayMetrics.scaledDensity = targetScaledDensity;
        activityDisplayMetrics.densityDpi = targetDensityDpi;
    }
}
app_base/src/main/java/com/android/app_base/widget/CustomScrollView.java
New file
@@ -0,0 +1,67 @@
package com.android.app_base.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;
/**
 * @author Ljj
 * @date 2023.03.20. 16:25
 * @desc
 */
public class CustomScrollView extends ScrollView {
    int lastX = -1;
    int lastY = -1;
    public CustomScrollView(Context context) {
        super(context);
    }
    public CustomScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        int x = (int) ev.getRawX();
        int y = (int) ev.getRawY();
        int dealtX = 0;
        int dealtY = 0;
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                dealtX = 0;
                dealtY = 0;
                // 保证子View能够接收到Action_move事件
                getParent().requestDisallowInterceptTouchEvent(true);
                break;
            case MotionEvent.ACTION_MOVE:
                dealtX += Math.abs(x - lastX);
                dealtY += Math.abs(y - lastY);
                // 这里是够拦截的判断依据是左右滑动,读者可根据自己的逻辑进行是否拦截
                if (dealtX < dealtY) {
                    getParent().requestDisallowInterceptTouchEvent(true);
                    System.out.println("上下滑动"+true);
                    return super.dispatchTouchEvent(ev);
                } else {
                    getParent().requestDisallowInterceptTouchEvent(false);
                    System.out.println("左右滑动"+false);
                }
                lastX = x;
                lastY = y;
                break;
            case MotionEvent.ACTION_CANCEL:
                break;
            case MotionEvent.ACTION_UP:
                break;
        }
        return super.dispatchTouchEvent(ev);
    }
}
app_base/src/main/java/com/android/app_base/widget/CustomTextView.java
New file
@@ -0,0 +1,89 @@
package com.android.app_base.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Shader;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
import com.android.app_base.R;
/**
 * 自定义TextView
 * 中间半透明和带渐变边框
 */
public class CustomTextView extends AppCompatTextView {
    private float borderWidth;//边框宽度
    private int borderColor;//边框颜色
    private boolean isBorderGradient;//边框是否渐变
    private int borderStartColor;//边框渐变开始颜色
    private int borderEndColor;//边框渐变结束颜色
    private float border_radius;//边框圆角
    private Paint mPaint;
    private LinearGradient shader;
    public CustomTextView(@NonNull Context context) {
        this(context,null);
    }
    public CustomTextView(@NonNull Context context, @Nullable AttributeSet attrs) {
        this(context, attrs,0);
    }
    public CustomTextView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView);
        borderWidth = a.getDimension(R.styleable.CustomTextView_border_width,0);
        borderColor = a.getColor(R.styleable.CustomTextView_border_color,0);
        isBorderGradient = a.getBoolean(R.styleable.CustomTextView_is_border_gradient,false);
        borderStartColor = a.getColor(R.styleable.CustomTextView_border_gradient_start_color,borderColor);
        borderEndColor = a.getColor(R.styleable.CustomTextView_border_gradient_end_color,borderColor);
        border_radius = a.getDimension(R.styleable.CustomTextView_border_radius,0);
        a.recycle();
        //抗锯齿画笔
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        //防止边缘锯齿
        mPaint.setAntiAlias(true);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        //需要重写onDraw就得调用此
        this.setWillNotDraw(false);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //画边框
        drawBorder(canvas);
    }
    private void drawBorder(Canvas canvas) {
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeWidth(borderWidth);
        if (isBorderGradient){
            shader = new LinearGradient(0,0,getWidth(),0,borderStartColor,borderEndColor, Shader.TileMode.CLAMP);
            mPaint.setShader(shader);
        }else {
            mPaint.setColor(borderColor);
        }
        if (border_radius > 0){
            float realBorderWight = borderWidth / 2;
            //需要把矩形大小左右上下各减去一半,不然圆角显示会有问题
            canvas.drawRoundRect(realBorderWight,realBorderWight,getWidth()-realBorderWight,getHeight()-realBorderWight,border_radius,border_radius,mPaint);
        }else{
            canvas.drawRect(0,0,getWidth(),getHeight(),mPaint);
        }
        mPaint.setShader(null);
    }
}
app_base/src/main/java/com/android/app_base/widget/LinearItemDecoration.java
New file
@@ -0,0 +1,100 @@
package com.android.app_base.widget;
import android.graphics.Rect;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
/**
* @author Ljj
* @date 2023.03.18. 20:46
* @desc
*/public class LinearItemDecoration extends RecyclerView.ItemDecoration {
    private int leftSpace;
    private int rightSpace;
    private int topSpace;
    private int bottomSpace;
    private int firstTop = -1;
    public LinearItemDecoration(){
    }
    public LinearItemDecoration(int space) {
        leftSpace = rightSpace = topSpace = bottomSpace = space;
    }
    public LinearItemDecoration(int horizontalSpace,int verticalSpace) {
        rightSpace = leftSpace = horizontalSpace;
        topSpace = bottomSpace = verticalSpace;
    }
    public LinearItemDecoration(int leftSpace, int rightSpace, int topSpace, int bottomSpace) {
        this.leftSpace = leftSpace;
        this.rightSpace = rightSpace;
        this.topSpace = topSpace;
        this.bottomSpace = bottomSpace;
    }
    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        outRect.left = leftSpace;
        outRect.right = rightSpace;
        outRect.bottom = bottomSpace;
        outRect.top = topSpace;
        if ( firstTop != -1 && firstTop >= 0){
            if (parent.getChildLayoutPosition(view) == 0)
                outRect.top = firstTop;
        }
    }
    public void setTopSpace(int topSpace) {
        this.topSpace = topSpace;
    }
    public void setLeftSpace(int leftSpace) {
        this.leftSpace = leftSpace;
    }
    public void setRightSpace(int rightSpace) {
        this.rightSpace = rightSpace;
    }
    public void setBottomSpace(int bottomSpace) {
        this.bottomSpace = bottomSpace;
    }
    public void setHorizontalSpace(int horizontalSpace){
        rightSpace = leftSpace = horizontalSpace;
    }
    public void setVerticalSpace(int verticalSpace){
        rightSpace = leftSpace = verticalSpace;
    }
    public void setFirstTop(int firstTop) {
        this.firstTop = firstTop;
    }
    public int getLeftSpace() {
        return leftSpace;
    }
    public int getRightSpace() {
        return rightSpace;
    }
    public int getTopSpace() {
        return topSpace;
    }
    public int getBottomSpace() {
        return bottomSpace;
    }
    public int getFirstTop() {
        return firstTop;
    }
}
app_base/src/main/res/values-sw1440dp/dimens.xml
New file
@@ -0,0 +1,419 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <dimen name="common_margin">@dimen/dp_15</dimen>
    <dimen name="dp_m_60">-240.0000dp</dimen>
    <dimen name="dp_m_30">-120.0000dp</dimen>
    <dimen name="dp_m_20">-80.0000dp</dimen>
    <dimen name="dp_m_12">-48.0000dp</dimen>
    <dimen name="dp_m_10">-40.0000dp</dimen>
    <dimen name="dp_m_8">-32.0000dp</dimen>
    <dimen name="dp_m_5">-20.0000dp</dimen>
    <dimen name="dp_m_2">-8.0000dp</dimen>
    <dimen name="dp_m_1">-4.0000dp</dimen>
    <dimen name="dp_0">0.0000dp</dimen>
    <dimen name="dp_0_1">0.4000dp</dimen>
    <dimen name="dp_0_5">2.0000dp</dimen>
    <dimen name="dp_1">4.0000dp</dimen>
    <dimen name="dp_1_5">6.0000dp</dimen>
    <dimen name="dp_2">8.0000dp</dimen>
    <dimen name="dp_2_5">10.0000dp</dimen>
    <dimen name="dp_3">12.0000dp</dimen>
    <dimen name="dp_3_5">14.0000dp</dimen>
    <dimen name="dp_4">16.0000dp</dimen>
    <dimen name="dp_4_5">18.0000dp</dimen>
    <dimen name="dp_5">20.0000dp</dimen>
    <dimen name="dp_6">24.0000dp</dimen>
    <dimen name="dp_7">28.0000dp</dimen>
    <dimen name="dp_8">32.0000dp</dimen>
    <dimen name="dp_9">36.0000dp</dimen>
    <dimen name="dp_10">40.0000dp</dimen>
    <dimen name="dp_11">44.0000dp</dimen>
    <dimen name="dp_12">48.0000dp</dimen>
    <dimen name="dp_13">52.0000dp</dimen>
    <dimen name="dp_14">56.0000dp</dimen>
    <dimen name="dp_15">60.0000dp</dimen>
    <dimen name="dp_16">64.0000dp</dimen>
    <dimen name="dp_17">68.0000dp</dimen>
    <dimen name="dp_18">72.0000dp</dimen>
    <dimen name="dp_19">76.0000dp</dimen>
    <dimen name="dp_20">80.0000dp</dimen>
    <dimen name="dp_21">84.0000dp</dimen>
    <dimen name="dp_22">88.0000dp</dimen>
    <dimen name="dp_23">92.0000dp</dimen>
    <dimen name="dp_24">96.0000dp</dimen>
    <dimen name="dp_25">100.0000dp</dimen>
    <dimen name="dp_26">104.0000dp</dimen>
    <dimen name="dp_27">108.0000dp</dimen>
    <dimen name="dp_28">112.0000dp</dimen>
    <dimen name="dp_29">116.0000dp</dimen>
    <dimen name="dp_30">120.0000dp</dimen>
    <dimen name="dp_31">124.0000dp</dimen>
    <dimen name="dp_32">128.0000dp</dimen>
    <dimen name="dp_33">132.0000dp</dimen>
    <dimen name="dp_34">136.0000dp</dimen>
    <dimen name="dp_35">140.0000dp</dimen>
    <dimen name="dp_36">144.0000dp</dimen>
    <dimen name="dp_37">148.0000dp</dimen>
    <dimen name="dp_38">152.0000dp</dimen>
    <dimen name="dp_39">156.0000dp</dimen>
    <dimen name="dp_40">160.0000dp</dimen>
    <dimen name="dp_41">164.0000dp</dimen>
    <dimen name="dp_42">168.0000dp</dimen>
    <dimen name="dp_43">172.0000dp</dimen>
    <dimen name="dp_44">176.0000dp</dimen>
    <dimen name="dp_45">180.0000dp</dimen>
    <dimen name="dp_46">184.0000dp</dimen>
    <dimen name="dp_47">188.0000dp</dimen>
    <dimen name="dp_48">192.0000dp</dimen>
    <dimen name="dp_49">196.0000dp</dimen>
    <dimen name="dp_50">200.0000dp</dimen>
    <dimen name="dp_51">204.0000dp</dimen>
    <dimen name="dp_52">208.0000dp</dimen>
    <dimen name="dp_53">212.0000dp</dimen>
    <dimen name="dp_54">216.0000dp</dimen>
    <dimen name="dp_55">220.0000dp</dimen>
    <dimen name="dp_56">224.0000dp</dimen>
    <dimen name="dp_57">228.0000dp</dimen>
    <dimen name="dp_58">232.0000dp</dimen>
    <dimen name="dp_59">236.0000dp</dimen>
    <dimen name="dp_60">240.0000dp</dimen>
    <dimen name="dp_61">244.0000dp</dimen>
    <dimen name="dp_62">248.0000dp</dimen>
    <dimen name="dp_63">252.0000dp</dimen>
    <dimen name="dp_64">256.0000dp</dimen>
    <dimen name="dp_65">260.0000dp</dimen>
    <dimen name="dp_66">264.0000dp</dimen>
    <dimen name="dp_67">268.0000dp</dimen>
    <dimen name="dp_68">272.0000dp</dimen>
    <dimen name="dp_69">276.0000dp</dimen>
    <dimen name="dp_70">280.0000dp</dimen>
    <dimen name="dp_71">284.0000dp</dimen>
    <dimen name="dp_72">288.0000dp</dimen>
    <dimen name="dp_73">292.0000dp</dimen>
    <dimen name="dp_74">296.0000dp</dimen>
    <dimen name="dp_75">300.0000dp</dimen>
    <dimen name="dp_76">304.0000dp</dimen>
    <dimen name="dp_77">308.0000dp</dimen>
    <dimen name="dp_78">312.0000dp</dimen>
    <dimen name="dp_79">316.0000dp</dimen>
    <dimen name="dp_80">320.0000dp</dimen>
    <dimen name="dp_81">324.0000dp</dimen>
    <dimen name="dp_82">328.0000dp</dimen>
    <dimen name="dp_83">332.0000dp</dimen>
    <dimen name="dp_84">336.0000dp</dimen>
    <dimen name="dp_85">340.0000dp</dimen>
    <dimen name="dp_86">344.0000dp</dimen>
    <dimen name="dp_87">348.0000dp</dimen>
    <dimen name="dp_88">352.0000dp</dimen>
    <dimen name="dp_89">356.0000dp</dimen>
    <dimen name="dp_90">360.0000dp</dimen>
    <dimen name="dp_91">364.0000dp</dimen>
    <dimen name="dp_92">368.0000dp</dimen>
    <dimen name="dp_93">372.0000dp</dimen>
    <dimen name="dp_94">376.0000dp</dimen>
    <dimen name="dp_95">380.0000dp</dimen>
    <dimen name="dp_96">384.0000dp</dimen>
    <dimen name="dp_97">388.0000dp</dimen>
    <dimen name="dp_98">392.0000dp</dimen>
    <dimen name="dp_99">396.0000dp</dimen>
    <dimen name="dp_100">400.0000dp</dimen>
    <dimen name="dp_101">404.0000dp</dimen>
    <dimen name="dp_102">408.0000dp</dimen>
    <dimen name="dp_103">412.0000dp</dimen>
    <dimen name="dp_104">416.0000dp</dimen>
    <dimen name="dp_105">420.0000dp</dimen>
    <dimen name="dp_106">424.0000dp</dimen>
    <dimen name="dp_107">428.0000dp</dimen>
    <dimen name="dp_108">432.0000dp</dimen>
    <dimen name="dp_109">436.0000dp</dimen>
    <dimen name="dp_110">440.0000dp</dimen>
    <dimen name="dp_111">444.0000dp</dimen>
    <dimen name="dp_112">448.0000dp</dimen>
    <dimen name="dp_113">452.0000dp</dimen>
    <dimen name="dp_114">456.0000dp</dimen>
    <dimen name="dp_115">460.0000dp</dimen>
    <dimen name="dp_116">464.0000dp</dimen>
    <dimen name="dp_117">468.0000dp</dimen>
    <dimen name="dp_118">472.0000dp</dimen>
    <dimen name="dp_119">476.0000dp</dimen>
    <dimen name="dp_120">480.0000dp</dimen>
    <dimen name="dp_121">484.0000dp</dimen>
    <dimen name="dp_122">488.0000dp</dimen>
    <dimen name="dp_123">492.0000dp</dimen>
    <dimen name="dp_124">496.0000dp</dimen>
    <dimen name="dp_125">500.0000dp</dimen>
    <dimen name="dp_126">504.0000dp</dimen>
    <dimen name="dp_127">508.0000dp</dimen>
    <dimen name="dp_128">512.0000dp</dimen>
    <dimen name="dp_129">516.0000dp</dimen>
    <dimen name="dp_130">520.0000dp</dimen>
    <dimen name="dp_131">524.0000dp</dimen>
    <dimen name="dp_132">528.0000dp</dimen>
    <dimen name="dp_133">532.0000dp</dimen>
    <dimen name="dp_134">536.0000dp</dimen>
    <dimen name="dp_135">540.0000dp</dimen>
    <dimen name="dp_136">544.0000dp</dimen>
    <dimen name="dp_137">548.0000dp</dimen>
    <dimen name="dp_138">552.0000dp</dimen>
    <dimen name="dp_139">556.0000dp</dimen>
    <dimen name="dp_140">560.0000dp</dimen>
    <dimen name="dp_141">564.0000dp</dimen>
    <dimen name="dp_142">568.0000dp</dimen>
    <dimen name="dp_143">572.0000dp</dimen>
    <dimen name="dp_144">576.0000dp</dimen>
    <dimen name="dp_145">580.0000dp</dimen>
    <dimen name="dp_146">584.0000dp</dimen>
    <dimen name="dp_147">588.0000dp</dimen>
    <dimen name="dp_148">592.0000dp</dimen>
    <dimen name="dp_149">596.0000dp</dimen>
    <dimen name="dp_150">600.0000dp</dimen>
    <dimen name="dp_151">604.0000dp</dimen>
    <dimen name="dp_152">608.0000dp</dimen>
    <dimen name="dp_153">612.0000dp</dimen>
    <dimen name="dp_154">616.0000dp</dimen>
    <dimen name="dp_155">620.0000dp</dimen>
    <dimen name="dp_156">624.0000dp</dimen>
    <dimen name="dp_157">628.0000dp</dimen>
    <dimen name="dp_158">632.0000dp</dimen>
    <dimen name="dp_159">636.0000dp</dimen>
    <dimen name="dp_160">640.0000dp</dimen>
    <dimen name="dp_161">644.0000dp</dimen>
    <dimen name="dp_162">648.0000dp</dimen>
    <dimen name="dp_163">652.0000dp</dimen>
    <dimen name="dp_164">656.0000dp</dimen>
    <dimen name="dp_165">660.0000dp</dimen>
    <dimen name="dp_166">664.0000dp</dimen>
    <dimen name="dp_167">668.0000dp</dimen>
    <dimen name="dp_168">672.0000dp</dimen>
    <dimen name="dp_169">676.0000dp</dimen>
    <dimen name="dp_170">680.0000dp</dimen>
    <dimen name="dp_171">684.0000dp</dimen>
    <dimen name="dp_172">688.0000dp</dimen>
    <dimen name="dp_173">692.0000dp</dimen>
    <dimen name="dp_174">696.0000dp</dimen>
    <dimen name="dp_175">700.0000dp</dimen>
    <dimen name="dp_176">704.0000dp</dimen>
    <dimen name="dp_177">708.0000dp</dimen>
    <dimen name="dp_178">712.0000dp</dimen>
    <dimen name="dp_179">716.0000dp</dimen>
    <dimen name="dp_180">720.0000dp</dimen>
    <dimen name="dp_181">724.0000dp</dimen>
    <dimen name="dp_182">728.0000dp</dimen>
    <dimen name="dp_183">732.0000dp</dimen>
    <dimen name="dp_184">736.0000dp</dimen>
    <dimen name="dp_185">740.0000dp</dimen>
    <dimen name="dp_186">744.0000dp</dimen>
    <dimen name="dp_187">748.0000dp</dimen>
    <dimen name="dp_188">752.0000dp</dimen>
    <dimen name="dp_189">756.0000dp</dimen>
    <dimen name="dp_190">760.0000dp</dimen>
    <dimen name="dp_191">764.0000dp</dimen>
    <dimen name="dp_192">768.0000dp</dimen>
    <dimen name="dp_193">772.0000dp</dimen>
    <dimen name="dp_194">776.0000dp</dimen>
    <dimen name="dp_195">780.0000dp</dimen>
    <dimen name="dp_196">784.0000dp</dimen>
    <dimen name="dp_197">788.0000dp</dimen>
    <dimen name="dp_198">792.0000dp</dimen>
    <dimen name="dp_199">796.0000dp</dimen>
    <dimen name="dp_200">800.0000dp</dimen>
    <dimen name="dp_201">804.0000dp</dimen>
    <dimen name="dp_202">808.0000dp</dimen>
    <dimen name="dp_203">812.0000dp</dimen>
    <dimen name="dp_204">816.0000dp</dimen>
    <dimen name="dp_205">820.0000dp</dimen>
    <dimen name="dp_206">824.0000dp</dimen>
    <dimen name="dp_207">828.0000dp</dimen>
    <dimen name="dp_208">832.0000dp</dimen>
    <dimen name="dp_209">836.0000dp</dimen>
    <dimen name="dp_210">840.0000dp</dimen>
    <dimen name="dp_211">844.0000dp</dimen>
    <dimen name="dp_212">848.0000dp</dimen>
    <dimen name="dp_213">852.0000dp</dimen>
    <dimen name="dp_214">856.0000dp</dimen>
    <dimen name="dp_215">860.0000dp</dimen>
    <dimen name="dp_216">864.0000dp</dimen>
    <dimen name="dp_217">868.0000dp</dimen>
    <dimen name="dp_218">872.0000dp</dimen>
    <dimen name="dp_219">876.0000dp</dimen>
    <dimen name="dp_220">880.0000dp</dimen>
    <dimen name="dp_221">884.0000dp</dimen>
    <dimen name="dp_222">888.0000dp</dimen>
    <dimen name="dp_223">892.0000dp</dimen>
    <dimen name="dp_224">896.0000dp</dimen>
    <dimen name="dp_225">900.0000dp</dimen>
    <dimen name="dp_226">904.0000dp</dimen>
    <dimen name="dp_227">908.0000dp</dimen>
    <dimen name="dp_228">912.0000dp</dimen>
    <dimen name="dp_229">916.0000dp</dimen>
    <dimen name="dp_230">920.0000dp</dimen>
    <dimen name="dp_231">924.0000dp</dimen>
    <dimen name="dp_232">928.0000dp</dimen>
    <dimen name="dp_233">932.0000dp</dimen>
    <dimen name="dp_234">936.0000dp</dimen>
    <dimen name="dp_235">940.0000dp</dimen>
    <dimen name="dp_236">944.0000dp</dimen>
    <dimen name="dp_237">948.0000dp</dimen>
    <dimen name="dp_238">952.0000dp</dimen>
    <dimen name="dp_239">956.0000dp</dimen>
    <dimen name="dp_240">960.0000dp</dimen>
    <dimen name="dp_241">964.0000dp</dimen>
    <dimen name="dp_242">968.0000dp</dimen>
    <dimen name="dp_243">972.0000dp</dimen>
    <dimen name="dp_244">976.0000dp</dimen>
    <dimen name="dp_245">980.0000dp</dimen>
    <dimen name="dp_246">984.0000dp</dimen>
    <dimen name="dp_247">988.0000dp</dimen>
    <dimen name="dp_248">992.0000dp</dimen>
    <dimen name="dp_249">996.0000dp</dimen>
    <dimen name="dp_250">1000.0000dp</dimen>
    <dimen name="dp_251">1004.0000dp</dimen>
    <dimen name="dp_252">1008.0000dp</dimen>
    <dimen name="dp_253">1012.0000dp</dimen>
    <dimen name="dp_254">1016.0000dp</dimen>
    <dimen name="dp_255">1020.0000dp</dimen>
    <dimen name="dp_256">1024.0000dp</dimen>
    <dimen name="dp_257">1028.0000dp</dimen>
    <dimen name="dp_258">1032.0000dp</dimen>
    <dimen name="dp_259">1036.0000dp</dimen>
    <dimen name="dp_260">1040.0000dp</dimen>
    <dimen name="dp_261">1044.0000dp</dimen>
    <dimen name="dp_262">1048.0000dp</dimen>
    <dimen name="dp_263">1052.0000dp</dimen>
    <dimen name="dp_264">1056.0000dp</dimen>
    <dimen name="dp_265">1060.0000dp</dimen>
    <dimen name="dp_266">1064.0000dp</dimen>
    <dimen name="dp_267">1068.0000dp</dimen>
    <dimen name="dp_268">1072.0000dp</dimen>
    <dimen name="dp_269">1076.0000dp</dimen>
    <dimen name="dp_270">1080.0000dp</dimen>
    <dimen name="dp_271">1084.0000dp</dimen>
    <dimen name="dp_272">1088.0000dp</dimen>
    <dimen name="dp_273">1092.0000dp</dimen>
    <dimen name="dp_274">1096.0000dp</dimen>
    <dimen name="dp_275">1100.0000dp</dimen>
    <dimen name="dp_276">1104.0000dp</dimen>
    <dimen name="dp_277">1108.0000dp</dimen>
    <dimen name="dp_278">1112.0000dp</dimen>
    <dimen name="dp_279">1116.0000dp</dimen>
    <dimen name="dp_280">1120.0000dp</dimen>
    <dimen name="dp_281">1124.0000dp</dimen>
    <dimen name="dp_282">1128.0000dp</dimen>
    <dimen name="dp_283">1132.0000dp</dimen>
    <dimen name="dp_284">1136.0000dp</dimen>
    <dimen name="dp_285">1140.0000dp</dimen>
    <dimen name="dp_286">1144.0000dp</dimen>
    <dimen name="dp_287">1148.0000dp</dimen>
    <dimen name="dp_288">1152.0000dp</dimen>
    <dimen name="dp_289">1156.0000dp</dimen>
    <dimen name="dp_290">1160.0000dp</dimen>
    <dimen name="dp_291">1164.0000dp</dimen>
    <dimen name="dp_292">1168.0000dp</dimen>
    <dimen name="dp_293">1172.0000dp</dimen>
    <dimen name="dp_294">1176.0000dp</dimen>
    <dimen name="dp_295">1180.0000dp</dimen>
    <dimen name="dp_296">1184.0000dp</dimen>
    <dimen name="dp_297">1188.0000dp</dimen>
    <dimen name="dp_298">1192.0000dp</dimen>
    <dimen name="dp_299">1196.0000dp</dimen>
    <dimen name="dp_300">1200.0000dp</dimen>
    <dimen name="dp_301">1204.0000dp</dimen>
    <dimen name="dp_302">1208.0000dp</dimen>
    <dimen name="dp_303">1212.0000dp</dimen>
    <dimen name="dp_304">1216.0000dp</dimen>
    <dimen name="dp_305">1220.0000dp</dimen>
    <dimen name="dp_306">1224.0000dp</dimen>
    <dimen name="dp_307">1228.0000dp</dimen>
    <dimen name="dp_308">1232.0000dp</dimen>
    <dimen name="dp_309">1236.0000dp</dimen>
    <dimen name="dp_310">1240.0000dp</dimen>
    <dimen name="dp_311">1244.0000dp</dimen>
    <dimen name="dp_312">1248.0000dp</dimen>
    <dimen name="dp_313">1252.0000dp</dimen>
    <dimen name="dp_314">1256.0000dp</dimen>
    <dimen name="dp_315">1260.0000dp</dimen>
    <dimen name="dp_316">1264.0000dp</dimen>
    <dimen name="dp_317">1268.0000dp</dimen>
    <dimen name="dp_318">1272.0000dp</dimen>
    <dimen name="dp_319">1276.0000dp</dimen>
    <dimen name="dp_320">1280.0000dp</dimen>
    <dimen name="dp_321">1284.0000dp</dimen>
    <dimen name="dp_322">1288.0000dp</dimen>
    <dimen name="dp_323">1292.0000dp</dimen>
    <dimen name="dp_324">1296.0000dp</dimen>
    <dimen name="dp_325">1300.0000dp</dimen>
    <dimen name="dp_326">1304.0000dp</dimen>
    <dimen name="dp_327">1308.0000dp</dimen>
    <dimen name="dp_328">1312.0000dp</dimen>
    <dimen name="dp_329">1316.0000dp</dimen>
    <dimen name="dp_330">1320.0000dp</dimen>
    <dimen name="dp_331">1324.0000dp</dimen>
    <dimen name="dp_332">1328.0000dp</dimen>
    <dimen name="dp_333">1332.0000dp</dimen>
    <dimen name="dp_334">1336.0000dp</dimen>
    <dimen name="dp_335">1340.0000dp</dimen>
    <dimen name="dp_336">1344.0000dp</dimen>
    <dimen name="dp_337">1348.0000dp</dimen>
    <dimen name="dp_338">1352.0000dp</dimen>
    <dimen name="dp_339">1356.0000dp</dimen>
    <dimen name="dp_340">1360.0000dp</dimen>
    <dimen name="dp_341">1364.0000dp</dimen>
    <dimen name="dp_342">1368.0000dp</dimen>
    <dimen name="dp_343">1372.0000dp</dimen>
    <dimen name="dp_344">1376.0000dp</dimen>
    <dimen name="dp_345">1380.0000dp</dimen>
    <dimen name="dp_346">1384.0000dp</dimen>
    <dimen name="dp_347">1388.0000dp</dimen>
    <dimen name="dp_348">1392.0000dp</dimen>
    <dimen name="dp_349">1396.0000dp</dimen>
    <dimen name="dp_350">1400.0000dp</dimen>
    <dimen name="dp_351">1404.0000dp</dimen>
    <dimen name="dp_352">1408.0000dp</dimen>
    <dimen name="dp_353">1412.0000dp</dimen>
    <dimen name="dp_354">1416.0000dp</dimen>
    <dimen name="dp_355">1420.0000dp</dimen>
    <dimen name="dp_356">1424.0000dp</dimen>
    <dimen name="dp_357">1428.0000dp</dimen>
    <dimen name="dp_358">1432.0000dp</dimen>
    <dimen name="dp_359">1436.0000dp</dimen>
    <dimen name="dp_360">1440.0000dp</dimen>
    <dimen name="dp_365">1460.0000dp</dimen>
    <dimen name="dp_370">1480.0000dp</dimen>
    <dimen name="dp_400">1600.0000dp</dimen>
    <dimen name="dp_410">1640.0000dp</dimen>
    <dimen name="dp_422">1688.0000dp</dimen>
    <dimen name="dp_472">1888.0000dp</dimen>
    <dimen name="dp_500">2000.0000dp</dimen>
    <dimen name="dp_600">2400.0000dp</dimen>
    <dimen name="dp_640">2560.0000dp</dimen>
    <dimen name="dp_720">2880.0000dp</dimen>
    <dimen name="sp_6">24.0000sp</dimen>
    <dimen name="sp_7">28.0000sp</dimen>
    <dimen name="sp_8">32.0000sp</dimen>
    <dimen name="sp_9">36.0000sp</dimen>
    <dimen name="sp_10">40.0000sp</dimen>
    <dimen name="sp_11">44.0000sp</dimen>
    <dimen name="sp_12">48.0000sp</dimen>
    <dimen name="sp_13">52.0000sp</dimen>
    <dimen name="sp_14">56.0000sp</dimen>
    <dimen name="sp_15">60.0000sp</dimen>
    <dimen name="sp_16">64.0000sp</dimen>
    <dimen name="sp_17">68.0000sp</dimen>
    <dimen name="sp_18">72.0000sp</dimen>
    <dimen name="sp_19">76.0000sp</dimen>
    <dimen name="sp_20">80.0000sp</dimen>
    <dimen name="sp_21">84.0000sp</dimen>
    <dimen name="sp_22">88.0000sp</dimen>
    <dimen name="sp_23">92.0000sp</dimen>
    <dimen name="sp_24">96.0000sp</dimen>
    <dimen name="sp_25">100.0000sp</dimen>
    <dimen name="sp_28">112.0000sp</dimen>
    <dimen name="sp_30">120.0000sp</dimen>
    <dimen name="sp_32">128.0000sp</dimen>
    <dimen name="sp_34">136.0000sp</dimen>
    <dimen name="sp_36">144.0000sp</dimen>
    <dimen name="sp_38">152.0000sp</dimen>
    <dimen name="sp_40">160.0000sp</dimen>
    <dimen name="sp_42">168.0000sp</dimen>
    <dimen name="sp_48">192.0000sp</dimen>
</resources>
app_base/src/main/res/values-sw360dp/dimens.xml
New file
@@ -0,0 +1,419 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <dimen name="common_margin">@dimen/dp_15</dimen>
    <dimen name="dp_m_60">-60.0000dp</dimen>
    <dimen name="dp_m_30">-30.0000dp</dimen>
    <dimen name="dp_m_20">-20.0000dp</dimen>
    <dimen name="dp_m_12">-12.0000dp</dimen>
    <dimen name="dp_m_10">-10.0000dp</dimen>
    <dimen name="dp_m_8">-8.0000dp</dimen>
    <dimen name="dp_m_5">-5.0000dp</dimen>
    <dimen name="dp_m_2">-2.0000dp</dimen>
    <dimen name="dp_m_1">-1.0000dp</dimen>
    <dimen name="dp_0">0.0000dp</dimen>
    <dimen name="dp_0_1">0.1000dp</dimen>
    <dimen name="dp_0_5">0.5000dp</dimen>
    <dimen name="dp_1">1.0000dp</dimen>
    <dimen name="dp_1_5">1.5000dp</dimen>
    <dimen name="dp_2">2.0000dp</dimen>
    <dimen name="dp_2_5">2.5000dp</dimen>
    <dimen name="dp_3">3.0000dp</dimen>
    <dimen name="dp_3_5">3.5000dp</dimen>
    <dimen name="dp_4">4.0000dp</dimen>
    <dimen name="dp_4_5">4.5000dp</dimen>
    <dimen name="dp_5">5.0000dp</dimen>
    <dimen name="dp_6">6.0000dp</dimen>
    <dimen name="dp_7">7.0000dp</dimen>
    <dimen name="dp_8">8.0000dp</dimen>
    <dimen name="dp_9">9.0000dp</dimen>
    <dimen name="dp_10">10.0000dp</dimen>
    <dimen name="dp_11">11.0000dp</dimen>
    <dimen name="dp_12">12.0000dp</dimen>
    <dimen name="dp_13">13.0000dp</dimen>
    <dimen name="dp_14">14.0000dp</dimen>
    <dimen name="dp_15">15.0000dp</dimen>
    <dimen name="dp_16">16.0000dp</dimen>
    <dimen name="dp_17">17.0000dp</dimen>
    <dimen name="dp_18">18.0000dp</dimen>
    <dimen name="dp_19">19.0000dp</dimen>
    <dimen name="dp_20">20.0000dp</dimen>
    <dimen name="dp_21">21.0000dp</dimen>
    <dimen name="dp_22">22.0000dp</dimen>
    <dimen name="dp_23">23.0000dp</dimen>
    <dimen name="dp_24">24.0000dp</dimen>
    <dimen name="dp_25">25.0000dp</dimen>
    <dimen name="dp_26">26.0000dp</dimen>
    <dimen name="dp_27">27.0000dp</dimen>
    <dimen name="dp_28">28.0000dp</dimen>
    <dimen name="dp_29">29.0000dp</dimen>
    <dimen name="dp_30">30.0000dp</dimen>
    <dimen name="dp_31">31.0000dp</dimen>
    <dimen name="dp_32">32.0000dp</dimen>
    <dimen name="dp_33">33.0000dp</dimen>
    <dimen name="dp_34">34.0000dp</dimen>
    <dimen name="dp_35">35.0000dp</dimen>
    <dimen name="dp_36">36.0000dp</dimen>
    <dimen name="dp_37">37.0000dp</dimen>
    <dimen name="dp_38">38.0000dp</dimen>
    <dimen name="dp_39">39.0000dp</dimen>
    <dimen name="dp_40">40.0000dp</dimen>
    <dimen name="dp_41">41.0000dp</dimen>
    <dimen name="dp_42">42.0000dp</dimen>
    <dimen name="dp_43">43.0000dp</dimen>
    <dimen name="dp_44">44.0000dp</dimen>
    <dimen name="dp_45">45.0000dp</dimen>
    <dimen name="dp_46">46.0000dp</dimen>
    <dimen name="dp_47">47.0000dp</dimen>
    <dimen name="dp_48">48.0000dp</dimen>
    <dimen name="dp_49">49.0000dp</dimen>
    <dimen name="dp_50">50.0000dp</dimen>
    <dimen name="dp_51">51.0000dp</dimen>
    <dimen name="dp_52">52.0000dp</dimen>
    <dimen name="dp_53">53.0000dp</dimen>
    <dimen name="dp_54">54.0000dp</dimen>
    <dimen name="dp_55">55.0000dp</dimen>
    <dimen name="dp_56">56.0000dp</dimen>
    <dimen name="dp_57">57.0000dp</dimen>
    <dimen name="dp_58">58.0000dp</dimen>
    <dimen name="dp_59">59.0000dp</dimen>
    <dimen name="dp_60">60.0000dp</dimen>
    <dimen name="dp_61">61.0000dp</dimen>
    <dimen name="dp_62">62.0000dp</dimen>
    <dimen name="dp_63">63.0000dp</dimen>
    <dimen name="dp_64">64.0000dp</dimen>
    <dimen name="dp_65">65.0000dp</dimen>
    <dimen name="dp_66">66.0000dp</dimen>
    <dimen name="dp_67">67.0000dp</dimen>
    <dimen name="dp_68">68.0000dp</dimen>
    <dimen name="dp_69">69.0000dp</dimen>
    <dimen name="dp_70">70.0000dp</dimen>
    <dimen name="dp_71">71.0000dp</dimen>
    <dimen name="dp_72">72.0000dp</dimen>
    <dimen name="dp_73">73.0000dp</dimen>
    <dimen name="dp_74">74.0000dp</dimen>
    <dimen name="dp_75">75.0000dp</dimen>
    <dimen name="dp_76">76.0000dp</dimen>
    <dimen name="dp_77">77.0000dp</dimen>
    <dimen name="dp_78">78.0000dp</dimen>
    <dimen name="dp_79">79.0000dp</dimen>
    <dimen name="dp_80">80.0000dp</dimen>
    <dimen name="dp_81">81.0000dp</dimen>
    <dimen name="dp_82">82.0000dp</dimen>
    <dimen name="dp_83">83.0000dp</dimen>
    <dimen name="dp_84">84.0000dp</dimen>
    <dimen name="dp_85">85.0000dp</dimen>
    <dimen name="dp_86">86.0000dp</dimen>
    <dimen name="dp_87">87.0000dp</dimen>
    <dimen name="dp_88">88.0000dp</dimen>
    <dimen name="dp_89">89.0000dp</dimen>
    <dimen name="dp_90">90.0000dp</dimen>
    <dimen name="dp_91">91.0000dp</dimen>
    <dimen name="dp_92">92.0000dp</dimen>
    <dimen name="dp_93">93.0000dp</dimen>
    <dimen name="dp_94">94.0000dp</dimen>
    <dimen name="dp_95">95.0000dp</dimen>
    <dimen name="dp_96">96.0000dp</dimen>
    <dimen name="dp_97">97.0000dp</dimen>
    <dimen name="dp_98">98.0000dp</dimen>
    <dimen name="dp_99">99.0000dp</dimen>
    <dimen name="dp_100">100.0000dp</dimen>
    <dimen name="dp_101">101.0000dp</dimen>
    <dimen name="dp_102">102.0000dp</dimen>
    <dimen name="dp_103">103.0000dp</dimen>
    <dimen name="dp_104">104.0000dp</dimen>
    <dimen name="dp_105">105.0000dp</dimen>
    <dimen name="dp_106">106.0000dp</dimen>
    <dimen name="dp_107">107.0000dp</dimen>
    <dimen name="dp_108">108.0000dp</dimen>
    <dimen name="dp_109">109.0000dp</dimen>
    <dimen name="dp_110">110.0000dp</dimen>
    <dimen name="dp_111">111.0000dp</dimen>
    <dimen name="dp_112">112.0000dp</dimen>
    <dimen name="dp_113">113.0000dp</dimen>
    <dimen name="dp_114">114.0000dp</dimen>
    <dimen name="dp_115">115.0000dp</dimen>
    <dimen name="dp_116">116.0000dp</dimen>
    <dimen name="dp_117">117.0000dp</dimen>
    <dimen name="dp_118">118.0000dp</dimen>
    <dimen name="dp_119">119.0000dp</dimen>
    <dimen name="dp_120">120.0000dp</dimen>
    <dimen name="dp_121">121.0000dp</dimen>
    <dimen name="dp_122">122.0000dp</dimen>
    <dimen name="dp_123">123.0000dp</dimen>
    <dimen name="dp_124">124.0000dp</dimen>
    <dimen name="dp_125">125.0000dp</dimen>
    <dimen name="dp_126">126.0000dp</dimen>
    <dimen name="dp_127">127.0000dp</dimen>
    <dimen name="dp_128">128.0000dp</dimen>
    <dimen name="dp_129">129.0000dp</dimen>
    <dimen name="dp_130">130.0000dp</dimen>
    <dimen name="dp_131">131.0000dp</dimen>
    <dimen name="dp_132">132.0000dp</dimen>
    <dimen name="dp_133">133.0000dp</dimen>
    <dimen name="dp_134">134.0000dp</dimen>
    <dimen name="dp_135">135.0000dp</dimen>
    <dimen name="dp_136">136.0000dp</dimen>
    <dimen name="dp_137">137.0000dp</dimen>
    <dimen name="dp_138">138.0000dp</dimen>
    <dimen name="dp_139">139.0000dp</dimen>
    <dimen name="dp_140">140.0000dp</dimen>
    <dimen name="dp_141">141.0000dp</dimen>
    <dimen name="dp_142">142.0000dp</dimen>
    <dimen name="dp_143">143.0000dp</dimen>
    <dimen name="dp_144">144.0000dp</dimen>
    <dimen name="dp_145">145.0000dp</dimen>
    <dimen name="dp_146">146.0000dp</dimen>
    <dimen name="dp_147">147.0000dp</dimen>
    <dimen name="dp_148">148.0000dp</dimen>
    <dimen name="dp_149">149.0000dp</dimen>
    <dimen name="dp_150">150.0000dp</dimen>
    <dimen name="dp_151">151.0000dp</dimen>
    <dimen name="dp_152">152.0000dp</dimen>
    <dimen name="dp_153">153.0000dp</dimen>
    <dimen name="dp_154">154.0000dp</dimen>
    <dimen name="dp_155">155.0000dp</dimen>
    <dimen name="dp_156">156.0000dp</dimen>
    <dimen name="dp_157">157.0000dp</dimen>
    <dimen name="dp_158">158.0000dp</dimen>
    <dimen name="dp_159">159.0000dp</dimen>
    <dimen name="dp_160">160.0000dp</dimen>
    <dimen name="dp_161">161.0000dp</dimen>
    <dimen name="dp_162">162.0000dp</dimen>
    <dimen name="dp_163">163.0000dp</dimen>
    <dimen name="dp_164">164.0000dp</dimen>
    <dimen name="dp_165">165.0000dp</dimen>
    <dimen name="dp_166">166.0000dp</dimen>
    <dimen name="dp_167">167.0000dp</dimen>
    <dimen name="dp_168">168.0000dp</dimen>
    <dimen name="dp_169">169.0000dp</dimen>
    <dimen name="dp_170">170.0000dp</dimen>
    <dimen name="dp_171">171.0000dp</dimen>
    <dimen name="dp_172">172.0000dp</dimen>
    <dimen name="dp_173">173.0000dp</dimen>
    <dimen name="dp_174">174.0000dp</dimen>
    <dimen name="dp_175">175.0000dp</dimen>
    <dimen name="dp_176">176.0000dp</dimen>
    <dimen name="dp_177">177.0000dp</dimen>
    <dimen name="dp_178">178.0000dp</dimen>
    <dimen name="dp_179">179.0000dp</dimen>
    <dimen name="dp_180">180.0000dp</dimen>
    <dimen name="dp_181">181.0000dp</dimen>
    <dimen name="dp_182">182.0000dp</dimen>
    <dimen name="dp_183">183.0000dp</dimen>
    <dimen name="dp_184">184.0000dp</dimen>
    <dimen name="dp_185">185.0000dp</dimen>
    <dimen name="dp_186">186.0000dp</dimen>
    <dimen name="dp_187">187.0000dp</dimen>
    <dimen name="dp_188">188.0000dp</dimen>
    <dimen name="dp_189">189.0000dp</dimen>
    <dimen name="dp_190">190.0000dp</dimen>
    <dimen name="dp_191">191.0000dp</dimen>
    <dimen name="dp_192">192.0000dp</dimen>
    <dimen name="dp_193">193.0000dp</dimen>
    <dimen name="dp_194">194.0000dp</dimen>
    <dimen name="dp_195">195.0000dp</dimen>
    <dimen name="dp_196">196.0000dp</dimen>
    <dimen name="dp_197">197.0000dp</dimen>
    <dimen name="dp_198">198.0000dp</dimen>
    <dimen name="dp_199">199.0000dp</dimen>
    <dimen name="dp_200">200.0000dp</dimen>
    <dimen name="dp_201">201.0000dp</dimen>
    <dimen name="dp_202">202.0000dp</dimen>
    <dimen name="dp_203">203.0000dp</dimen>
    <dimen name="dp_204">204.0000dp</dimen>
    <dimen name="dp_205">205.0000dp</dimen>
    <dimen name="dp_206">206.0000dp</dimen>
    <dimen name="dp_207">207.0000dp</dimen>
    <dimen name="dp_208">208.0000dp</dimen>
    <dimen name="dp_209">209.0000dp</dimen>
    <dimen name="dp_210">210.0000dp</dimen>
    <dimen name="dp_211">211.0000dp</dimen>
    <dimen name="dp_212">212.0000dp</dimen>
    <dimen name="dp_213">213.0000dp</dimen>
    <dimen name="dp_214">214.0000dp</dimen>
    <dimen name="dp_215">215.0000dp</dimen>
    <dimen name="dp_216">216.0000dp</dimen>
    <dimen name="dp_217">217.0000dp</dimen>
    <dimen name="dp_218">218.0000dp</dimen>
    <dimen name="dp_219">219.0000dp</dimen>
    <dimen name="dp_220">220.0000dp</dimen>
    <dimen name="dp_221">221.0000dp</dimen>
    <dimen name="dp_222">222.0000dp</dimen>
    <dimen name="dp_223">223.0000dp</dimen>
    <dimen name="dp_224">224.0000dp</dimen>
    <dimen name="dp_225">225.0000dp</dimen>
    <dimen name="dp_226">226.0000dp</dimen>
    <dimen name="dp_227">227.0000dp</dimen>
    <dimen name="dp_228">228.0000dp</dimen>
    <dimen name="dp_229">229.0000dp</dimen>
    <dimen name="dp_230">230.0000dp</dimen>
    <dimen name="dp_231">231.0000dp</dimen>
    <dimen name="dp_232">232.0000dp</dimen>
    <dimen name="dp_233">233.0000dp</dimen>
    <dimen name="dp_234">234.0000dp</dimen>
    <dimen name="dp_235">235.0000dp</dimen>
    <dimen name="dp_236">236.0000dp</dimen>
    <dimen name="dp_237">237.0000dp</dimen>
    <dimen name="dp_238">238.0000dp</dimen>
    <dimen name="dp_239">239.0000dp</dimen>
    <dimen name="dp_240">240.0000dp</dimen>
    <dimen name="dp_241">241.0000dp</dimen>
    <dimen name="dp_242">242.0000dp</dimen>
    <dimen name="dp_243">243.0000dp</dimen>
    <dimen name="dp_244">244.0000dp</dimen>
    <dimen name="dp_245">245.0000dp</dimen>
    <dimen name="dp_246">246.0000dp</dimen>
    <dimen name="dp_247">247.0000dp</dimen>
    <dimen name="dp_248">248.0000dp</dimen>
    <dimen name="dp_249">249.0000dp</dimen>
    <dimen name="dp_250">250.0000dp</dimen>
    <dimen name="dp_251">251.0000dp</dimen>
    <dimen name="dp_252">252.0000dp</dimen>
    <dimen name="dp_253">253.0000dp</dimen>
    <dimen name="dp_254">254.0000dp</dimen>
    <dimen name="dp_255">255.0000dp</dimen>
    <dimen name="dp_256">256.0000dp</dimen>
    <dimen name="dp_257">257.0000dp</dimen>
    <dimen name="dp_258">258.0000dp</dimen>
    <dimen name="dp_259">259.0000dp</dimen>
    <dimen name="dp_260">260.0000dp</dimen>
    <dimen name="dp_261">261.0000dp</dimen>
    <dimen name="dp_262">262.0000dp</dimen>
    <dimen name="dp_263">263.0000dp</dimen>
    <dimen name="dp_264">264.0000dp</dimen>
    <dimen name="dp_265">265.0000dp</dimen>
    <dimen name="dp_266">266.0000dp</dimen>
    <dimen name="dp_267">267.0000dp</dimen>
    <dimen name="dp_268">268.0000dp</dimen>
    <dimen name="dp_269">269.0000dp</dimen>
    <dimen name="dp_270">270.0000dp</dimen>
    <dimen name="dp_271">271.0000dp</dimen>
    <dimen name="dp_272">272.0000dp</dimen>
    <dimen name="dp_273">273.0000dp</dimen>
    <dimen name="dp_274">274.0000dp</dimen>
    <dimen name="dp_275">275.0000dp</dimen>
    <dimen name="dp_276">276.0000dp</dimen>
    <dimen name="dp_277">277.0000dp</dimen>
    <dimen name="dp_278">278.0000dp</dimen>
    <dimen name="dp_279">279.0000dp</dimen>
    <dimen name="dp_280">280.0000dp</dimen>
    <dimen name="dp_281">281.0000dp</dimen>
    <dimen name="dp_282">282.0000dp</dimen>
    <dimen name="dp_283">283.0000dp</dimen>
    <dimen name="dp_284">284.0000dp</dimen>
    <dimen name="dp_285">285.0000dp</dimen>
    <dimen name="dp_286">286.0000dp</dimen>
    <dimen name="dp_287">287.0000dp</dimen>
    <dimen name="dp_288">288.0000dp</dimen>
    <dimen name="dp_289">289.0000dp</dimen>
    <dimen name="dp_290">290.0000dp</dimen>
    <dimen name="dp_291">291.0000dp</dimen>
    <dimen name="dp_292">292.0000dp</dimen>
    <dimen name="dp_293">293.0000dp</dimen>
    <dimen name="dp_294">294.0000dp</dimen>
    <dimen name="dp_295">295.0000dp</dimen>
    <dimen name="dp_296">296.0000dp</dimen>
    <dimen name="dp_297">297.0000dp</dimen>
    <dimen name="dp_298">298.0000dp</dimen>
    <dimen name="dp_299">299.0000dp</dimen>
    <dimen name="dp_300">300.0000dp</dimen>
    <dimen name="dp_301">301.0000dp</dimen>
    <dimen name="dp_302">302.0000dp</dimen>
    <dimen name="dp_303">303.0000dp</dimen>
    <dimen name="dp_304">304.0000dp</dimen>
    <dimen name="dp_305">305.0000dp</dimen>
    <dimen name="dp_306">306.0000dp</dimen>
    <dimen name="dp_307">307.0000dp</dimen>
    <dimen name="dp_308">308.0000dp</dimen>
    <dimen name="dp_309">309.0000dp</dimen>
    <dimen name="dp_310">310.0000dp</dimen>
    <dimen name="dp_311">311.0000dp</dimen>
    <dimen name="dp_312">312.0000dp</dimen>
    <dimen name="dp_313">313.0000dp</dimen>
    <dimen name="dp_314">314.0000dp</dimen>
    <dimen name="dp_315">315.0000dp</dimen>
    <dimen name="dp_316">316.0000dp</dimen>
    <dimen name="dp_317">317.0000dp</dimen>
    <dimen name="dp_318">318.0000dp</dimen>
    <dimen name="dp_319">319.0000dp</dimen>
    <dimen name="dp_320">320.0000dp</dimen>
    <dimen name="dp_321">321.0000dp</dimen>
    <dimen name="dp_322">322.0000dp</dimen>
    <dimen name="dp_323">323.0000dp</dimen>
    <dimen name="dp_324">324.0000dp</dimen>
    <dimen name="dp_325">325.0000dp</dimen>
    <dimen name="dp_326">326.0000dp</dimen>
    <dimen name="dp_327">327.0000dp</dimen>
    <dimen name="dp_328">328.0000dp</dimen>
    <dimen name="dp_329">329.0000dp</dimen>
    <dimen name="dp_330">330.0000dp</dimen>
    <dimen name="dp_331">331.0000dp</dimen>
    <dimen name="dp_332">332.0000dp</dimen>
    <dimen name="dp_333">333.0000dp</dimen>
    <dimen name="dp_334">334.0000dp</dimen>
    <dimen name="dp_335">335.0000dp</dimen>
    <dimen name="dp_336">336.0000dp</dimen>
    <dimen name="dp_337">337.0000dp</dimen>
    <dimen name="dp_338">338.0000dp</dimen>
    <dimen name="dp_339">339.0000dp</dimen>
    <dimen name="dp_340">340.0000dp</dimen>
    <dimen name="dp_341">341.0000dp</dimen>
    <dimen name="dp_342">342.0000dp</dimen>
    <dimen name="dp_343">343.0000dp</dimen>
    <dimen name="dp_344">344.0000dp</dimen>
    <dimen name="dp_345">345.0000dp</dimen>
    <dimen name="dp_346">346.0000dp</dimen>
    <dimen name="dp_347">347.0000dp</dimen>
    <dimen name="dp_348">348.0000dp</dimen>
    <dimen name="dp_349">349.0000dp</dimen>
    <dimen name="dp_350">350.0000dp</dimen>
    <dimen name="dp_351">351.0000dp</dimen>
    <dimen name="dp_352">352.0000dp</dimen>
    <dimen name="dp_353">353.0000dp</dimen>
    <dimen name="dp_354">354.0000dp</dimen>
    <dimen name="dp_355">355.0000dp</dimen>
    <dimen name="dp_356">356.0000dp</dimen>
    <dimen name="dp_357">357.0000dp</dimen>
    <dimen name="dp_358">358.0000dp</dimen>
    <dimen name="dp_359">359.0000dp</dimen>
    <dimen name="dp_360">360.0000dp</dimen>
    <dimen name="dp_365">365.0000dp</dimen>
    <dimen name="dp_370">370.0000dp</dimen>
    <dimen name="dp_400">400.0000dp</dimen>
    <dimen name="dp_410">410.0000dp</dimen>
    <dimen name="dp_422">422.0000dp</dimen>
    <dimen name="dp_472">472.0000dp</dimen>
    <dimen name="dp_500">500.0000dp</dimen>
    <dimen name="dp_600">600.0000dp</dimen>
    <dimen name="dp_640">640.0000dp</dimen>
    <dimen name="dp_720">720.0000dp</dimen>
    <dimen name="sp_6">6.0000sp</dimen>
    <dimen name="sp_7">7.0000sp</dimen>
    <dimen name="sp_8">8.0000sp</dimen>
    <dimen name="sp_9">9.0000sp</dimen>
    <dimen name="sp_10">10.0000sp</dimen>
    <dimen name="sp_11">11.0000sp</dimen>
    <dimen name="sp_12">12.0000sp</dimen>
    <dimen name="sp_13">13.0000sp</dimen>
    <dimen name="sp_14">14.0000sp</dimen>
    <dimen name="sp_15">15.0000sp</dimen>
    <dimen name="sp_16">16.0000sp</dimen>
    <dimen name="sp_17">17.0000sp</dimen>
    <dimen name="sp_18">18.0000sp</dimen>
    <dimen name="sp_19">19.0000sp</dimen>
    <dimen name="sp_20">20.0000sp</dimen>
    <dimen name="sp_21">21.0000sp</dimen>
    <dimen name="sp_22">22.0000sp</dimen>
    <dimen name="sp_23">23.0000sp</dimen>
    <dimen name="sp_24">24.0000sp</dimen>
    <dimen name="sp_25">25.0000sp</dimen>
    <dimen name="sp_28">28.0000sp</dimen>
    <dimen name="sp_30">30.0000sp</dimen>
    <dimen name="sp_32">32.0000sp</dimen>
    <dimen name="sp_34">34.0000sp</dimen>
    <dimen name="sp_36">36.0000sp</dimen>
    <dimen name="sp_38">38.0000sp</dimen>
    <dimen name="sp_40">40.0000sp</dimen>
    <dimen name="sp_42">42.0000sp</dimen>
    <dimen name="sp_48">48.0000sp</dimen>
</resources>
app_base/src/main/res/values/arrts.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomTextView">
        <attr name="border_color" format="color"/>
        <attr name="is_border_gradient" format="boolean"/>
        <attr name="border_gradient_start_color" format="color"/>
        <attr name="border_gradient_end_color" format="color"/>
        <attr name="border_width" format="dimension"/>
        <attr name="border_radius" format="dimension"/>
    </declare-styleable>
</resources>
build.gradle
@@ -10,6 +10,14 @@
            allowInsecureProtocol = true
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
        maven {
            allowInsecureProtocol = true
            url 'https://maven.aliyun.com/repository/google'
        }
        maven {
            allowInsecureProtocol = true
            url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
        }
        jcenter()
    }
    dependencies {
@@ -19,8 +27,8 @@
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}
screenMatch.properties
@@ -19,7 +19,7 @@
# Also need to match the phone screen of [match_dp].
# If you have another dp values.
# System default values is 240,320,360,384,392.7272,400,410,411.4285,432,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365
match_dp=
match_dp=240,320,360,384,392.7272,400,410,411.4285,432,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365,1440
# If you not wanna to match dp values above. Write some above values here, append value with "," .
# For example: 811,961,1365
ignore_dp=