Extract base activity.

This commit is contained in:
2022-09-14 22:00:28 +08:00
parent 29a398a66a
commit 09eeab35c4
13 changed files with 288 additions and 180 deletions

3
.idea/misc.xml generated
View File

@@ -74,6 +74,9 @@
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_main.xml" value="0.1" /> <entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_main.xml" value="0.1" />
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_splash.xml" value="0.1693840579710145" /> <entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_splash.xml" value="0.1693840579710145" />
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_time_screen.xml" value="0.34739583333333335" /> <entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_time_screen.xml" value="0.34739583333333335" />
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_base.xml" value="0.1" />
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_base_horizontal.xml" value="0.29628046173578454" />
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_base_normal.xml" value="0.271484375" />
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_ip.xml" value="0.29628046173578454" /> <entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_ip.xml" value="0.29628046173578454" />
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_time_screen.xml" value="0.1" /> <entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_time_screen.xml" value="0.1" />
<entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_translation.xml" value="0.1" /> <entry key="..\:/.workspace-android/Project-ToolBox/OxygenToolbox/app/src/main/res/layout/activity_tool_translation.xml" value="0.1" />

View File

@@ -13,7 +13,7 @@ import androidx.annotation.Nullable;
import com.fatapp.oxygentoolbox.util.MultiLanguageUtils; import com.fatapp.oxygentoolbox.util.MultiLanguageUtils;
import com.fatapp.oxygentoolbox.util.ResourceUtil; import com.fatapp.oxygentoolbox.util.ResourceUtil;
import com.fatapp.oxygentoolbox.util.SharedPreferencesUtils; import com.fatapp.oxygentoolbox.util.SharedPreferencesUtils;
import com.fatapp.oxygentoolbox.util.ToolsList; import com.fatapp.oxygentoolbox.util.tool.ToolsList;
import java.io.IOException; import java.io.IOException;

View File

@@ -1,7 +1,6 @@
package com.fatapp.oxygentoolbox.tools.timescreen; package com.fatapp.oxygentoolbox.tools.timescreen;
import android.animation.ObjectAnimator; import android.animation.ObjectAnimator;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.AnimatedVectorDrawable;
@@ -16,22 +15,20 @@ import android.widget.TextView;
import android.widget.ViewSwitcher; import android.widget.ViewSwitcher;
import androidx.annotation.ColorInt; import androidx.annotation.ColorInt;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.content.res.AppCompatResources;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.fatapp.oxygentoolbox.R; import com.fatapp.oxygentoolbox.R;
import com.fatapp.oxygentoolbox.util.ResourceUtil; import com.fatapp.oxygentoolbox.util.ResourceUtil;
import com.fatapp.oxygentoolbox.util.VariableChangeListener; import com.fatapp.oxygentoolbox.util.VariableChangeListener;
import com.fatapp.oxygentoolbox.util.VariableChangeSupport; import com.fatapp.oxygentoolbox.util.VariableChangeSupport;
import com.ypz.bangscreentools.BangScreenTools; import com.fatapp.oxygentoolbox.util.tool.BaseActivityHorizontal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
public class MainActivity extends AppCompatActivity { public class MainActivity extends BaseActivityHorizontal {
private int uiMode = ResourceUtil.getAppUiMode(); private int uiMode = ResourceUtil.getAppUiMode();
private VariableChangeSupport<String> hourTenVariableChangeSupport; private VariableChangeSupport<String> hourTenVariableChangeSupport;
private VariableChangeSupport<String> hourOneVariableChangeSupport; private VariableChangeSupport<String> hourOneVariableChangeSupport;
@@ -42,7 +39,6 @@ public class MainActivity extends AppCompatActivity {
private VariableChangeSupport<Boolean> dateVisibilityChangeSupport; private VariableChangeSupport<Boolean> dateVisibilityChangeSupport;
private VariableChangeSupport<Boolean> uiVisibilityChangeSupport; private VariableChangeSupport<Boolean> uiVisibilityChangeSupport;
private ConstraintLayout constraintLayoutRoot;
private ImageView imageViewMode; private ImageView imageViewMode;
private TextSwitcher textSwitcherHourTen; private TextSwitcher textSwitcherHourTen;
private TextSwitcher textSwitcherHourOne; private TextSwitcher textSwitcherHourOne;
@@ -55,7 +51,6 @@ public class MainActivity extends AppCompatActivity {
private TextView textViewDate; private TextView textViewDate;
private void initView() { private void initView() {
constraintLayoutRoot = findViewById(R.id.constraint_layout_root);
imageViewMode = findViewById(R.id.image_view_mode); imageViewMode = findViewById(R.id.image_view_mode);
textSwitcherHourTen = findViewById(R.id.text_switcher_hour_ten); textSwitcherHourTen = findViewById(R.id.text_switcher_hour_ten);
textSwitcherHourOne = findViewById(R.id.text_switcher_hour_one); textSwitcherHourOne = findViewById(R.id.text_switcher_hour_one);
@@ -70,10 +65,8 @@ public class MainActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
BangScreenTools.getBangScreenTools().fullscreen(getWindow(), this);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tool_time_screen); super.loadView(this, R.layout.activity_tool_time_screen);
initView(); initView();
initTextSwitcher(); initTextSwitcher();
@@ -145,7 +138,7 @@ public class MainActivity extends AppCompatActivity {
ObjectAnimator.ofFloat(imageViewMode, View.ALPHA, (boolean) newValue ? 0.0f : 1.0f, (boolean) newValue ? 1.0f : 0.0f).start(); ObjectAnimator.ofFloat(imageViewMode, View.ALPHA, (boolean) newValue ? 0.0f : 1.0f, (boolean) newValue ? 1.0f : 0.0f).start();
} }
}); });
constraintLayoutRoot.setOnClickListener(view -> uiVisibilityChangeSupport.setValue(!uiVisibilityChangeSupport.getValue())); getConstraintLayoutRoot().setOnClickListener(view -> uiVisibilityChangeSupport.setValue(!uiVisibilityChangeSupport.getValue()));
} }
private void initTextSwitcher() { private void initTextSwitcher() {
@@ -220,7 +213,7 @@ public class MainActivity extends AppCompatActivity {
} }
private void setColors(@ColorInt int backgroundColor, @ColorInt int primaryTextColor) { private void setColors(@ColorInt int backgroundColor, @ColorInt int primaryTextColor) {
ObjectAnimator backgroundColorAnimator = ObjectAnimator.ofArgb(constraintLayoutRoot, "backgroundColor", ((ColorDrawable) constraintLayoutRoot.getBackground()).getColor(), backgroundColor); ObjectAnimator backgroundColorAnimator = ObjectAnimator.ofArgb(getConstraintLayoutRoot(), "backgroundColor", ((ColorDrawable) getConstraintLayoutRoot().getBackground()).getColor(), backgroundColor);
backgroundColorAnimator.setDuration(500L); backgroundColorAnimator.setDuration(500L);
backgroundColorAnimator.start(); backgroundColorAnimator.start();
((TextView) textSwitcherHourTen.getChildAt(0)).setTextColor(primaryTextColor); ((TextView) textSwitcherHourTen.getChildAt(0)).setTextColor(primaryTextColor);
@@ -238,10 +231,4 @@ public class MainActivity extends AppCompatActivity {
((TextView) textSwitcherSecondOne.getChildAt(0)).setTextColor(primaryTextColor); ((TextView) textSwitcherSecondOne.getChildAt(0)).setTextColor(primaryTextColor);
((TextView) textSwitcherSecondOne.getChildAt(1)).setTextColor(primaryTextColor); ((TextView) textSwitcherSecondOne.getChildAt(1)).setTextColor(primaryTextColor);
} }
@Override
public void onWindowFocusChanged(boolean hasFocus) {
BangScreenTools.getBangScreenTools().windowChangeFullscreen(getWindow());
super.onWindowFocusChanged(hasFocus);
}
} }

View File

@@ -4,7 +4,6 @@ import android.graphics.drawable.AnimatedVectorDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.EditText; import android.widget.EditText;
@@ -12,17 +11,13 @@ import android.widget.ImageView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.fatapp.oxygentoolbox.R; import com.fatapp.oxygentoolbox.R;
import com.fatapp.oxygentoolbox.util.ResourceUtil; import com.fatapp.oxygentoolbox.util.ResourceUtil;
import com.fatapp.oxygentoolbox.util.ToolsList;
import com.fatapp.oxygentoolbox.util.http.HttpHelper; import com.fatapp.oxygentoolbox.util.http.HttpHelper;
import com.fatapp.oxygentoolbox.util.http.ResponseListener; import com.fatapp.oxygentoolbox.util.http.ResponseListener;
import com.fatapp.oxygentoolbox.util.tool.BaseActivityNormal;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
@@ -33,11 +28,9 @@ import org.json.JSONObject;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Objects;
import java.util.StringJoiner; import java.util.StringJoiner;
public class MainActivity extends AppCompatActivity { public class MainActivity extends BaseActivityNormal {
private final String TOOL_NAME = ToolsList.getToolName(getClass().getName());
final String URL_YOU_DAO = "http://fanyi.youdao.com/translate?&doctype=json&type=%s&i=%s"; final String URL_YOU_DAO = "http://fanyi.youdao.com/translate?&doctype=json&type=%s&i=%s";
private final String LANGUAGE_CHINESE = "ZH_CN"; private final String LANGUAGE_CHINESE = "ZH_CN";
@@ -53,9 +46,6 @@ public class MainActivity extends AppCompatActivity {
private String languageFrom = LANGUAGE_CHINESE; private String languageFrom = LANGUAGE_CHINESE;
private String languageTo = LANGUAGE_ENGLISH; private String languageTo = LANGUAGE_ENGLISH;
private ConstraintLayout constraintLayoutRoot;
private Toolbar toolbar;
private TextView textViewLanguageFrom; private TextView textViewLanguageFrom;
private ImageView imageViewSwap; private ImageView imageViewSwap;
private TextView textViewLanguageTo; private TextView textViewLanguageTo;
@@ -65,8 +55,6 @@ public class MainActivity extends AppCompatActivity {
private ProgressBar progressBarInTranslation; private ProgressBar progressBarInTranslation;
private void initView() { private void initView() {
constraintLayoutRoot = findViewById(R.id.constraint_layout_root);
toolbar = findViewById(R.id.toolbar);
textViewLanguageFrom = findViewById(R.id.text_view_language_from); textViewLanguageFrom = findViewById(R.id.text_view_language_from);
imageViewSwap = findViewById(R.id.image_view_swap); imageViewSwap = findViewById(R.id.image_view_swap);
textViewLanguageTo = findViewById(R.id.text_view_language_to); textViewLanguageTo = findViewById(R.id.text_view_language_to);
@@ -79,10 +67,9 @@ public class MainActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tool_translation); super.loadView(this, R.layout.activity_tool_translation);
initView(); initView();
initLayout();
initLanguageChoose(); initLanguageChoose();
initTranslation(); initTranslation();
} }
@@ -138,13 +125,6 @@ public class MainActivity extends AppCompatActivity {
}); });
} }
private void initLayout() {
constraintLayoutRoot.setPadding(0, ResourceUtil.getStatusBarHeight(getWindow(), getApplicationContext()), 0, 0);
setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
Objects.requireNonNull(getSupportActionBar()).setTitle(TOOL_NAME);
}
private void translate() { private void translate() {
editTextFrom.setEnabled(false); editTextFrom.setEnabled(false);
imageViewTranslate.setEnabled(false); imageViewTranslate.setEnabled(false);
@@ -185,7 +165,7 @@ public class MainActivity extends AppCompatActivity {
editTextFrom.setEnabled(true); editTextFrom.setEnabled(true);
imageViewTranslate.setEnabled(true); imageViewTranslate.setEnabled(true);
progressBarInTranslation.setVisibility(View.INVISIBLE); progressBarInTranslation.setVisibility(View.INVISIBLE);
Snackbar.make(constraintLayoutRoot, "翻译失败", Snackbar.LENGTH_LONG).show(); Snackbar.make(getConstraintLayoutRoot(), "翻译失败", Snackbar.LENGTH_LONG).show();
} }
}); });
@@ -198,13 +178,4 @@ public class MainActivity extends AppCompatActivity {
httpHelper.getResponseListener().onFailed(); httpHelper.getResponseListener().onFailed();
} }
} }
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
} }

View File

@@ -16,9 +16,9 @@ import androidx.recyclerview.widget.RecyclerView;
import com.fatapp.oxygentoolbox.R; import com.fatapp.oxygentoolbox.R;
import com.fatapp.oxygentoolbox.layout.AutoLinefeedLayout; import com.fatapp.oxygentoolbox.layout.AutoLinefeedLayout;
import com.fatapp.oxygentoolbox.layout.FoldLayout; import com.fatapp.oxygentoolbox.layout.FoldLayout;
import com.fatapp.oxygentoolbox.util.ToolsLauncher;
import com.fatapp.oxygentoolbox.util.ToolsList;
import com.fatapp.oxygentoolbox.util.VibratorController; import com.fatapp.oxygentoolbox.util.VibratorController;
import com.fatapp.oxygentoolbox.util.tool.ToolsLauncher;
import com.fatapp.oxygentoolbox.util.tool.ToolsList;
import java.util.Collections; import java.util.Collections;

View File

@@ -0,0 +1,52 @@
package com.fatapp.oxygentoolbox.util.tool;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.LayoutRes;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.fatapp.oxygentoolbox.R;
import com.ypz.bangscreentools.BangScreenTools;
public class BaseActivityHorizontal extends AppCompatActivity {
private final String TOOL_NAME = ToolsList.getToolName(getClass().getName());
private ConstraintLayout constraintLayoutRoot;
private ConstraintLayout constraintLayoutContent;
private void _initView() {
constraintLayoutRoot = findViewById(R.id.constraint_layout_root);
constraintLayoutContent = findViewById(R.id.constraint_layout_content);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
BangScreenTools.getBangScreenTools().fullscreen(getWindow(), this);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tool_base_horizontal);
_initView();
}
protected void loadView(Context context, @LayoutRes int layoutResID) {
LayoutInflater.from(context).inflate(layoutResID, constraintLayoutContent);
}
protected String getToolName() {
return TOOL_NAME;
}
protected ConstraintLayout getConstraintLayoutRoot() {
return constraintLayoutRoot;
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
BangScreenTools.getBangScreenTools().windowChangeFullscreen(getWindow());
super.onWindowFocusChanged(hasFocus);
}
}

View File

@@ -0,0 +1,72 @@
package com.fatapp.oxygentoolbox.util.tool;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.fatapp.oxygentoolbox.R;
import com.fatapp.oxygentoolbox.util.ResourceUtil;
import java.util.Objects;
public class BaseActivityNormal extends AppCompatActivity {
private final String TOOL_NAME = ToolsList.getToolName(getClass().getName());
private ConstraintLayout constraintLayoutRoot;
private Toolbar toolbar;
private ConstraintLayout constraintLayoutContent;
private void _initView() {
constraintLayoutRoot = findViewById(R.id.constraint_layout_root);
toolbar = findViewById(R.id.toolbar);
constraintLayoutContent = findViewById(R.id.constraint_layout_content);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tool_base_normal);
_initView();
_initLayout();
}
protected void loadView(Context context, @LayoutRes int layoutResID) {
LayoutInflater.from(context).inflate(layoutResID, constraintLayoutContent);
}
private void _initLayout() {
constraintLayoutRoot.setPadding(0, ResourceUtil.getStatusBarHeight(getWindow(), getApplicationContext()), 0, 0);
setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
Objects.requireNonNull(getSupportActionBar()).setTitle(TOOL_NAME);
}
protected String getToolName() {
return TOOL_NAME;
}
protected ConstraintLayout getConstraintLayoutRoot() {
return constraintLayoutRoot;
}
protected Toolbar getToolbar() {
return toolbar;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
}

View File

@@ -1,4 +1,4 @@
package com.fatapp.oxygentoolbox.util; package com.fatapp.oxygentoolbox.util.tool;
import static androidx.core.content.ContextCompat.startActivity; import static androidx.core.content.ContextCompat.startActivity;

View File

@@ -1,7 +1,9 @@
package com.fatapp.oxygentoolbox.util; package com.fatapp.oxygentoolbox.util.tool;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.fatapp.oxygentoolbox.util.Locales;
import com.fatapp.oxygentoolbox.util.SharedPreferencesUtils;
import com.fatapp.oxygentoolbox.util.json.ToolsJson; import com.fatapp.oxygentoolbox.util.json.ToolsJson;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraint_layout_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/app_show_background_theme"
tools:context=".util.tool.BaseActivityHorizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraint_layout_content"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,33 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraint_layout_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/app_background_theme"
tools:context=".util.tool.BaseActivityNormal">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/Theme.OxygenToolbox.AppBarOverlay"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/Theme.OxygenToolbox.PopupOverlay" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraint_layout_content"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/app_bar_layout" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -2,10 +2,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"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraint_layout_root"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/app_show_background_theme"
android:keepScreenOn="true" android:keepScreenOn="true"
tools:context=".tools.timescreen.MainActivity"> tools:context=".tools.timescreen.MainActivity">

View File

@@ -2,143 +2,118 @@
<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/constraint_layout_root"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/app_background_theme"
tools:context=".tools.translation.MainActivity"> tools:context=".tools.translation.MainActivity">
<com.google.android.material.appbar.AppBarLayout <LinearLayout
android:id="@+id/app_bar_layout" android:id="@+id/linear_layout_language"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:theme="@style/Theme.OxygenToolbox.AppBarOverlay" android:layout_margin="@dimen/tool_translation_layout_margin"
android:background="@drawable/background_top_bottom_radius"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/Theme.OxygenToolbox.PopupOverlay" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/app_bar_layout">
<LinearLayout
android:id="@+id/linear_layout_language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_translation_layout_margin"
android:background="@drawable/background_top_bottom_radius"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/text_view_language_from"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@string/tool_translation_language_chinese"
android:textColor="?attr/app_theme"
android:textSize="@dimen/tool_translation_text_size" />
<ImageView
android:id="@+id/image_view_swap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="Swap"
android:padding="@dimen/tool_translation_clickable_padding"
android:src="@drawable/animation_swap_horizon" />
<TextView
android:id="@+id/text_view_language_to"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@string/tool_translation_language_english"
android:textColor="?attr/app_theme"
android:textSize="@dimen/tool_translation_text_size" />
</LinearLayout>
<EditText
android:id="@+id/edit_text_from"
android:layout_width="match_parent"
android:layout_height="@dimen/tool_translation_edit_text_view_height"
android:layout_margin="@dimen/tool_translation_layout_margin"
android:autofillHints="text"
android:background="@drawable/background_top_bottom_radius"
android:gravity="start|top"
android:hint="@string/tool_translation_please_enter_text"
android:inputType="textMultiLine"
android:maxLength="850"
android:paddingHorizontal="@dimen/tool_translation_edit_text_view_padding"
android:paddingTop="@dimen/tool_translation_edit_text_view_padding"
android:paddingBottom="@dimen/tool_translation_edit_text_view_padding_plus"
android:textColor="?attr/app_text_theme"
android:textSize="@dimen/tool_translation_text_size"
app:layout_constraintTop_toBottomOf="@id/linear_layout_language" />
<TextView <TextView
android:id="@+id/edit_text_to" android:id="@+id/text_view_language_from"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="@dimen/tool_translation_edit_text_view_height" android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_translation_layout_margin" android:layout_weight="1"
android:autofillHints="text" android:gravity="center"
android:background="@drawable/background_top_bottom_radius" android:text="@string/tool_translation_language_chinese"
android:gravity="start|top" android:textColor="?attr/app_theme"
android:paddingHorizontal="@dimen/tool_translation_edit_text_view_padding" android:textSize="@dimen/tool_translation_text_size" />
android:paddingTop="@dimen/tool_translation_edit_text_view_padding_plus"
android:paddingBottom="@dimen/tool_translation_edit_text_view_padding"
android:textColor="?attr/app_text_theme"
android:textIsSelectable="true"
android:textSize="@dimen/tool_translation_text_size"
app:layout_constraintTop_toBottomOf="@id/edit_text_from" />
<androidx.constraintlayout.widget.ConstraintLayout <ImageView
android:id="@+id/image_view_swap"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/background_round" android:contentDescription="Swap"
android:padding="@dimen/tool_translation_clickable_padding" android:padding="@dimen/tool_translation_clickable_padding"
app:layout_constraintBottom_toTopOf="@id/edit_text_to" android:src="@drawable/animation_swap_horizon" />
<TextView
android:id="@+id/text_view_language_to"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@string/tool_translation_language_english"
android:textColor="?attr/app_theme"
android:textSize="@dimen/tool_translation_text_size" />
</LinearLayout>
<EditText
android:id="@+id/edit_text_from"
android:layout_width="match_parent"
android:layout_height="@dimen/tool_translation_edit_text_view_height"
android:layout_margin="@dimen/tool_translation_layout_margin"
android:autofillHints="text"
android:background="@drawable/background_top_bottom_radius"
android:gravity="start|top"
android:hint="@string/tool_translation_please_enter_text"
android:inputType="textMultiLine"
android:maxLength="850"
android:paddingHorizontal="@dimen/tool_translation_edit_text_view_padding"
android:paddingTop="@dimen/tool_translation_edit_text_view_padding"
android:paddingBottom="@dimen/tool_translation_edit_text_view_padding_plus"
android:textColor="?attr/app_text_theme"
android:textSize="@dimen/tool_translation_text_size"
app:layout_constraintTop_toBottomOf="@id/linear_layout_language" />
<TextView
android:id="@+id/edit_text_to"
android:layout_width="match_parent"
android:layout_height="@dimen/tool_translation_edit_text_view_height"
android:layout_margin="@dimen/tool_translation_layout_margin"
android:autofillHints="text"
android:background="@drawable/background_top_bottom_radius"
android:gravity="start|top"
android:paddingHorizontal="@dimen/tool_translation_edit_text_view_padding"
android:paddingTop="@dimen/tool_translation_edit_text_view_padding_plus"
android:paddingBottom="@dimen/tool_translation_edit_text_view_padding"
android:textColor="?attr/app_text_theme"
android:textIsSelectable="true"
android:textSize="@dimen/tool_translation_text_size"
app:layout_constraintTop_toBottomOf="@id/edit_text_from" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/background_round"
android:padding="@dimen/tool_translation_clickable_padding"
app:layout_constraintBottom_toTopOf="@id/edit_text_to"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/edit_text_from">
<ImageView
android:id="@+id/image_view_translate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:contentDescription="Translate"
android:focusable="true"
android:foreground="@drawable/foreground_ripple"
android:src="@drawable/ic_tool_translation_translate"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/edit_text_from"> app:layout_constraintTop_toTopOf="parent" />
<ImageView <ProgressBar
android:id="@+id/image_view_translate" android:id="@+id/progress_bar_in_translation"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="0dp"
android:clickable="true" android:indeterminateTint="?attr/app_on_theme"
android:contentDescription="Translate" android:visibility="invisible"
android:focusable="true" app:layout_constraintBottom_toBottomOf="parent"
android:foreground="@drawable/foreground_ripple" app:layout_constraintEnd_toEndOf="parent"
android:src="@drawable/ic_tool_translation_translate" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/progress_bar_in_translation"
android:layout_width="0dp"
android:layout_height="0dp"
android:indeterminateTint="?attr/app_on_theme"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>