401 lines
18 KiB
XML
401 lines
18 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
android:id="@+id/ucvlRoot"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:background="@color/ucvl_surface"
|
|
android:fillViewport="true">
|
|
|
|
<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:background="@color/ucvl_navy"
|
|
android:gravity="center_vertical"
|
|
android:orientation="horizontal"
|
|
android:paddingStart="22dp"
|
|
android:paddingTop="22dp"
|
|
android:paddingEnd="22dp"
|
|
android:paddingBottom="22dp">
|
|
|
|
<ImageView
|
|
android:layout_width="72dp"
|
|
android:layout_height="72dp"
|
|
android:contentDescription="@string/app_name"
|
|
android:src="@drawable/zonghengjia_logo" />
|
|
|
|
<LinearLayout
|
|
android:layout_width="0dp"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginStart="16dp"
|
|
android:layout_weight="1"
|
|
android:orientation="vertical">
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="优创⁺纵横家"
|
|
android:textColor="@android:color/white"
|
|
android:textSize="24sp"
|
|
android:textStyle="bold" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="4dp"
|
|
android:text="Powered by 优创未来 · Android"
|
|
android:textColor="#B8DAF4"
|
|
android:textSize="13sp" />
|
|
</LinearLayout>
|
|
</LinearLayout>
|
|
|
|
<LinearLayout
|
|
android:id="@+id/loginPanel"
|
|
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="登录优创⁺纵横家"
|
|
android:textColor="@color/ucvl_text"
|
|
android:textSize="25sp"
|
|
android:textStyle="bold" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="6dp"
|
|
android:text="使用公司分配的用户名或邮箱登录"
|
|
android:textColor="@color/ucvl_muted"
|
|
android:textSize="14sp" />
|
|
|
|
<EditText
|
|
android:id="@+id/loginInput"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="56dp"
|
|
android:layout_marginTop="28dp"
|
|
android:autofillHints="username"
|
|
android:background="@drawable/ucvl_input"
|
|
android:hint="用户名 / 邮箱"
|
|
android:inputType="textEmailAddress"
|
|
android:maxLines="1"
|
|
android:textColor="@color/ucvl_text"
|
|
android:textColorHint="@color/ucvl_muted" />
|
|
|
|
<EditText
|
|
android:id="@+id/passwordInput"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="56dp"
|
|
android:layout_marginTop="14dp"
|
|
android:autofillHints="password"
|
|
android:background="@drawable/ucvl_input"
|
|
android:hint="密码"
|
|
android:imeOptions="actionDone"
|
|
android:inputType="textPassword"
|
|
android:maxLines="1"
|
|
android:textColor="@color/ucvl_text"
|
|
android:textColorHint="@color/ucvl_muted" />
|
|
|
|
<TextView
|
|
android:id="@+id/loginError"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="10dp"
|
|
android:textColor="@color/ucvl_danger"
|
|
android:textSize="13sp" />
|
|
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/loginButton"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="54dp"
|
|
android:layout_marginTop="14dp"
|
|
android:text="安全登录"
|
|
android:textSize="16sp"
|
|
app:backgroundTint="@color/ucvl_royal"
|
|
app:cornerRadius="12dp" />
|
|
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/registerButton"
|
|
style="@style/Widget.MaterialComponents.Button.TextButton"
|
|
android:layout_width="match_parent" android:layout_height="48dp"
|
|
android:text="注册新用户 · 审核后使用" />
|
|
|
|
<TextView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="24dp"
|
|
android:gravity="center"
|
|
android:text="账号停用后,设备授权与线路会自动失效"
|
|
android:textColor="@color/ucvl_muted"
|
|
android:textSize="12sp" />
|
|
</LinearLayout>
|
|
|
|
<LinearLayout
|
|
android:id="@+id/dashboardPanel"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:padding="18dp"
|
|
android:visibility="gone">
|
|
|
|
<TextView
|
|
android:id="@+id/welcomeText"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:textColor="@color/ucvl_text"
|
|
android:textSize="23sp"
|
|
android:textStyle="bold" />
|
|
|
|
<TextView
|
|
android:id="@+id/accountText"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="4dp"
|
|
android:textColor="@color/ucvl_muted"
|
|
android:textSize="13sp" />
|
|
|
|
<com.google.android.material.card.MaterialCardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="18dp"
|
|
app:cardBackgroundColor="@android:color/white"
|
|
app:cardCornerRadius="18dp"
|
|
app:strokeColor="@color/ucvl_border"
|
|
app:strokeWidth="1dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:gravity="center_vertical"
|
|
android:orientation="horizontal"
|
|
android:padding="20dp">
|
|
|
|
<TextView
|
|
android:id="@+id/statusDot"
|
|
android:layout_width="36dp"
|
|
android:layout_height="wrap_content"
|
|
android:gravity="center"
|
|
android:text="●"
|
|
android:textColor="@color/ucvl_muted"
|
|
android:textSize="24sp" />
|
|
|
|
<LinearLayout
|
|
android:layout_width="0dp"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginStart="8dp"
|
|
android:layout_weight="1"
|
|
android:orientation="vertical">
|
|
|
|
<TextView
|
|
android:id="@+id/statusTitle"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:text="未连接"
|
|
android:textColor="@color/ucvl_text"
|
|
android:textSize="20sp"
|
|
android:textStyle="bold" />
|
|
|
|
<TextView
|
|
android:id="@+id/statusDetail"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="3dp"
|
|
android:text="点击连接,由平台自动选择节点"
|
|
android:textColor="@color/ucvl_muted"
|
|
android:textSize="13sp" />
|
|
</LinearLayout>
|
|
</LinearLayout>
|
|
</com.google.android.material.card.MaterialCardView>
|
|
|
|
<com.google.android.material.card.MaterialCardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="14dp"
|
|
app:cardBackgroundColor="@android:color/white"
|
|
app:cardCornerRadius="18dp"
|
|
app:strokeColor="@color/ucvl_border"
|
|
app:strokeWidth="1dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:padding="18dp">
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="当前工作节点"
|
|
android:textColor="@color/ucvl_text"
|
|
android:textStyle="bold" />
|
|
|
|
<TextView
|
|
android:id="@+id/currentNode"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="6dp"
|
|
android:text="连接后显示实际工作节点"
|
|
android:textColor="@color/ucvl_royal" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="16dp"
|
|
android:text="代理模式"
|
|
android:textColor="@color/ucvl_text"
|
|
android:textStyle="bold" />
|
|
|
|
<Spinner
|
|
android:id="@+id/routeSpinner"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="52dp"
|
|
android:layout_marginTop="6dp"
|
|
android:background="@drawable/ucvl_input" />
|
|
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/connectButton"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="56dp"
|
|
android:layout_marginTop="20dp"
|
|
android:text="连接"
|
|
android:textSize="17sp"
|
|
app:backgroundTint="@color/ucvl_royal"
|
|
app:cornerRadius="14dp" />
|
|
</LinearLayout>
|
|
</com.google.android.material.card.MaterialCardView>
|
|
|
|
<com.google.android.material.card.MaterialCardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="14dp"
|
|
app:cardBackgroundColor="@android:color/white"
|
|
app:cardCornerRadius="18dp"
|
|
app:strokeColor="@color/ucvl_border"
|
|
app:strokeWidth="1dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:padding="18dp">
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="本期流量"
|
|
android:textColor="@color/ucvl_text"
|
|
android:textSize="16sp"
|
|
android:textStyle="bold" />
|
|
|
|
<TextView
|
|
android:id="@+id/usageText"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="8dp"
|
|
android:textColor="@color/ucvl_royal"
|
|
android:textSize="17sp"
|
|
android:textStyle="bold" />
|
|
|
|
<ProgressBar
|
|
android:id="@+id/usageProgress"
|
|
style="?android:attr/progressBarStyleHorizontal"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="10dp"
|
|
android:layout_marginTop="10dp"
|
|
android:max="100"
|
|
android:progressTint="@color/ucvl_blue" />
|
|
|
|
<TextView
|
|
android:id="@+id/planText"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="10dp"
|
|
android:textColor="@color/ucvl_muted"
|
|
android:textSize="13sp" />
|
|
|
|
<TextView android:id="@+id/proxySpeed" android:layout_width="match_parent"
|
|
android:layout_height="wrap_content" android:layout_marginTop="14dp"
|
|
android:text="↑ 0 B/s ↓ 0 B/s" android:textColor="@color/ucvl_royal" />
|
|
<com.v2ray.ang.ucvl.UcvlTrafficChart android:id="@+id/speedChart"
|
|
android:layout_width="match_parent" android:layout_height="56dp"
|
|
android:contentDescription="近期代理上传蓝线、下载青线速率,每三秒采样" />
|
|
<TextView android:id="@+id/proxyTotal" android:layout_width="match_parent"
|
|
android:layout_height="wrap_content" android:text="本次代理 0 B · 仅统计 proxy 出站"
|
|
android:textColor="@color/ucvl_muted" android:textSize="12sp" />
|
|
<TextView android:layout_width="match_parent" android:layout_height="wrap_content"
|
|
android:layout_marginTop="10dp" android:text="近 7 天代理用量 · 蓝色上传 / 青色下载"
|
|
android:textColor="@color/ucvl_muted" android:textSize="12sp" />
|
|
<com.v2ray.ang.ucvl.UcvlTrafficChart android:id="@+id/usageChart"
|
|
android:layout_width="match_parent" android:layout_height="56dp"
|
|
android:contentDescription="近七天代理上传和下载用量" />
|
|
</LinearLayout>
|
|
</com.google.android.material.card.MaterialCardView>
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="16dp"
|
|
android:orientation="horizontal">
|
|
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/refreshButton"
|
|
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
|
android:layout_width="0dp"
|
|
android:layout_height="48dp"
|
|
android:layout_weight="1"
|
|
android:text="刷新" />
|
|
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/logoutButton"
|
|
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
|
android:layout_width="0dp"
|
|
android:layout_height="48dp"
|
|
android:layout_marginStart="10dp"
|
|
android:layout_weight="1"
|
|
android:text="退出账号" />
|
|
</LinearLayout>
|
|
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/exitButton"
|
|
style="@style/Widget.MaterialComponents.Button.TextButton"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="48dp"
|
|
android:layout_marginTop="4dp"
|
|
android:text="断开并退出应用"
|
|
android:textColor="@color/ucvl_danger" />
|
|
|
|
<TextView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="12dp"
|
|
android:gravity="center"
|
|
android:text="公司策略 · 代理流量统计\nvpn.toplc.cn · © 2026 UCVL"
|
|
android:textColor="@color/ucvl_muted"
|
|
android:textSize="12sp" />
|
|
</LinearLayout>
|
|
<TextView
|
|
android:id="@+id/updateStatus"
|
|
android:layout_width="match_parent" android:layout_height="wrap_content"
|
|
android:gravity="center" android:textSize="12sp" android:paddingHorizontal="20dp"
|
|
android:textColor="@color/ucvl_muted" />
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/checkUpdatesButton"
|
|
style="@style/Widget.MaterialComponents.Button.TextButton"
|
|
android:layout_width="match_parent" android:layout_height="48dp"
|
|
android:text="检查软件更新" />
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/openSourceButton"
|
|
style="@style/Widget.MaterialComponents.Button.TextButton"
|
|
android:layout_width="match_parent" android:layout_height="48dp"
|
|
android:text="版本与开源许可" />
|
|
</LinearLayout>
|
|
</androidx.core.widget.NestedScrollView>
|