Polish native controls
All checks were successful
Gitea Smoke / smoke (push) Successful in 1s
Gitea Android APK / build (push) Successful in 11m43s

This commit is contained in:
Codex 2026-07-06 09:34:39 +00:00
parent 19837d05bc
commit db306679d7

View File

@ -14,6 +14,8 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
@ -138,8 +140,8 @@ public final class MainActivity extends Activity {
statusText.setTextColor(Color.rgb(210, 215, 224)); statusText.setTextColor(Color.rgb(210, 215, 224));
statusText.setTextSize(12); statusText.setTextSize(12);
statusText.setGravity(Gravity.CENTER_VERTICAL); statusText.setGravity(Gravity.CENTER_VERTICAL);
statusText.setPadding(dp(8), 0, dp(8), 0); statusText.setPadding(dp(10), 0, dp(10), 0);
statusText.setBackgroundColor(Color.rgb(29, 34, 41)); statusText.setBackground(rounded(Color.rgb(22, 27, 34), 0, Color.TRANSPARENT, 0));
statusText.setSingleLine(true); statusText.setSingleLine(true);
setStatus("Ready"); setStatus("Ready");
applySystemBarInsets(root); applySystemBarInsets(root);
@ -214,6 +216,7 @@ public final class MainActivity extends Activity {
urlField.setImeOptions(EditorInfo.IME_ACTION_GO); urlField.setImeOptions(EditorInfo.IME_ACTION_GO);
urlField.setText(getServerUrl()); urlField.setText(getServerUrl());
urlField.setSelectAllOnFocus(true); urlField.setSelectAllOnFocus(true);
styleInput(urlField);
urlField.setOnEditorActionListener((view, actionId, event) -> { urlField.setOnEditorActionListener((view, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_GO) { if (actionId == EditorInfo.IME_ACTION_GO) {
saveServerAndRefresh(); saveServerAndRefresh();
@ -314,8 +317,11 @@ public final class MainActivity extends Activity {
private View sessionRow(SessionSummary session) { private View sessionRow(SessionSummary session) {
LinearLayout row = new LinearLayout(this); LinearLayout row = new LinearLayout(this);
row.setOrientation(LinearLayout.VERTICAL); row.setOrientation(LinearLayout.VERTICAL);
row.setPadding(dp(10), dp(10), dp(10), dp(10)); row.setPadding(dp(12), dp(11), dp(12), dp(11));
row.setBackgroundColor(Color.rgb(29, 34, 41)); row.setBackground(rounded(Color.rgb(27, 33, 40), 8, Color.rgb(45, 54, 64), 1));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
row.setElevation(dp(1));
}
TextView title = new TextView(this); TextView title = new TextView(this);
title.setText(session.name); title.setText(session.name);
@ -716,6 +722,7 @@ public final class MainActivity extends Activity {
inputField.setHint("type command or text"); inputField.setHint("type command or text");
inputField.setImeOptions(EditorInfo.IME_ACTION_SEND); inputField.setImeOptions(EditorInfo.IME_ACTION_SEND);
inputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); inputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
styleInput(inputField);
inputField.setOnEditorActionListener((view, actionId, event) -> { inputField.setOnEditorActionListener((view, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_SEND) { if (actionId == EditorInfo.IME_ACTION_SEND) {
sendLine(); sendLine();
@ -1212,6 +1219,7 @@ public final class MainActivity extends Activity {
input.setSingleLine(true); input.setSingleLine(true);
input.setText(value); input.setText(value);
input.setSelectAllOnFocus(true); input.setSelectAllOnFocus(true);
styleInput(input);
form.addView(title); form.addView(title);
form.addView(input, new LinearLayout.LayoutParams( form.addView(input, new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
@ -1505,11 +1513,15 @@ public final class MainActivity extends Activity {
private Button toolbarButton(String label, View.OnClickListener listener) { private Button toolbarButton(String label, View.OnClickListener listener) {
Button button = new Button(this); Button button = new Button(this);
button.setText(label); button.setText(label);
button.setTextColor(Color.rgb(235, 241, 248));
button.setTextSize(12); button.setTextSize(12);
button.setAllCaps(false); button.setAllCaps(false);
button.setTypeface(Typeface.DEFAULT_BOLD);
button.setMinWidth(0); button.setMinWidth(0);
button.setMinimumWidth(0); button.setMinimumWidth(0);
button.setPadding(dp(8), 0, dp(8), 0); button.setPadding(dp(10), 0, dp(10), 0);
button.setBackground(buttonBackground());
button.setGravity(Gravity.CENTER);
button.setOnClickListener(listener); button.setOnClickListener(listener);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,
@ -1520,6 +1532,33 @@ public final class MainActivity extends Activity {
return button; return button;
} }
private void styleInput(EditText input) {
input.setTextColor(Color.rgb(240, 246, 252));
input.setHintTextColor(Color.rgb(139, 148, 158));
input.setTextSize(14);
input.setSingleLine(true);
input.setPadding(dp(10), 0, dp(10), 0);
input.setBackground(rounded(Color.rgb(12, 17, 23), 8, Color.rgb(48, 58, 70), 1));
}
private StateListDrawable buttonBackground() {
StateListDrawable states = new StateListDrawable();
states.addState(new int[]{android.R.attr.state_pressed}, rounded(Color.rgb(64, 78, 94), 8, Color.rgb(91, 108, 128), 1));
states.addState(new int[]{android.R.attr.state_focused}, rounded(Color.rgb(48, 61, 76), 8, Color.rgb(98, 128, 164), 1));
states.addState(new int[]{}, rounded(Color.rgb(34, 43, 53), 8, Color.rgb(55, 66, 80), 1));
return states;
}
private GradientDrawable rounded(int color, int radiusDp, int strokeColor, int strokeDp) {
GradientDrawable drawable = new GradientDrawable();
drawable.setColor(color);
drawable.setCornerRadius(dp(radiusDp));
if (strokeDp > 0) {
drawable.setStroke(dp(strokeDp), strokeColor);
}
return drawable;
}
private void addSoftKey(LinearLayout row, String label, String sequence) { private void addSoftKey(LinearLayout row, String label, String sequence) {
addSoftButton(row, label, view -> sendTerminalInput(sequence)); addSoftButton(row, label, view -> sendTerminalInput(sequence));
} }