This commit is contained in:
ShirosakiMio 2024-09-20 19:29:25 +08:00
parent 10e761f2e7
commit ae2d325340
12 changed files with 330 additions and 204 deletions

View File

@ -344,6 +344,7 @@ class MainActivity : FCLActivity(), OnSelectListener, View.OnClickListener {
accountHint.text = getString(R.string.account_state_add) accountHint.text = getString(R.string.account_state_add)
avatar.setBackgroundDrawable( avatar.setBackgroundDrawable(
BitmapDrawable( BitmapDrawable(
resources,
TexturesLoader.toAvatar( TexturesLoader.toAvatar(
TexturesLoader.getDefaultSkin(TextureModel.ALEX).image, TexturesLoader.getDefaultSkin(TextureModel.ALEX).image,
ConvertUtils.dip2px( ConvertUtils.dip2px(
@ -473,7 +474,7 @@ class MainActivity : FCLActivity(), OnSelectListener, View.OnClickListener {
bind.apply { bind.apply {
val speed = ThemeEngine.getInstance().getTheme().animationSpeed val speed = ThemeEngine.getInstance().getTheme().animationSpeed
AnimUtil.playTranslationX( AnimUtil.playTranslationX(
listOf(leftMenu, splitLeft), listOf(leftMenu),
speed * 100L, speed * 100L,
-100f, -100f,
0f 0f

View File

@ -61,6 +61,7 @@ public class ProfileListAdapter extends FCLAdapter {
viewHolder.parent.setBackground(profile == Profiles.getSelectedProfile() ? getContext().getDrawable(R.drawable.bg_container_transparent_selected) : getContext().getDrawable(R.drawable.bg_container_transparent_clickable)); viewHolder.parent.setBackground(profile == Profiles.getSelectedProfile() ? getContext().getDrawable(R.drawable.bg_container_transparent_selected) : getContext().getDrawable(R.drawable.bg_container_transparent_clickable));
viewHolder.name.setText(profile.getName()); viewHolder.name.setText(profile.getName());
viewHolder.path.setText(profile.getGameDir().getAbsolutePath()); viewHolder.path.setText(profile.getGameDir().getAbsolutePath());
viewHolder.path.setSelected(true);
viewHolder.parent.setOnClickListener(view1 -> { viewHolder.parent.setOnClickListener(view1 -> {
Profiles.setSelectedProfile(profile); Profiles.setSelectedProfile(profile);
notifyDataSetChanged(); notifyDataSetChanged();

View File

@ -1,305 +1,310 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout> <layout>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/background"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/background"
tools:context=".activity.MainActivity"> tools:context=".activity.MainActivity">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/left_menu" android:id="@+id/left_menu"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:clipChildren="false" android:clipChildren="false"
android:clipToPadding="false" android:clipToPadding="false"
android:paddingStart="5dp"
android:paddingTop="10dp"
android:paddingEnd="5dp"
android:paddingBottom="10dp"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent">
<com.tungsten.fcllibrary.component.view.FCLMenuView <com.tungsten.fcllibrary.component.view.FCLMenuView
android:id="@+id/home"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/manage"
android:src="@drawable/ic_baseline_home_24" android:src="@drawable/ic_baseline_home_24"
android:id="@+id/home"/> app:layout_constraintBottom_toTopOf="@id/manage"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.tungsten.fcllibrary.component.view.FCLMenuView <com.tungsten.fcllibrary.component.view.FCLMenuView
android:layout_marginTop="10dp" android:id="@+id/manage"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/home" android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/download"
android:src="@drawable/ic_baseline_build_24" android:src="@drawable/ic_baseline_build_24"
android:id="@+id/manage"/> app:layout_constraintBottom_toTopOf="@id/download"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/home" />
<com.tungsten.fcllibrary.component.view.FCLMenuView <com.tungsten.fcllibrary.component.view.FCLMenuView
android:layout_marginTop="10dp" android:id="@+id/download"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/manage" android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/controller"
android:src="@drawable/ic_baseline_cloud_download_24" android:src="@drawable/ic_baseline_cloud_download_24"
android:id="@+id/download"/> app:layout_constraintBottom_toTopOf="@id/controller"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/manage" />
<com.tungsten.fcllibrary.component.view.FCLMenuView <com.tungsten.fcllibrary.component.view.FCLMenuView
android:layout_marginTop="10dp" android:id="@+id/controller"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/download" android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/multiplayer"
android:src="@drawable/ic_baseline_videogame_asset_24" android:src="@drawable/ic_baseline_videogame_asset_24"
android:id="@+id/controller"/> app:layout_constraintBottom_toTopOf="@id/multiplayer"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/download" />
<com.tungsten.fcllibrary.component.view.FCLMenuView <com.tungsten.fcllibrary.component.view.FCLMenuView
android:visibility="gone" android:id="@+id/multiplayer"
android:layout_marginTop="10dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/controller" android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/setting"
android:src="@drawable/ic_baseline_wifi_24" android:src="@drawable/ic_baseline_wifi_24"
android:id="@+id/multiplayer"/> android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/setting"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/controller" />
<com.tungsten.fcllibrary.component.view.FCLMenuView <com.tungsten.fcllibrary.component.view.FCLMenuView
android:layout_marginTop="10dp" android:id="@+id/setting"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/multiplayer" android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/back"
android:src="@drawable/ic_baseline_settings_24" android:src="@drawable/ic_baseline_settings_24"
android:id="@+id/setting"/> app:layout_constraintBottom_toTopOf="@id/back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/multiplayer" />
<com.tungsten.fcllibrary.component.view.FCLMenuView <com.tungsten.fcllibrary.component.view.FCLMenuView
android:layout_marginTop="10dp" android:id="@+id/back"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/setting" android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:src="@drawable/ic_baseline_arrow_back_24" android:src="@drawable/ic_baseline_arrow_back_24"
android:id="@+id/back"/> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/setting" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<View <com.tungsten.fcllibrary.component.view.FCLView
android:background="@android:color/darker_gray"
android:id="@+id/split_left"
android:layout_width="1dp"
android:layout_height="match_parent"
app:layout_constraintStart_toEndOf="@id/left_menu"/>
<View
android:background="@android:color/darker_gray"
android:id="@+id/split_right" android:id="@+id/split_right"
android:layout_width="1dp" android:layout_width="1dp"
android:layout_height="match_parent" android:layout_height="match_parent"
app:layout_constraintEnd_toStartOf="@id/right_menu"/> android:background="@android:color/darker_gray"
app:layout_constraintEnd_toStartOf="@id/right_menu"
app:use_theme_color="true" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:background="@color/ui_bg_color"
android:id="@+id/right_menu" android:id="@+id/right_menu"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/ui_bg_color"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1" app:layout_constraintHorizontal_bias="1"
app:layout_constraintWidth_percent="0.25"> app:layout_constraintWidth_percent="0.25">
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:id="@+id/account_textview" android:id="@+id/account_textview"
android:singleLine="true"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="10dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:singleLine="true"
android:text="@string/account" android:text="@string/account"
android:textSize="11sp" android:textSize="11sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/> app:use_theme_color="true" />
<View <com.tungsten.fcllibrary.component.view.FCLView
android:id="@+id/view" android:id="@+id/view"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="5dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="10dp"
android:background="@android:color/darker_gray" android:background="@android:color/darker_gray"
app:layout_constraintTop_toBottomOf="@id/account_textview"/> app:layout_constraintTop_toBottomOf="@id/account_textview"
app:use_theme_color="true" />
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_marginTop="10dp"
android:background="@drawable/bg_container_transparent_clickable"
android:focusable="true"
android:clickable="true"
android:id="@+id/account" android:id="@+id/account"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:layout_marginTop="10dp"
android:padding="10dp" android:background="@drawable/bg_container_transparent_clickable"
app:layout_constraintTop_toBottomOf="@+id/view" android:clickable="true"
android:clipChildren="false" android:clipChildren="false"
android:clipToPadding="false" android:clipToPadding="false"
android:stateListAnimator="@xml/anim_scale"> android:focusable="true"
android:orientation="horizontal"
android:padding="10dp"
android:stateListAnimator="@xml/anim_scale"
app:layout_constraintTop_toBottomOf="@+id/view">
<com.tungsten.fcllibrary.component.view.FCLImageView <com.tungsten.fcllibrary.component.view.FCLImageView
android:id="@+id/avatar"
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:layout_gravity="center" android:layout_gravity="center"
android:id="@+id/avatar"
android:focusable="true"
android:clickable="true" android:clickable="true"
android:stateListAnimator="@xml/anim_scale_large"/> android:focusable="true"
android:stateListAnimator="@xml/anim_scale_large" />
<LinearLayout <LinearLayout
android:layout_marginStart="10dp"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:singleLine="true"
android:id="@+id/account_name" android:id="@+id/account_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/account_state_no_account"/> android:singleLine="true"
android:text="@string/account_state_no_account"
app:use_theme_color="true" />
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:singleLine="true"
android:id="@+id/account_hint" android:id="@+id/account_hint"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true"
android:text="@string/account_state_add" android:text="@string/account_state_add"
android:textSize="11sp"/> android:textSize="11sp"
app:use_theme_color="true" />
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatImageView <com.tungsten.fcllibrary.component.view.FCLImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@drawable/ic_baseline_list_24"/> android:background="@drawable/ic_baseline_list_24"
app:use_theme_color="true" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:id="@+id/version_textview" android:id="@+id/version_textview"
android:singleLine="true"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="10dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:singleLine="true"
android:text="@string/version" android:text="@string/version"
android:textSize="11sp" android:textSize="11sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/account" app:layout_constraintTop_toBottomOf="@id/account"
app:layout_constraintStart_toStartOf="parent"/> app:use_theme_color="true" />
<View <com.tungsten.fcllibrary.component.view.FCLView
android:id="@+id/view2" android:id="@+id/view2"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="5dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="10dp"
android:background="@android:color/darker_gray" android:background="@android:color/darker_gray"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/version_textview" app:layout_constraintTop_toBottomOf="@id/version_textview"
app:layout_constraintStart_toStartOf="parent"/> app:use_theme_color="true" />
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_marginTop="10dp"
android:background="@drawable/bg_container_transparent_clickable"
android:focusable="true"
android:clickable="true"
android:id="@+id/version" android:id="@+id/version"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/bg_container_transparent_clickable"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="10dp" android:padding="10dp"
app:layout_constraintTop_toBottomOf="@id/view2" android:stateListAnimator="@xml/anim_scale"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
android:stateListAnimator="@xml/anim_scale"> app:layout_constraintTop_toBottomOf="@id/view2">
<com.tungsten.fcllibrary.component.view.FCLImageView <com.tungsten.fcllibrary.component.view.FCLImageView
android:id="@+id/icon"
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:layout_gravity="center" android:layout_gravity="center" />
android:id="@+id/icon"/>
<LinearLayout <LinearLayout
android:layout_marginStart="10dp"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:singleLine="true"
android:id="@+id/version_name" android:id="@+id/version_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/version_no_version"/> android:singleLine="true"
android:text="@string/version_no_version"
app:use_theme_color="true" />
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:singleLine="true"
android:id="@+id/version_hint" android:id="@+id/version_hint"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true"
android:text="@string/version_manage" android:text="@string/version_manage"
android:textSize="11sp"/> android:textSize="11sp"
app:use_theme_color="true" />
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatImageView <com.tungsten.fcllibrary.component.view.FCLImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@drawable/ic_baseline_list_24"/> android:background="@drawable/ic_baseline_list_24"
app:use_theme_color="true" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
<com.tungsten.fcllibrary.component.view.FCLProgressBar <com.tungsten.fcllibrary.component.view.FCLProgressBar
android:layout_marginTop="10dp"
android:id="@+id/version_progress" android:id="@+id/version_progress"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="10dp" android:padding="10dp"
app:layout_constraintTop_toBottomOf="@id/view2" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent"/> app:layout_constraintTop_toBottomOf="@id/view2" />
<com.tungsten.fcllibrary.component.view.FCLButton <com.tungsten.fcllibrary.component.view.FCLButton
android:id="@+id/execute_jar" android:id="@+id/execute_jar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/jar_execute"
android:layout_marginBottom="10dp"
android:layout_marginHorizontal="8dp" android:layout_marginHorizontal="8dp"
app:ripple="true" android:layout_marginBottom="10dp"
app:layout_constraintBottom_toTopOf="@id/launch"/> android:text="@string/jar_execute"
app:layout_constraintBottom_toTopOf="@id/launch"
app:ripple="true" />
<com.tungsten.fcllibrary.component.view.FCLButton <com.tungsten.fcllibrary.component.view.FCLButton
android:id="@+id/launch" android:id="@+id/launch"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/launch"
android:layout_marginHorizontal="8dp" android:layout_marginHorizontal="8dp"
app:ripple="true" android:text="@string/launch"
app:layout_constraintBottom_toBottomOf="parent"/> app:layout_constraintBottom_toBottomOf="parent"
app:ripple="true" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
@ -307,19 +312,19 @@
android:id="@+id/ui_layout" android:id="@+id/ui_layout"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
app:layout_constraintStart_toEndOf="@+id/split_left" app:layout_constraintEnd_toStartOf="@id/split_right"
app:layout_constraintEnd_toStartOf="@id/split_right"/> app:layout_constraintStart_toEndOf="@+id/left_menu" />
<com.tungsten.fcllibrary.component.view.FCLDynamicIsland <com.tungsten.fcllibrary.component.view.FCLDynamicIsland
android:stateListAnimator="@null"
android:id="@+id/title" android:id="@+id/title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="15dp" android:layout_marginBottom="15dp"
app:layout_constraintHorizontal_bias="0.5" android:stateListAnimator="@null"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintBottom_toBottomOf="parent"/> app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

View File

@ -1,54 +1,58 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <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_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/parent" android:id="@+id/parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_container_transparent_clickable"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:background="@drawable/bg_container_transparent_clickable" android:padding="10dp"
android:padding="10dp"> android:stateListAnimator="@xml/anim_scale"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView <com.tungsten.fcllibrary.component.view.FCLImageView
android:id="@+id/icon" android:id="@+id/icon"
android:layout_gravity="center"
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:layout_gravity="center"
android:background="@drawable/ic_baseline_server_24" android:background="@drawable/ic_baseline_server_24"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintVertical_bias="0.5"
app:layout_constraintVertical_bias="0.5"/> app:use_theme_color="true" />
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
app:layout_constraintStart_toEndOf="@id/icon" android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@+id/delete"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/delete"
app:layout_constraintStart_toEndOf="@id/icon"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5"> app:layout_constraintVertical_bias="0.5">
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:id="@+id/name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true" android:singleLine="true"
android:id="@+id/name"/> app:use_theme_color="true" />
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:textSize="11sp" android:id="@+id/url"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true" android:singleLine="true"
android:id="@+id/url"/> android:textSize="11sp"
app:use_theme_color="true" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
@ -57,11 +61,12 @@
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:src="@drawable/ic_baseline_close_24" android:src="@drawable/ic_baseline_close_24"
app:no_padding="true" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintVertical_bias="0.5"
app:layout_constraintVertical_bias="0.5"/> app:no_padding="true"
app:use_theme_color="true" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -12,7 +12,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:background="@drawable/bg_container_transparent_clickable" android:background="@drawable/bg_container_transparent_clickable"
android:padding="10dp"> android:padding="10dp"
android:stateListAnimator="@xml/anim_scale">
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp" android:layout_width="0dp"
@ -29,6 +30,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true" android:singleLine="true"
app:use_theme_color="true"
android:id="@+id/name"/> android:id="@+id/name"/>
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
@ -36,6 +38,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true" android:singleLine="true"
app:use_theme_color="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:ellipsize="marquee"
android:scrollHorizontally="true"
android:marqueeRepeatLimit="marquee_forever"
android:id="@+id/path"/> android:id="@+id/path"/>
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
@ -46,10 +54,12 @@
android:layout_height="20dp" android:layout_height="20dp"
android:src="@drawable/ic_baseline_close_24" android:src="@drawable/ic_baseline_close_24"
app:no_padding="true" app:no_padding="true"
app:use_theme_color="true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintVertical_bias="0.5"/> app:layout_constraintVertical_bias="0.5"
android:stateListAnimator="@xml/anim_scale_large"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,121 +1,131 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/ui_bg_color"
android:padding="10dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="@color/ui_bg_color"
android:padding="10dp">
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:orientation="vertical"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0" app:layout_constraintHorizontal_bias="0"
app:layout_constraintWidth_percent="0.3"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"> app:layout_constraintWidth_percent="0.3">
<TextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:singleLine="true"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/account_create"
android:textSize="11sp" />
<View
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
android:layout_marginTop="5dp" android:singleLine="true"
android:text="@string/account_create"
android:textSize="11sp"
app:use_theme_color="true" />
<View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:background="@android:color/darker_gray"/> android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="10dp"
android:background="@android:color/darker_gray" />
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_marginTop="10dp"
android:padding="10dp"
android:background="@drawable/bg_container_transparent_clickable"
android:focusable="true"
android:clickable="true"
android:id="@+id/offline" android:id="@+id/offline"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:layout_marginTop="10dp"
android:background="@drawable/bg_container_transparent_clickable"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:padding="10dp"
android:stateListAnimator="@xml/anim_scale">
<androidx.appcompat.widget.AppCompatImageView <com.tungsten.fcllibrary.component.view.FCLImageView
android:layout_gravity="center"
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:background="@drawable/ic_baseline_person_add_24"/> android:layout_gravity="center"
android:background="@drawable/ic_baseline_person_add_24"
app:use_theme_color="true" />
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:singleLine="true"
android:layout_gravity="center"
android:layout_marginStart="10dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/account_methods_offline"/> android:layout_gravity="center"
android:layout_marginStart="10dp"
android:singleLine="true"
android:text="@string/account_methods_offline"
app:use_theme_color="true" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:padding="10dp"
android:background="@drawable/bg_container_transparent_clickable"
android:focusable="true"
android:clickable="true"
android:id="@+id/microsoft" android:id="@+id/microsoft"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:background="@drawable/bg_container_transparent_clickable"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:padding="10dp"
android:stateListAnimator="@xml/anim_scale">
<androidx.appcompat.widget.AppCompatImageView <com.tungsten.fcllibrary.component.view.FCLImageView
android:layout_gravity="center"
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:background="@drawable/ic_baseline_microsoft_24"/> android:layout_gravity="center"
android:background="@drawable/ic_baseline_microsoft_24"
app:use_theme_color="true" />
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:singleLine="true"
android:layout_gravity="center"
android:layout_marginStart="10dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/account_methods_microsoft"/> android:layout_gravity="center"
android:layout_marginStart="10dp"
android:singleLine="true"
android:text="@string/account_methods_microsoft"
app:use_theme_color="true" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
<ListView <ListView
android:id="@+id/server_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"
android:divider="@android:color/transparent" android:divider="@android:color/transparent"
android:dividerHeight="0dp" android:dividerHeight="0dp" />
android:id="@+id/server_list"
android:layout_weight="1"/>
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:padding="10dp"
android:background="@drawable/bg_container_transparent_clickable"
android:focusable="true"
android:clickable="true"
android:id="@+id/add_login_server" android:id="@+id/add_login_server"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:background="@drawable/bg_container_transparent_clickable"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:padding="10dp"
android:stateListAnimator="@xml/anim_scale">
<ImageView <com.tungsten.fcllibrary.component.view.FCLImageView
android:layout_gravity="center"
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:background="@drawable/ic_baseline_add_24"/> android:layout_gravity="center"
android:background="@drawable/ic_baseline_add_24"
app:use_theme_color="true" />
<com.tungsten.fcllibrary.component.view.FCLTextView <com.tungsten.fcllibrary.component.view.FCLTextView
android:singleLine="true"
android:layout_gravity="center"
android:layout_marginStart="10dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/account_create_server"/> android:layout_gravity="center"
android:layout_marginStart="10dp"
android:singleLine="true"
android:text="@string/account_create_server"
app:use_theme_color="true" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
@ -123,13 +133,13 @@
<ListView <ListView
android:id="@+id/list" android:id="@+id/list"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1" app:layout_constraintHorizontal_bias="1"
app:layout_constraintWidth_percent="0.7"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintWidth_percent="0.7" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,5 +1,6 @@
plugins { plugins {
id 'com.android.library' id 'com.android.library'
id 'org.jetbrains.kotlin.android' version '1.9.20'
} }
android { android {
@ -29,6 +30,9 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
kotlinOptions {
jvmTarget = "1.8"
}
} }
dependencies { dependencies {

View File

@ -27,6 +27,7 @@ public class FCLImageButton extends AppCompatImageButton {
private ObjectProperty<Drawable> image; private ObjectProperty<Drawable> image;
private boolean autoTint; private boolean autoTint;
private boolean noPadding; private boolean noPadding;
private boolean useThemeColor;
private BooleanProperty visibilityProperty; private BooleanProperty visibilityProperty;
private BooleanProperty disableProperty; private BooleanProperty disableProperty;
@ -64,6 +65,9 @@ public class FCLImageButton extends AppCompatImageButton {
if (autoTint) { if (autoTint) {
setImageTintList(new ColorStateList(state, colorSrc)); setImageTintList(new ColorStateList(state, colorSrc));
} }
if (useThemeColor && getDrawable() != null) {
getDrawable().setTint(ThemeEngine.getInstance().getTheme().getColor());
}
RippleDrawable drawable = new RippleDrawable(new ColorStateList(state, colorRipple), null, null); RippleDrawable drawable = new RippleDrawable(new ColorStateList(state, colorRipple), null, null);
drawable.setRadius(ConvertUtils.dip2px(getContext(), noPadding ? 12 : 20)); drawable.setRadius(ConvertUtils.dip2px(getContext(), noPadding ? 12 : 20));
setBackgroundDrawable(drawable); setBackgroundDrawable(drawable);
@ -94,6 +98,7 @@ public class FCLImageButton extends AppCompatImageButton {
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLImageButton); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLImageButton);
autoTint = typedArray.getBoolean(R.styleable.FCLImageButton_auto_tint, false); autoTint = typedArray.getBoolean(R.styleable.FCLImageButton_auto_tint, false);
noPadding = typedArray.getBoolean(R.styleable.FCLImageButton_no_padding, false); noPadding = typedArray.getBoolean(R.styleable.FCLImageButton_no_padding, false);
useThemeColor = typedArray.getBoolean(R.styleable.FCLImageButton_use_theme_color, false);
typedArray.recycle(); typedArray.recycle();
init(); init();
theme.bind(ThemeEngine.getInstance().getTheme().colorProperty()); theme.bind(ThemeEngine.getInstance().getTheme().colorProperty());
@ -104,6 +109,7 @@ public class FCLImageButton extends AppCompatImageButton {
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLImageButton); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLImageButton);
autoTint = typedArray.getBoolean(R.styleable.FCLImageButton_auto_tint, false); autoTint = typedArray.getBoolean(R.styleable.FCLImageButton_auto_tint, false);
noPadding = typedArray.getBoolean(R.styleable.FCLImageButton_no_padding, false); noPadding = typedArray.getBoolean(R.styleable.FCLImageButton_no_padding, false);
useThemeColor = typedArray.getBoolean(R.styleable.FCLImageButton_use_theme_color, false);
typedArray.recycle(); typedArray.recycle();
init(); init();
theme.bind(ThemeEngine.getInstance().getTheme().colorProperty()); theme.bind(ThemeEngine.getInstance().getTheme().colorProperty());
@ -127,6 +133,15 @@ public class FCLImageButton extends AppCompatImageButton {
return noPadding; return noPadding;
} }
public void setUseThemeColor(boolean useThemeColor) {
this.useThemeColor = useThemeColor;
refreshStyle();
}
public boolean isUseThemeColor() {
return useThemeColor;
}
public final void setImage(Drawable drawable) { public final void setImage(Drawable drawable) {
imageProperty().set(drawable); imageProperty().set(drawable);
} }

View File

@ -24,6 +24,7 @@ public class FCLImageView extends AppCompatImageView {
private ObjectProperty<Drawable> image; private ObjectProperty<Drawable> image;
private boolean autoTint; private boolean autoTint;
private boolean useThemeColor;
private BooleanProperty visibilityProperty; private BooleanProperty visibilityProperty;
private final IntegerProperty theme = new IntegerPropertyBase() { private final IntegerProperty theme = new IntegerPropertyBase() {
@ -42,6 +43,9 @@ public class FCLImageView extends AppCompatImageView {
}; };
setImageTintList(new ColorStateList(state, color)); setImageTintList(new ColorStateList(state, color));
} }
if (useThemeColor && getBackground() != null) {
getBackground().setTint(ThemeEngine.getInstance().getTheme().getColor());
}
} }
@Override @Override
@ -64,6 +68,7 @@ public class FCLImageView extends AppCompatImageView {
super(context, attrs); super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLImageView); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLImageView);
autoTint = typedArray.getBoolean(R.styleable.FCLImageView_auto_src_tint, false); autoTint = typedArray.getBoolean(R.styleable.FCLImageView_auto_src_tint, false);
useThemeColor = typedArray.getBoolean(R.styleable.FCLImageView_use_theme_color, false);
typedArray.recycle(); typedArray.recycle();
theme.bind(ThemeEngine.getInstance().getTheme().colorProperty()); theme.bind(ThemeEngine.getInstance().getTheme().colorProperty());
} }
@ -72,6 +77,7 @@ public class FCLImageView extends AppCompatImageView {
super(context, attrs, defStyleAttr); super(context, attrs, defStyleAttr);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLImageView); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLImageView);
autoTint = typedArray.getBoolean(R.styleable.FCLImageView_auto_src_tint, false); autoTint = typedArray.getBoolean(R.styleable.FCLImageView_auto_src_tint, false);
useThemeColor = typedArray.getBoolean(R.styleable.FCLImageView_use_theme_color, false);
typedArray.recycle(); typedArray.recycle();
theme.bind(ThemeEngine.getInstance().getTheme().colorProperty()); theme.bind(ThemeEngine.getInstance().getTheme().colorProperty());
} }
@ -84,6 +90,14 @@ public class FCLImageView extends AppCompatImageView {
return autoTint; return autoTint;
} }
public void setUseThemeColor(boolean useThemeColor) {
this.useThemeColor = useThemeColor;
}
public boolean isUseThemeColor() {
return useThemeColor;
}
public final void setImage(Drawable drawable) { public final void setImage(Drawable drawable) {
imageProperty().set(drawable); imageProperty().set(drawable);
} }

View File

@ -24,6 +24,7 @@ public class FCLTextView extends AppCompatTextView {
private boolean autoTint; private boolean autoTint;
private boolean autoBackgroundTint; private boolean autoBackgroundTint;
private boolean useThemeColor;
private StringProperty string; private StringProperty string;
private BooleanProperty visibilityProperty; private BooleanProperty visibilityProperty;
@ -38,6 +39,9 @@ public class FCLTextView extends AppCompatTextView {
if (autoBackgroundTint) { if (autoBackgroundTint) {
setBackgroundTintList(new ColorStateList(new int[][] { { } }, new int[]{ ThemeEngine.getInstance().getTheme().getColor() })); setBackgroundTintList(new ColorStateList(new int[][] { { } }, new int[]{ ThemeEngine.getInstance().getTheme().getColor() }));
} }
if (useThemeColor) {
setTextColor(ThemeEngine.getInstance().getTheme().getColor());
}
} }
@Override @Override
@ -63,6 +67,7 @@ public class FCLTextView extends AppCompatTextView {
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLTextView); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLTextView);
autoTint = typedArray.getBoolean(R.styleable.FCLTextView_auto_text_tint, false); autoTint = typedArray.getBoolean(R.styleable.FCLTextView_auto_text_tint, false);
autoBackgroundTint = typedArray.getBoolean(R.styleable.FCLTextView_auto_text_background_tint, false); autoBackgroundTint = typedArray.getBoolean(R.styleable.FCLTextView_auto_text_background_tint, false);
useThemeColor = typedArray.getBoolean(R.styleable.FCLTextView_use_theme_color, false);
typedArray.recycle(); typedArray.recycle();
theme.bind(ThemeEngine.getInstance().getTheme().colorProperty()); theme.bind(ThemeEngine.getInstance().getTheme().colorProperty());
} }
@ -72,6 +77,7 @@ public class FCLTextView extends AppCompatTextView {
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLTextView); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLTextView);
autoTint = typedArray.getBoolean(R.styleable.FCLTextView_auto_text_tint, false); autoTint = typedArray.getBoolean(R.styleable.FCLTextView_auto_text_tint, false);
autoBackgroundTint = typedArray.getBoolean(R.styleable.FCLTextView_auto_text_background_tint, false); autoBackgroundTint = typedArray.getBoolean(R.styleable.FCLTextView_auto_text_background_tint, false);
useThemeColor = typedArray.getBoolean(R.styleable.FCLTextView_use_theme_color, false);
typedArray.recycle(); typedArray.recycle();
theme.bind(ThemeEngine.getInstance().getTheme().colorProperty()); theme.bind(ThemeEngine.getInstance().getTheme().colorProperty());
} }
@ -96,6 +102,14 @@ public class FCLTextView extends AppCompatTextView {
return autoTint; return autoTint;
} }
public void setUseThemeColor(boolean useThemeColor) {
this.useThemeColor = useThemeColor;
}
public boolean isUseThemeColor() {
return useThemeColor;
}
public void setAutoBackgroundTint(boolean autoBackgroundTint) { public void setAutoBackgroundTint(boolean autoBackgroundTint) {
this.autoBackgroundTint = autoBackgroundTint; this.autoBackgroundTint = autoBackgroundTint;
} }

View File

@ -0,0 +1,40 @@
package com.tungsten.fcllibrary.component.view
import android.content.Context
import android.util.AttributeSet
import android.view.View
import com.tungsten.fclcore.fakefx.beans.property.IntegerProperty
import com.tungsten.fclcore.fakefx.beans.property.IntegerPropertyBase
import com.tungsten.fcllibrary.R
import com.tungsten.fcllibrary.component.theme.ThemeEngine
class FCLView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr) {
var useThemeColor = false
private val theme: IntegerProperty = object : IntegerPropertyBase() {
override fun invalidated() {
get()
if (useThemeColor) {
setBackgroundColor(ThemeEngine.getInstance().getTheme().color)
}
}
override fun getBean(): Any {
return this
}
override fun getName(): String {
return "theme"
}
}
init {
val typedArray = context.obtainStyledAttributes(attrs, R.styleable.FCLView)
useThemeColor = typedArray.getBoolean(R.styleable.FCLView_use_theme_color, false)
typedArray.recycle()
theme.bind(ThemeEngine.getInstance().getTheme().colorProperty())
}
}

View File

@ -1,5 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<attr name="use_theme_color" format="boolean"/>
<declare-styleable name="FCLView">
<attr name="use_theme_color"/>
</declare-styleable>
<declare-styleable name="FCLButton"> <declare-styleable name="FCLButton">
<attr name="ripple" format="boolean"/> <attr name="ripple" format="boolean"/>
<attr name="shape" format="integer"/> <attr name="shape" format="integer"/>
@ -8,13 +12,16 @@
<declare-styleable name="FCLImageButton"> <declare-styleable name="FCLImageButton">
<attr name="auto_tint" format="boolean"/> <attr name="auto_tint" format="boolean"/>
<attr name="no_padding" format="boolean"/> <attr name="no_padding" format="boolean"/>
<attr name="use_theme_color"/>
</declare-styleable> </declare-styleable>
<declare-styleable name="FCLImageView"> <declare-styleable name="FCLImageView">
<attr name="auto_src_tint" format="boolean"/> <attr name="auto_src_tint" format="boolean"/>
<attr name="use_theme_color"/>
</declare-styleable> </declare-styleable>
<declare-styleable name="FCLTextView"> <declare-styleable name="FCLTextView">
<attr name="auto_text_background_tint" format="boolean"/> <attr name="auto_text_background_tint" format="boolean"/>
<attr name="auto_text_tint" format="boolean"/> <attr name="auto_text_tint" format="boolean"/>
<attr name="use_theme_color"/>
</declare-styleable> </declare-styleable>
<declare-styleable name="FCLCheckedTextView"> <declare-styleable name="FCLCheckedTextView">
<attr name="auto_checked_text_background_tint" format="boolean"/> <attr name="auto_checked_text_background_tint" format="boolean"/>