.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"> <!-- <!– 按压状态 –>--> <!-- <item android:drawable="@drawable/ic_function_selected" android:state_checked="true" />--> <!-- 按压状态 --> <item android:drawable="@drawable/ic_function_selected" android:state_checked="true" /> <!-- <!– 默认状态 –>--> <!-- <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"> <!-- <!– 按压状态 –>--> <!-- <item android:drawable="@drawable/ic_home_selected" android:state_checked="true" />--> <!-- 按压状态 --> <item android:drawable="@drawable/ic_home_selected" android:state_checked="true" /> <!-- <!– 默认状态 –>--> <!-- <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"> <!-- <!– 按压状态 –>--> <!-- <item android:drawable="@drawable/ic_personal_center_selected" android:state_checked="true" />--> <!-- 按压状态 --> <item android:drawable="@drawable/ic_personal_center_selected" android:state_checked="true" /> <!-- <!– 默认状态 –>--> <!-- <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=