first commit

This commit is contained in:
fengjignqi
2026-09-17 08:59:24 +08:00
parent ea41ddbe74
commit 6e9b97e42e
149 changed files with 5948 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/bottom_nav_selected" android:state_checked="true" />
<item android:color="@color/bottom_nav_unselected" />
</selector>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="#00A884" />
</shape>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape><corners android:radius="3dp" /><solid android:color="#E4E7EC" /></shape>
</item>
<item android:gravity="start" android:width="180dp">
<shape><corners android:radius="3dp" /><solid android:color="#00A884" /></shape>
</item>
</layer-list>

View 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="4dp" />
<solid android:color="#E7F7F2" />
</shape>

View File

@@ -0,0 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFFFF" />
<stroke android:width="1dp" android:color="#FFD0D5DD" />
<corners android:radius="6dp" />
</shape>

View File

@@ -0,0 +1,4 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFEFEFEF" />
<corners android:radius="14dp" />
</shape>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#FF000000" android:pathData="M12,4a8,8 0,1 1,-7.75 6H2l3,-3 3,3H6.3A6,6 0,1 0,12 6zM11,7h2v5l3,2 -1,1 -4,-2.5z" />
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#FF000000" android:pathData="M3,10.5L12,3l9,7.5V21a1,1 0,0 1,-1 1H4a1,1 0,0 1,-1 -1zM9,22v-7h6v7" />
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#FF000000" android:pathData="M12,12a4,4 0,1 0,0 -8a4,4 0,0 0,0 8zM4,21a8,8 0,0 1,16 0z" />
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#FF000000" android:pathData="M7,2h2v3h6V2h2v3h2a2,2 0,0 1,2 2v14a2,2 0,0 1,-2 2H5a2,2 0,0 1,-2 -2V7a2,2 0,0 1,2 -2h2zM5,9v12h14V9zM7,12h3v3H7zM12,12h3v3h-3zM7,17h3v2H7zM12,17h3v2h-3z" />
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

View File

@@ -0,0 +1,4 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F2F2F2" />
<corners android:radius="8dp" />
</shape>

View File

@@ -0,0 +1,4 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFD9DDE3" />
<corners android:radius="8dp" />
</shape>

View File

@@ -0,0 +1,4 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF1A72FF" />
<corners android:radius="8dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<stroke android:width="1dp" android:color="#E4E7EC" />
<corners android:radius="6dp" />
</shape>

View File

@@ -0,0 +1,357 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F5F7FA">
<!-- ConstraintLayout 不依赖摆放顺序,每个 View 都通过约束描述自己与其他 View 的关系。 -->
<ImageView
android:id="@+id/backButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="返回"
android:padding="14dp"
android:src="@drawable/img_back_black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/pageTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ConstraintLayout"
android:textColor="#18212F"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/backButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/backButton" />
<androidx.core.widget.NestedScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:clipToPadding="false"
android:fillViewport="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/backButton">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<!-- Guideline 是不可见的辅助线。这里固定在父布局宽度的 38%,比计算屏幕像素更适配。 -->
<androidx.constraintlayout.widget.Guideline
android:id="@+id/contentGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.38" />
<TextView
android:id="@+id/introText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="下面用一个项目概览页演示常用约束。可以结合 XML 注释观察效果。"
android:textColor="#667085"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/profileCard"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:cardCornerRadius="8dp"
app:cardElevation="5dp"
android:layout_marginHorizontal="5dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/introText"
app:strokeColor="#E4E7EC"
app:strokeWidth="1dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/avatarText"
android:layout_width="56dp"
android:layout_height="56dp"
android:background="@drawable/bg_constraint_avatar"
android:gravity="center"
android:text="CL"
android:textColor="#FFFFFF"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/nameText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:text="智能灌溉升级项目"
android:textColor="#18212F"
android:textSize="17sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/statusText"
app:layout_constraintStart_toEndOf="@id/avatarText"
app:layout_constraintTop_toTopOf="@id/avatarText" />
<TextView
android:id="@+id/statusText"
android:layout_width="wrap_content"
android:layout_height="26dp"
android:background="@drawable/bg_constraint_tag"
android:gravity="center"
android:paddingHorizontal="8dp"
android:text="进行中"
android:textColor="#00866A"
android:textSize="12sp"
app:layout_constraintBaseline_toBaselineOf="@id/nameText"
app:layout_constraintEnd_toEndOf="parent" />
<!-- baseline 约束让字号不同的文本共享文字基线,这是 RelativeLayout 不易表达的。 -->
<TextView
android:id="@+id/ownerText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:layout_marginTop="8dp"
android:text="负责人:Android 学习者"
android:textColor="#667085"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/avatarText"
app:layout_constraintTop_toBottomOf="@id/nameText" />
<!-- 0dp 表示 MATCH_CONSTRAINT:宽度由 start/end 两端约束共同决定,不是没有宽度。 -->
<View
android:id="@+id/progressView"
android:layout_width="0dp"
android:layout_height="6dp"
android:layout_marginTop="18dp"
android:background="@drawable/bg_constraint_progress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/avatarText" />
<TextView
android:id="@+id/progressLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="完成进度"
android:textColor="#667085"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progressView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="72%"
android:textColor="#00866A"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBaseline_toBaselineOf="@id/progressLabel"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/detailTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="项目详情"
android:textColor="#18212F"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/profileCard" />
<TextView
android:id="@+id/toggleDetailsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="隐藏详情"
android:textColor="#00866A"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/detailTitle"/>
<TextView
android:id="@+id/labelStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:text="开始时间"
android:textColor="#667085"
android:textSize="14sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/detailTitle" />
<TextView
android:id="@+id/labelOwner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:text="责任部门很长"
android:textColor="#667085"
android:textSize="14sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/labelStart" />
<!-- Barrier 会取多个参照 View 的最远边界;标签文字变化时,右侧值仍自动对齐且不重叠。 -->
<androidx.constraintlayout.widget.Barrier
android:id="@+id/labelBarrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="end"
app:constraint_referenced_ids="labelStart,labelOwner" />
<TextView
android:id="@+id/valueStart"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="2026-07-27"
android:textColor="#344054"
android:textSize="14sp"
app:layout_constraintBaseline_toBaselineOf="@id/labelStart"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/labelBarrier" />
<TextView
android:id="@+id/valueOwner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="移动研发组"
android:textColor="#344054"
android:textSize="14sp"
app:layout_constraintBaseline_toBaselineOf="@id/labelOwner"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/labelBarrier" />
<!-- Group 自身不绘制内容,可一次控制一组散落 View 的 visibility。 -->
<androidx.constraintlayout.widget.Group
android:id="@+id/detailGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="labelStart,labelOwner,valueStart,valueOwner" />
<TextView
android:id="@+id/statsTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="26dp"
android:text="本周数据"
android:textColor="#18212F"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/labelOwner" />
<!-- 三个 View 首尾互相约束形成水平 Chain。spread 模式自动均分剩余空间,免去 LinearLayout + weight。 -->
<TextView
android:id="@+id/statOne"
android:layout_width="0dp"
android:layout_height="72dp"
android:layout_marginTop="14dp"
android:background="#FFFFFF"
android:gravity="center"
android:text="12\n任务"
android:textColor="#344054"
android:textSize="14sp"
app:layout_constraintEnd_toStartOf="@id/statTwo"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/statsTitle" />
<TextView
android:id="@+id/statTwo"
android:layout_width="0dp"
android:layout_height="72dp"
android:layout_marginStart="8dp"
android:background="#FFFFFF"
android:gravity="center"
android:text="9\n完成"
android:textColor="#344054"
android:textSize="14sp"
app:layout_constraintEnd_toStartOf="@id/statThree"
app:layout_constraintStart_toEndOf="@id/statOne"
app:layout_constraintTop_toTopOf="@id/statOne" />
<TextView
android:id="@+id/statThree"
android:layout_width="0dp"
android:layout_height="72dp"
android:layout_marginStart="8dp"
android:background="#FFFFFF"
android:gravity="center"
android:text="3\n待处理"
android:textColor="#344054"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/statTwo"
app:layout_constraintTop_toTopOf="@id/statOne" />
<TextView
android:id="@+id/ratioTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="16:9 比例区域"
android:textColor="#18212F"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/contentGuideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/statOne" />
<!-- dimensionRatio 配合一边 0dp,可由另一边自动计算尺寸,图片/视频预览常用。 -->
<TextView
android:id="@+id/ratioPreview"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="12dp"
android:background="#DDEFEA"
android:gravity="center"
android:text="宽度由两侧约束\n高度按 16:9 自动计算"
android:textColor="#26705F"
android:textSize="14sp"
app:layout_constraintDimensionRatio="16:9"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ratioTitle" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="24dp"
android:background="#FFF7E6"
android:padding="14dp"
android:text="核心区别:LinearLayout 强调排列,RelativeLayout 强调相对规则;ConstraintLayout 用双向约束与辅助工具描述关系,复杂页面通常能减少嵌套层级。"
android:textColor="#7A4E00"
android:textSize="13sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ratioPreview" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F5F7FA"
android:padding="24dp">
<LinearLayout
android:id="@+id/loginContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.38">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login_title"
android:textColor="#18212F"
android:textSize="28sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/login_subtitle"
android:textColor="#667085"
android:textSize="15sp" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/usernameLayout"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:hint="@string/login_username">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/usernameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:maxLines="1" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/passwordLayout"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="@string/login_password"
app:endIconMode="password_toggle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/passwordEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:maxLines="1" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/loginButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="24dp"
android:text="@string/login_button"
android:textSize="16sp" />
<TextView
android:id="@+id/resultTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="@string/login_demo_hint"
android:textColor="#667085"
android:textSize="14sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/immersiveTopImageView"
android:layout_width="0dp"
android:layout_height="320dp"
android:contentDescription="@string/plan_top_image_description"
android:scaleType="centerCrop"
android:src="@drawable/img_top"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/statusBarView"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/color_zhu"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/bottomNavigation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/statusBarView" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/bottom_nav_background"
app:itemActiveIndicatorStyle="@null"
app:itemIconTint="@color/bottom_nav_item_color"
app:itemTextColor="@color/bottom_nav_item_color"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_navigation_menu" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,196 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F5F7FA"
android:orientation="vertical">
<View
android:id="@+id/statusBarView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/color_zhu" />
<RelativeLayout
android:id="@+id/rl_title"
android:layout_width="match_parent"
android:layout_height="48dp">
<include
android:id="@+id/included_title"
layout="@layout/include_activity_back_whitebg_layout" />
</RelativeLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/mine_title"
android:textColor="#18212F"
android:textSize="28sp"
android:textStyle="bold" />
<TextView
android:id="@+id/nicknameTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:textColor="#18212F"
android:textSize="22sp"
android:textStyle="bold" />
<TextView
android:id="@+id/phoneTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textColor="#344054"
android:textSize="16sp" />
<TextView
android:id="@+id/emailTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="#344054"
android:textSize="16sp" />
<TextView
android:id="@+id/userIdTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="#344054"
android:textIsSelectable="true"
android:textSize="16sp" />
<TextView
android:id="@+id/userTypeTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="#344054"
android:textSize="16sp" />
<TextView
android:id="@+id/loginDateTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="#344054"
android:textSize="16sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/reloadButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="32dp"
android:text="@string/mine_reload" />
<com.google.android.material.button.MaterialButton
android:id="@+id/checkVersionButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/mine_check_version" />
<com.google.android.material.button.MaterialButton
android:id="@+id/openLoginButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/mine_open_login" />
<com.google.android.material.button.MaterialButton
android:id="@+id/multiplePermissionButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="16dp"
android:text="@string/permission_test_multiple" />
<com.google.android.material.button.MaterialButton
android:id="@+id/locationPermissionButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/permission_test_location" />
<com.google.android.material.button.MaterialButton
android:id="@+id/normalDialogButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/dialog_test_normal" />
<com.google.android.material.button.MaterialButton
android:id="@+id/inputDialogButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/dialog_test_input" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:text="@string/picker_component_title"
android:textColor="#18212F"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/dateTimeResultTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:padding="12dp"
android:text="@string/picker_result_empty"
android:textColor="#344054"
android:textIsSelectable="true"
android:textSize="16sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/datePickerButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/picker_select_date" />
<com.google.android.material.button.MaterialButton
android:id="@+id/timePickerButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/picker_select_time" />
<com.google.android.material.button.MaterialButton
android:id="@+id/dateTimePickerButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/picker_select_date_time" />
<com.google.android.material.button.MaterialButton
android:id="@+id/recyclerViewDemoButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:text="@string/recycler_demo_entry" />
<com.google.android.material.button.MaterialButton
android:id="@+id/constraintLayoutDemoButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="24dp"
android:text="ConstraintLayout 综合示例" />
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/page_background"
android:clipToPadding="false"
android:padding="16dp" />

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/contentDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/dialog_round_efefef_bg"
android:orientation="vertical"
android:paddingTop="28dp"
android:paddingBottom="24dp">
<TextView
android:id="@+id/dialogTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FF333333"
android:textSize="17sp"
android:textStyle="bold" />
<EditText
android:id="@+id/dialogInput"
android:layout_width="match_parent"
android:layout_height="42dp"
android:layout_marginStart="25dp"
android:layout_marginTop="14dp"
android:layout_marginEnd="25dp"
android:background="@drawable/dialog_input_bg"
android:hint="请输入内容"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textColor="#FF222222"
android:textColorHint="#FF98A2B3"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginStart="35dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="35dp"
android:orientation="horizontal">
<TextView
android:id="@+id/dialogCancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="13dp"
android:layout_weight="1"
android:background="@drawable/permission_dialog_cancel_bg"
android:gravity="center"
android:text="取消"
android:textColor="#FF666666" />
<TextView
android:id="@+id/dialogConfirm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/permission_dialog_confirm_bg"
android:gravity="center"
android:text="确定"
android:textColor="#FFFFFFFF" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="96dp"
android:layout_height="96dp"
android:layout_gravity="center"
android:background="@drawable/loading_dialog_bg"
android:gravity="center"
android:orientation="vertical">
<ProgressBar
android:layout_width="48dp"
android:layout_height="48dp"
android:indeterminate="true"
android:indeterminateTint="@color/bottom_nav_selected" />
<TextView
android:id="@+id/loadingText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="加载中..."
android:textColor="@color/bottom_nav_selected"
android:textSize="12sp" />
</LinearLayout>
</FrameLayout>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/page_background">
<include
android:id="@+id/included_title"
layout="@layout/include_title_history_layout"
android:layout_width="match_parent"
android:layout_height="48dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/history_page_title"
android:textColor="@color/black"
android:textSize="24sp" />
</FrameLayout>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/page_background">
<RelativeLayout
android:id="@+id/rl_title"
android:layout_width="match_parent"
android:layout_height="48dp">
<include
android:id="@+id/included_title"
layout="@layout/include_title_home_layout" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/home_page_title"
android:textColor="@color/black"
android:textSize="24sp" />
</FrameLayout>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/page_background">
<include
android:id="@+id/included_title"
layout="@layout/include_title_mine_layout"
android:layout_width="match_parent"
android:layout_height="48dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/mine_page_title"
android:textColor="@color/black"
android:textSize="24sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/openComponentCenterButton"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="24dp"
android:text="@string/open_component_center" />
</LinearLayout>
</FrameLayout>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
<View
android:id="@+id/planContentBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="280dp"
android:background="@color/page_background" />
<ImageView
android:id="@+id/planBackButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/back_button_description"
android:padding="12dp"
android:src="@drawable/img_back_black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/plan_page_title"
android:textColor="@color/black"
android:textSize="24sp" />
</FrameLayout>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/relative_title"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/color_zhu">
<ImageView
android:id="@+id/img_back"
android:layout_width="22dp"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:src="@drawable/img_back_black"
android:layout_marginLeft="10dp"/>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="18sp"
android:textColor="#2E2E2E"
android:textStyle="bold"
android:text="标题名称"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
<TextView
android:id="@+id/tv_title_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/tv_title"
android:textSize="14sp"
android:textColor="#2E2E2E"
android:text="(剩余时间)"
android:layout_marginLeft="5dp"
android:visibility="gone"/>
<TextView
android:id="@+id/tv_title_right"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:textSize="14sp"
android:textColor="#333333"
android:text=""
android:layout_marginLeft="5dp"
android:visibility="visible"/>
<ImageView
android:id="@+id/img_setting"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:src="@android:drawable/ic_menu_preferences"
android:layout_marginRight="20dp"
android:visibility="gone"/>
</RelativeLayout>
</RelativeLayout>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/color_E9A01C">
<ImageView
android:id="@+id/img_back"
android:layout_width="22dp"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:src="@drawable/img_back_black" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:gravity="center"
android:text="@string/history_page_title"
android:textColor="@color/color_222222"
android:textSize="18sp"
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/color_zhu">
<ImageView
android:id="@+id/img_back"
android:layout_width="22dp"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:src="@drawable/img_back_black" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:gravity="center"
android:text="@string/home_page_title"
android:textColor="@color/color_222222"
android:textSize="18sp"
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/color_B85CE6">
<ImageView
android:id="@+id/img_back"
android:layout_width="22dp"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:src="@drawable/img_back_black" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:gravity="center"
android:text="@string/mine_page_title"
android:textColor="@color/color_222222"
android:textSize="18sp"
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/plan_top_image_color">
<ImageView
android:id="@+id/img_back"
android:layout_width="22dp"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:src="@drawable/img_back_black" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:gravity="center"
android:text="@string/plan_page_title"
android:textColor="@color/color_222222"
android:textSize="18sp"
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/recycler_item_bg"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/titleTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#18212F"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/idTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:textColor="#667085"
android:textSize="14sp" />
<TextView
android:id="@+id/statusTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textColor="#344054"
android:textSize="14sp" />
<TextView
android:id="@+id/timeTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textColor="#667085"
android:textSize="14sp" />
</LinearLayout>

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/contentDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/dialog_round_efefef_bg"
android:orientation="vertical"
android:paddingTop="24dp"
android:paddingBottom="24dp">
<TextView
android:id="@+id/permissionTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FF333333"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/permissionContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:textColor="#FF666666"
android:textSize="15sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginStart="35dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="35dp"
android:orientation="horizontal">
<TextView
android:id="@+id/permissionCancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="25dp"
android:layout_weight="1"
android:background="@drawable/permission_dialog_cancel_bg"
android:gravity="center"
android:text="不允许"
android:textColor="#FF666666" />
<TextView
android:id="@+id/permissionAllow"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/permission_dialog_confirm_bg"
android:gravity="center"
android:text="允许"
android:textColor="#FFFFFFFF" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/contentDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dialog_round_efefef_bg"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="12dp">
<ImageView
android:id="@+id/permissionIcon"
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@android:drawable/ic_dialog_info" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/permissionTopTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#FF222222"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/permissionTopContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textColor="#FF555555"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_home"
android:icon="@drawable/ic_nav_home"
android:title="@string/tab_home" />
<item
android:id="@+id/navigation_plan"
android:icon="@drawable/ic_nav_plan"
android:title="@string/tab_plan" />
<item
android:id="@+id/navigation_history"
android:icon="@drawable/ic_nav_history"
android:title="@string/tab_history" />
<item
android:id="@+id/navigation_mine"
android:icon="@drawable/ic_nav_mine"
android:title="@string/tab_mine" />
</menu>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.KotMvpProject" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

View File

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="mainBackgroundColor">#FFFFFF</color>
<color name="textPrimaryColor">#222222</color>
<color name="text_hint_theme_color">#838080</color>
<color name="color_subtitle">#666666</color>
<color name="color_gray_theme">#F9F9F9</color>
<color name="deviceControlItemColor">#FFFFFF</color>
<color name="transparent">#00000000</color>
<color name="color_white">#FFFFFF</color>
<color name="divider">#EEEEEE</color>
<color name="color_gray2">#F2F4F7</color>
<color name="color_gray_tab">#999999</color>
<color name="color_999999">#999999</color>
<color name="color_333333">#333333</color>
<color name="color_222222">#222222</color>
<color name="color_black1">#333333</color>
<color name="color_black">#000000</color>
<color name="color_E0E0E0">#E0E0E0</color>
<color name="color_f5f5f5">#F5F5F5</color>
<color name="color_ebebeb">#EBEBEB</color>
<color name="color_f7f7f7">#F7F7F7</color>
<color name="color_838080">#838080</color>
<color name="color_f3f3f3">#F3F3F3</color>
<color name="color_e4fbfa">#E4FBFA</color>
<color name="color_d9d9d9">#D9D9D9</color>
<color name="color_dcdfe6">#DCDFE6</color>
<color name="color_e34d59">#E34D59</color>
<color name="text_hint">#707070</color>
<color name="color_ff999999">#ff999999</color>
<!--<color name="">#0C6BFC</color>-->
<!--视频准备页面,背景半透明颜色-->
<color name="color_1d76fe">#1D76FE</color>
<color name="color_1a72ff">#1A72FF</color>
<color name="color_zhu">#00CA9D</color>
<color name="color_c8c8c8">#C8C8C8</color>
<color name="color_F6F6F6">#F6F6F6</color>
<color name="color_2E2E2E">#2E2E2E</color>
<color name="color_e1e1e1">#E1E1E1</color>
<color name="color_676767">#676767</color>
<color name="color_c5d7e1">#C5D7E1</color>
<color name="color_EFEFEF">#EFEFEF</color>
<!-- 主题适配 -->
<color name="color_666666">#666666</color>
<color name="color_F9F9F9">#F9F9F9</color>
<color name="color_DDE6F5">#DDE6F5</color>
<color name="color_2E9CF3">#2E9CF3</color>
<color name="color_F7F9FA">#F7F9FA</color>
<color name="color_F8F9FA">#F8F9FA</color>
<color name="color_F0F6FF">#F0F6FF</color>
<color name="color_D1DCEE">#D1DCEE</color>
<color name="color_319EF4">#319EF4</color>
<color name="color_E5F2FB">#E5F2FB</color>
<color name="color_E9A01C">#E9A01C</color>
<color name="color_C1CFE6">#C1CFE6</color>
<color name="color_FAEFFF">#FAEFFF</color>
<color name="color_ECFAED">#ECFAED</color>
<color name="color_ECF2FA">#ECF2FA</color>
<color name="color_FFF5E0">#FFF5E0</color>
<color name="color_B85CE6">#B85CE6</color>
<color name="color_24B326">#24B326</color>
<color name="color_2A5CAA">#2A5CAA</color>
<color name="color_E69900">#E69900</color>
<color name="color_E9EEF6">#E9EEF6</color>
<color name="color_F4F7FB">#F4F7FB</color>
<color name="color_4CAF50">#4CAF50</color>
<color name="color_A8AFBC">#A8AFBC</color>
<color name="color_6BB96F">#6BB96F</color>
<color name="color_E4F3E4">#E4F3E4</color>
<color name="color_FEE6E0">#FEE6E0</color>
<color name="color_4FB153">#4FB153</color>
<color name="color_FE5733">#FE5733</color>
<color name="color_D5AC26">#D5AC26</color>
<color name="color_FFC107">#FFC107</color>
<color name="color_FFFBE5">#FFFBE5</color>
<color name="color_FFD700">#FFD700</color>
<color name="color_7A8699">#7A8699</color>
<color name="color_F0F0F2">#F0F0F2</color>
<color name="color_F5F6F7">#F5F6F7</color>
<color name="color_CCE0FF">#CCE0FF</color>
<color name="color_F7F7F7">#F7F7F7</color>
<color name="color_E6E6E6">#E6E6E6</color>
<color name="color_E60000">#E60000</color>
<color name="color_E8EDF5">#E8EDF5</color>
<color name="color_FFF7CC">#FFF7CC</color>
<color name="color_FDF8D8">#FDF8D8</color>
<color name="color_E6BF00">#E6BF00</color>
<color name="color_F7D73B">#F7D73B</color>
<color name="color_FEDC18">#FEDC18</color>
<color name="color_60B864">#60B864</color>
<color name="color_FF3B30">#FF3B30</color>
<color name="color_EDF6ED">#EDF6ED</color>
<color name="color_F39E0F">#F39E0F</color>
<color name="color_FEF3E1">#FEF3E1</color>
<color name="color_F7D49A">#F7D49A</color>
<color name="color_E7EEF8">#E7EEF8</color>
<color name="color_CCCCCC">#CCCCCC</color>
<color name="color_ECF6FF">#ECF6FF</color>
<color name="color_F0F8F1">#F0F8F1</color>
<color name="color_FFFCEB">#FFFCEB</color>
<color name="color_1D90FF">#1D90FF</color>
<color name="color_8000CA9D">#8000CA9D</color>
<!--白色透明度-->
<!--黑色透明度-->
<color name="translucent_black_95">#0d000000</color>
<!-- KotMvpProject 基础页面和日期选择器颜色。 -->
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="bottom_nav_selected">#2E7D32</color>
<color name="bottom_nav_unselected">#8A8A8A</color>
<color name="page_background">#F7F8FA</color>
<color name="bottom_nav_background">#FFFFFFFF</color>
<color name="plan_top_image_color">#C51609</color>
</resources>

View File

@@ -0,0 +1,38 @@
<resources>
<string name="app_name">KotMvpProject</string>
<string name="login_title">账号登录</string>
<string name="login_subtitle">请输入账号和密码</string>
<string name="login_username">手机号</string>
<string name="login_password">密码</string>
<string name="login_button">登录</string>
<string name="login_demo_hint">登录成功后将自动保存 Token</string>
<string name="mine_open_login">前往登录页面</string>
<string name="plan_top_image_description">计划页顶部背景图</string>
<string name="back_button_description">返回</string>
<string name="mine_title">个人中心</string>
<string name="mine_reload">重新加载</string>
<string name="mine_check_version">检测新版本</string>
<string name="permission_test_multiple">测试相机和麦克风权限</string>
<string name="permission_test_location">测试定位权限</string>
<string name="dialog_test_normal">测试普通弹窗</string>
<string name="dialog_test_input">测试输入弹窗</string>
<string name="tab_home">首页</string>
<string name="tab_plan">计划</string>
<string name="tab_history">历史</string>
<string name="tab_mine">我的</string>
<string name="home_page_title">首页</string>
<string name="plan_page_title">计划</string>
<string name="history_page_title">历史</string>
<string name="mine_page_title">我的</string>
<string name="open_component_center">打开功能组件中心</string>
<string name="picker_component_title">日期时间选择组件</string>
<string name="picker_select_date">选择日期</string>
<string name="picker_select_time">选择时间</string>
<string name="picker_select_date_time">选择日期时间</string>
<string name="picker_result_empty">暂未选择</string>
<string name="recycler_demo_entry">RecyclerView 列表示例</string>
<string name="recycler_demo_title">列表组件示例</string>
<string name="recycler_item_id">编号:%1$d</string>
<string name="recycler_item_status">状态:%1$s</string>
<string name="recycler_item_update_time">更新时间:%1$s</string>
</resources>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 加载弹窗统一使用无标题、透明背景和可暗化的浮层窗口。 -->
<style name="LoadingDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
</style>
</resources>

View File

@@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.KotMvpProject" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample backup rules file; uncomment and customize as necessary.
See https://developer.android.com/guide/topics/data/autobackup
for details.
Note: This file is ignored for devices older than API 31
See https://developer.android.com/about/versions/12/backup-restore
-->
<full-backup-content>
<!--
<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="device.xml"/>
-->
</full-backup-content>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample data extraction rules file; uncomment and customize as necessary.
See https://developer.android.com/about/versions/12/backup-restore#xml-changes
for details.
-->
<data-extraction-rules>
<cloud-backup>
<!-- TODO: Use <include> and <exclude> to control what is backed up.
<include .../>
<exclude .../>
-->
</cloud-backup>
<!--
<device-transfer>
<include .../>
<exclude .../>
</device-transfer>
-->
</data-extraction-rules>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="preview_cache" path="." />
<external-files-path name="external_files" path="." />
<external-files-path name="updates" path="Download/" />
</paths>