优化:界面布局&用户体验优化

This commit is contained in:
pppscn 2022-01-21 15:37:27 +08:00
parent d01ab9838d
commit 43922b28ce
27 changed files with 496 additions and 120 deletions

View File

@ -30,6 +30,7 @@ import com.idormy.sms.forwarder.adapter.LogAdapter;
import com.idormy.sms.forwarder.model.vo.LogVo; import com.idormy.sms.forwarder.model.vo.LogVo;
import com.idormy.sms.forwarder.sender.HttpServer; import com.idormy.sms.forwarder.sender.HttpServer;
import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.sender.SendUtil;
import com.idormy.sms.forwarder.sender.SenderUtil;
import com.idormy.sms.forwarder.sender.SmsHubApiTask; import com.idormy.sms.forwarder.sender.SmsHubApiTask;
import com.idormy.sms.forwarder.service.BatteryService; import com.idormy.sms.forwarder.service.BatteryService;
import com.idormy.sms.forwarder.service.FrontService; import com.idormy.sms.forwarder.service.FrontService;
@ -39,10 +40,12 @@ import com.idormy.sms.forwarder.utils.KeepAliveUtils;
import com.idormy.sms.forwarder.utils.LogUtil; import com.idormy.sms.forwarder.utils.LogUtil;
import com.idormy.sms.forwarder.utils.NetUtil; import com.idormy.sms.forwarder.utils.NetUtil;
import com.idormy.sms.forwarder.utils.PhoneUtils; import com.idormy.sms.forwarder.utils.PhoneUtils;
import com.idormy.sms.forwarder.utils.RuleUtil;
import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.utils.SettingUtil;
import com.idormy.sms.forwarder.utils.SharedPreferencesHelper; import com.idormy.sms.forwarder.utils.SharedPreferencesHelper;
import com.idormy.sms.forwarder.utils.SmsUtil; import com.idormy.sms.forwarder.utils.SmsUtil;
import com.idormy.sms.forwarder.utils.TimeUtil; import com.idormy.sms.forwarder.utils.TimeUtil;
import com.idormy.sms.forwarder.view.StepBar;
import com.umeng.analytics.MobclickAgent; import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure; import com.umeng.commonsdk.UMConfigure;
@ -66,8 +69,6 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
LogUtil.init(this);
Log.d(TAG, "onCreate"); Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -80,6 +81,10 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
SmsUtil.init(this); SmsUtil.init(this);
NetUtil.init(this); NetUtil.init(this);
LogUtil.init(this);
RuleUtil.init(this);
SenderUtil.init(this);
//前台服务 //前台服务
try { try {
serviceIntent = new Intent(MainActivity.this, FrontService.class); serviceIntent = new Intent(MainActivity.this, FrontService.class);
@ -207,6 +212,14 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
builder.create().show(); builder.create().show();
return true; return true;
}); });
//步骤完成状态校验
boolean checkStep1 = SettingUtil.getSwitchEnableSms() || SettingUtil.getSwitchEnablePhone() || SettingUtil.getSwitchEnableAppNotify();
boolean checkStep2 = SenderUtil.countSender("1", null) > 0;
boolean checkStep3 = RuleUtil.countRule("1", null, null) > 0;
boolean checkStep4 = LogUtil.countLog("2", null, null) > 0;
StepBar stepBar = findViewById(R.id.stepBar);
stepBar.setHighlight(checkStep1, checkStep2, checkStep3, checkStep4);
} }
private int getTypeCheckId(String currentType) { private int getTypeCheckId(String currentType) {
@ -267,6 +280,7 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
@Override @Override
protected void onPause() { protected void onPause() {
overridePendingTransition(0, 0);
super.onPause(); super.onPause();
MobclickAgent.onPageEnd(TAG); MobclickAgent.onPageEnd(TAG);
MobclickAgent.onPause(this); MobclickAgent.onPause(this);
@ -355,7 +369,7 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
return true; return true;
}); });
//对于发送失败的消息添加重发按钮 //对于发送失败的消息添加重发按钮
if (logVo.getForwardStatus() == 0) { if (logVo.getForwardStatus() != 2) {
builder.setPositiveButton("重发消息", (dialog, which) -> { builder.setPositiveButton("重发消息", (dialog, which) -> {
Toast.makeText(MainActivity.this, R.string.resend_toast, Toast.LENGTH_SHORT).show(); Toast.makeText(MainActivity.this, R.string.resend_toast, Toast.LENGTH_SHORT).show();
SendUtil.resendMsgByLog(MainActivity.this, handler, logVo); SendUtil.resendMsgByLog(MainActivity.this, handler, logVo);

View File

@ -31,8 +31,10 @@ import com.idormy.sms.forwarder.model.vo.SmsVo;
import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.sender.SendUtil;
import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.sender.SenderUtil;
import com.idormy.sms.forwarder.utils.CommonUtil; import com.idormy.sms.forwarder.utils.CommonUtil;
import com.idormy.sms.forwarder.utils.LogUtil;
import com.idormy.sms.forwarder.utils.RuleUtil; import com.idormy.sms.forwarder.utils.RuleUtil;
import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.utils.SettingUtil;
import com.idormy.sms.forwarder.view.StepBar;
import com.umeng.analytics.MobclickAgent; import com.umeng.analytics.MobclickAgent;
import java.util.ArrayList; import java.util.ArrayList;
@ -65,8 +67,10 @@ public class RuleActivity extends AppCompatActivity {
Log.d(TAG, "onCreate"); Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rule); setContentView(R.layout.activity_rule);
RuleUtil.init(RuleActivity.this);
SenderUtil.init(RuleActivity.this); LogUtil.init(this);
RuleUtil.init(this);
SenderUtil.init(this);
} }
@Override @Override
@ -135,6 +139,14 @@ public class RuleActivity extends AppCompatActivity {
CommonUtil.calcMarginBottom(this, help_tip, btnFloat, listView, null); CommonUtil.calcMarginBottom(this, help_tip, btnFloat, listView, null);
//添加规则 //添加规则
btnFloat.setOnClickListener(v -> setRule(null, false)); btnFloat.setOnClickListener(v -> setRule(null, false));
//步骤完成状态校验
boolean checkStep1 = SettingUtil.getSwitchEnableSms() || SettingUtil.getSwitchEnablePhone() || SettingUtil.getSwitchEnableAppNotify();
boolean checkStep2 = SenderUtil.countSender("1", null) > 0;
boolean checkStep3 = RuleUtil.countRule("1", null, null) > 0;
boolean checkStep4 = LogUtil.countLog("2", null, null) > 0;
StepBar stepBar = findViewById(R.id.stepBar);
stepBar.setHighlight(checkStep1, checkStep2, checkStep3, checkStep4);
} }
private int getTypeCheckId(String curType) { private int getTypeCheckId(String curType) {
@ -597,6 +609,7 @@ public class RuleActivity extends AppCompatActivity {
@Override @Override
protected void onPause() { protected void onPause() {
overridePendingTransition(0, 0);
super.onPause(); super.onPause();
MobclickAgent.onPageEnd(TAG); MobclickAgent.onPageEnd(TAG);
MobclickAgent.onPause(this); MobclickAgent.onPause(this);

View File

@ -68,7 +68,11 @@ import com.idormy.sms.forwarder.sender.SenderTelegramMsg;
import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.sender.SenderUtil;
import com.idormy.sms.forwarder.sender.SenderWebNotifyMsg; import com.idormy.sms.forwarder.sender.SenderWebNotifyMsg;
import com.idormy.sms.forwarder.utils.CommonUtil; import com.idormy.sms.forwarder.utils.CommonUtil;
import com.idormy.sms.forwarder.utils.LogUtil;
import com.idormy.sms.forwarder.utils.RuleUtil;
import com.idormy.sms.forwarder.utils.SettingUtil;
import com.idormy.sms.forwarder.view.ClearEditText; import com.idormy.sms.forwarder.view.ClearEditText;
import com.idormy.sms.forwarder.view.StepBar;
import com.umeng.analytics.MobclickAgent; import com.umeng.analytics.MobclickAgent;
import java.net.Proxy; import java.net.Proxy;
@ -102,7 +106,10 @@ public class SenderActivity extends AppCompatActivity {
Log.d(TAG, "onCreate"); Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sender); setContentView(R.layout.activity_sender);
SenderUtil.init(SenderActivity.this);
LogUtil.init(this);
RuleUtil.init(this);
SenderUtil.init(this);
} }
@Override @Override
@ -309,6 +316,13 @@ public class SenderActivity extends AppCompatActivity {
}); });
}); });
//步骤完成状态校验
boolean checkStep1 = SettingUtil.getSwitchEnableSms() || SettingUtil.getSwitchEnablePhone() || SettingUtil.getSwitchEnableAppNotify();
boolean checkStep2 = SenderUtil.countSender("1", null) > 0;
boolean checkStep3 = RuleUtil.countRule("1", null, null) > 0;
boolean checkStep4 = LogUtil.countLog("2", null, null) > 0;
StepBar stepBar = findViewById(R.id.stepBar);
stepBar.setHighlight(checkStep1, checkStep2, checkStep3, checkStep4);
} }
@Override @Override
@ -326,6 +340,7 @@ public class SenderActivity extends AppCompatActivity {
@Override @Override
protected void onPause() { protected void onPause() {
overridePendingTransition(0, 0);
super.onPause(); super.onPause();
MobclickAgent.onPageEnd(TAG); MobclickAgent.onPageEnd(TAG);
MobclickAgent.onPause(this); MobclickAgent.onPause(this);

View File

@ -31,14 +31,18 @@ import androidx.appcompat.app.AppCompatActivity;
import com.idormy.sms.forwarder.receiver.RebootBroadcastReceiver; import com.idormy.sms.forwarder.receiver.RebootBroadcastReceiver;
import com.idormy.sms.forwarder.sender.HttpServer; import com.idormy.sms.forwarder.sender.HttpServer;
import com.idormy.sms.forwarder.sender.SenderUtil;
import com.idormy.sms.forwarder.sender.SmsHubApiTask; import com.idormy.sms.forwarder.sender.SmsHubApiTask;
import com.idormy.sms.forwarder.utils.CommonUtil; import com.idormy.sms.forwarder.utils.CommonUtil;
import com.idormy.sms.forwarder.utils.DbHelper; import com.idormy.sms.forwarder.utils.DbHelper;
import com.idormy.sms.forwarder.utils.Define; import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.HttpUtil; import com.idormy.sms.forwarder.utils.HttpUtil;
import com.idormy.sms.forwarder.utils.KeepAliveUtils; import com.idormy.sms.forwarder.utils.KeepAliveUtils;
import com.idormy.sms.forwarder.utils.LogUtil;
import com.idormy.sms.forwarder.utils.RuleUtil;
import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.utils.SettingUtil;
import com.idormy.sms.forwarder.view.ClearEditText; import com.idormy.sms.forwarder.view.ClearEditText;
import com.idormy.sms.forwarder.view.StepBar;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
@ -57,6 +61,10 @@ public class SettingActivity extends AppCompatActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
context = SettingActivity.this; context = SettingActivity.this;
setContentView(R.layout.activity_setting); setContentView(R.layout.activity_setting);
LogUtil.init(this);
RuleUtil.init(this);
SenderUtil.init(this);
} }
@SuppressLint("NewApi") @SuppressLint("NewApi")
@ -117,6 +125,20 @@ public class SettingActivity extends AppCompatActivity {
//帮助提示 //帮助提示
SwitchHelpTip(findViewById(R.id.switch_help_tip)); SwitchHelpTip(findViewById(R.id.switch_help_tip));
//步骤完成状态校验
boolean checkStep1 = SettingUtil.getSwitchEnableSms() || SettingUtil.getSwitchEnablePhone() || SettingUtil.getSwitchEnableAppNotify();
boolean checkStep2 = SenderUtil.countSender("1", null) > 0;
boolean checkStep3 = RuleUtil.countRule("1", null, null) > 0;
boolean checkStep4 = LogUtil.countLog("2", null, null) > 0;
StepBar stepBar = findViewById(R.id.stepBar);
stepBar.setHighlight(checkStep1, checkStep2, checkStep3, checkStep4);
}
@Override
protected void onPause() {
overridePendingTransition(0, 0);
super.onPause();
} }
//设置转发短信 //设置转发短信

View File

@ -62,6 +62,8 @@ public class RuleAdapter extends ArrayAdapter<RuleModel> {
viewHolder = new ViewHolder(); viewHolder = new ViewHolder();
viewHolder.ruleMatch = view.findViewById(R.id.rule_match); viewHolder.ruleMatch = view.findViewById(R.id.rule_match);
viewHolder.ruleSender = view.findViewById(R.id.rule_sender); viewHolder.ruleSender = view.findViewById(R.id.rule_sender);
viewHolder.ruleImage = view.findViewById(R.id.rule_image);
viewHolder.ruleStatus = view.findViewById(R.id.rule_status);
viewHolder.ruleSenderImage = view.findViewById(R.id.rule_sender_image); viewHolder.ruleSenderImage = view.findViewById(R.id.rule_sender_image);
viewHolder.ruleSenderStatus = view.findViewById(R.id.rule_sender_status); viewHolder.ruleSenderStatus = view.findViewById(R.id.rule_sender_status);
@ -74,6 +76,9 @@ public class RuleAdapter extends ArrayAdapter<RuleModel> {
// 获取控件实例并调用set...方法使其显示出来 // 获取控件实例并调用set...方法使其显示出来
if (ruleModel != null) { if (ruleModel != null) {
viewHolder.ruleImage.setImageResource(ruleModel.getImageId());
viewHolder.ruleStatus.setImageResource(ruleModel.getStatusImageId());
List<SenderModel> senderModel = SenderUtil.getSender(ruleModel.getSenderId(), null); List<SenderModel> senderModel = SenderUtil.getSender(ruleModel.getSenderId(), null);
viewHolder.ruleMatch.setText(ruleModel.getRuleMatch()); viewHolder.ruleMatch.setText(ruleModel.getRuleMatch());
if (!senderModel.isEmpty()) { if (!senderModel.isEmpty()) {
@ -113,6 +118,8 @@ public class RuleAdapter extends ArrayAdapter<RuleModel> {
static class ViewHolder { static class ViewHolder {
TextView ruleMatch; TextView ruleMatch;
TextView ruleSender; TextView ruleSender;
ImageView ruleImage;
ImageView ruleStatus;
ImageView ruleSenderImage; ImageView ruleSenderImage;
ImageView ruleSenderStatus; ImageView ruleSenderStatus;
} }

View File

@ -307,11 +307,33 @@ public class RuleModel {
return switchRegexReplace; return switchRegexReplace;
} }
public boolean getStatusChecked() { public boolean getStatusChecked() {
return !(status == STATUS_OFF); return !(status == STATUS_OFF);
} }
public int getImageId() {
switch (simSlot) {
case (CHECK_SIM_SLOT_1):
return R.drawable.sim1;
case (CHECK_SIM_SLOT_2):
return R.drawable.sim2;
case (CHECK_SIM_SLOT_ALL):
default:
return type.equals("app") ? R.drawable.ic_app : R.drawable.ic_sim;
}
}
public int getStatusImageId() {
switch (status) {
case (STATUS_OFF):
return R.drawable.ic_round_pause;
case (STATUS_ON):
default:
return R.drawable.ic_round_play;
}
}
@NonNull @NonNull
@Override @Override
public String toString() { public String toString() {

View File

@ -160,27 +160,23 @@ public class SenderUtil {
return tSenders; return tSenders;
} }
public static int countSender(String key) { public static int countSender(String status, String key) {
// Define a projection that specifies which columns from the database String[] projection = {};
// you will actually use after this query.
String[] projection = {
};
// Define 'where' part of query.
String selection = " 1 "; String selection = " 1 ";
// Specify arguments in placeholder order.
List<String> selectionArgList = new ArrayList<>(); List<String> selectionArgList = new ArrayList<>();
if (key != null) { if (status != null && !status.isEmpty()) {
// Define 'where' part of query. selection += " and " + SenderTable.SenderEntry.COLUMN_NAME_STATUS + " = ? ";
selection = " and (" + SenderTable.SenderEntry.COLUMN_NAME_NAME + " LIKE ? or " + SenderTable.SenderEntry.COLUMN_NAME_JSON_SETTING + " LIKE ? ) "; selectionArgList.add(status);
// Specify arguments in placeholder order. }
if (key != null && !key.isEmpty()) {
selection += " and (" + SenderTable.SenderEntry.COLUMN_NAME_NAME + " LIKE ? or " + SenderTable.SenderEntry.COLUMN_NAME_JSON_SETTING + " LIKE ? ) ";
selectionArgList.add(key); selectionArgList.add(key);
selectionArgList.add(key); selectionArgList.add(key);
} }
String[] selectionArgs = selectionArgList.toArray(new String[0]); String[] selectionArgs = selectionArgList.toArray(new String[0]);
// How you want the results sorted in the resulting Cursor
Cursor cursor = db.query( Cursor cursor = db.query(
SenderTable.SenderEntry.TABLE_NAME, // The table to query SenderTable.SenderEntry.TABLE_NAME, // The table to query
projection, // The array of columns to return (pass null to get all) projection, // The array of columns to return (pass null to get all)
@ -190,6 +186,7 @@ public class SenderUtil {
null, // don't filter by row groups null, // don't filter by row groups
null // The sort order null // The sort order
); );
int count = cursor.getCount(); int count = cursor.getCount();
cursor.close(); cursor.close();
return count; return count;

View File

@ -211,4 +211,39 @@ public class LogUtil {
return LogVos; return LogVos;
} }
public static int countLog(String status, String type, String value) {
String[] projection = {};
String selection = " 1 ";
List<String> selectionArgList = new ArrayList<>();
if (status != null && !status.isEmpty()) {
selection += " and " + LogTable.LogEntry.COLUMN_NAME_FORWARD_STATUS + " = ? ";
selectionArgList.add(status);
}
if (type != null && !type.isEmpty()) {
selection += " and " + LogTable.LogEntry.COLUMN_NAME_TYPE + " = ? ";
selectionArgList.add(status);
}
if (value != null && !value.isEmpty()) {
selection += " and " + LogTable.LogEntry.COLUMN_NAME_CONTENT + " LIKE ? ";
selectionArgList.add(value);
}
String[] selectionArgs = selectionArgList.toArray(new String[0]);
Cursor cursor = db.query(
LogTable.LogEntry.TABLE_NAME, // The table to query
projection, // The array of columns to return (pass null to get all)
selection, // The columns for the WHERE clause
selectionArgs, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
null // The sort order
);
int count = cursor.getCount();
cursor.close();
return count;
}
} }

View File

@ -196,4 +196,40 @@ public class RuleUtil {
return tRules; return tRules;
} }
public static int countRule(String status, String type, String value) {
String[] projection = {};
String selection = " 1 ";
List<String> selectionArgList = new ArrayList<>();
if (status != null && !status.isEmpty()) {
selection += " and " + RuleTable.RuleEntry.COLUMN_NAME_STATUS + " = ? ";
selectionArgList.add(status);
}
if (type != null && !type.isEmpty()) {
selection += " and " + RuleTable.RuleEntry.COLUMN_NAME_TYPE + " = ? ";
selectionArgList.add(status);
}
if (value != null && !value.isEmpty()) {
selection += " and " + RuleTable.RuleEntry.COLUMN_NAME_VALUE + " LIKE ? ";
selectionArgList.add(value);
}
String[] selectionArgs = selectionArgList.toArray(new String[0]);
Cursor cursor = db.query(
RuleTable.RuleEntry.TABLE_NAME, // The table to query
projection, // The array of columns to return (pass null to get all)
selection, // The columns for the WHERE clause
selectionArgs, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
null // The sort order
);
int count = cursor.getCount();
cursor.close();
return count;
}
} }

View File

@ -1,10 +1,13 @@
package com.idormy.sms.forwarder.view; package com.idormy.sms.forwarder.view;
import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.TypedArray;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
@ -14,36 +17,68 @@ import com.idormy.sms.forwarder.RuleActivity;
import com.idormy.sms.forwarder.SenderActivity; import com.idormy.sms.forwarder.SenderActivity;
import com.idormy.sms.forwarder.SettingActivity; import com.idormy.sms.forwarder.SettingActivity;
@SuppressWarnings("FieldCanBeLocal")
public class StepBar extends LinearLayout { public class StepBar extends LinearLayout {
private final Context mContext;
private TypedArray mTypedArray;
//自定义参数
private String current_step;
//控件 //控件
private final TextView txStep1; private TextView txStep1;
private final TextView txStep2; private TextView txStep2;
private final TextView txStep3; private TextView txStep3;
private final TextView txStep4; private TextView txStep4;
private final TextView tvStep1; private TextView tvStep1;
private final TextView tvStep2; private TextView tvStep2;
private final TextView tvStep3; private TextView tvStep3;
private final TextView tvStep4; private TextView tvStep4;
private ImageView ivStep_12_1;
private ImageView ivStep_12_2;
private ImageView ivStep_12_3;
private ImageView ivStep_23_1;
private ImageView ivStep_23_2;
private ImageView ivStep_23_3;
private ImageView ivStep_34_1;
private ImageView ivStep_34_2;
private ImageView ivStep_34_3;
public StepBar(Context context) {
super(context);
mContext = context;
initView();
}
public StepBar(final Context context, AttributeSet attrs) { public StepBar(final Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
//初始化界面 mContext = context;
View view = LayoutInflater.from(context).inflate(R.layout.step_bar, this); initParams(context, attrs);
//绑定 initView();
txStep1 = findViewById(R.id.txStep1);
txStep2 = findViewById(R.id.txStep2);
txStep3 = findViewById(R.id.txStep3);
txStep4 = findViewById(R.id.txStep4);
tvStep1 = findViewById(R.id.tvStep1);
tvStep2 = findViewById(R.id.tvStep2);
tvStep3 = findViewById(R.id.tvStep3);
tvStep4 = findViewById(R.id.tvStep4);
//初始化函数
init(context);
} }
private void init(final Context context) { public StepBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mContext = context;
initParams(context, attrs);
initView();
}
private void initParams(Context context, AttributeSet attrs) {
mTypedArray = mContext.obtainStyledAttributes(attrs, R.styleable.StepBar);
if (mTypedArray != null) {
current_step = mTypedArray.getString(R.styleable.StepBar_current_step);
System.out.println("current_step = " + current_step);
mTypedArray.recycle();
}
}
private void initView() {
//初始化界面
View view = LayoutInflater.from(mContext).inflate(R.layout.step_bar, this);
//步骤1
txStep1 = findViewById(R.id.txStep1);
tvStep1 = findViewById(R.id.tvStep1);
if (!current_step.equalsIgnoreCase("setting")) {
tvStep1.setOnClickListener(v -> { tvStep1.setOnClickListener(v -> {
Intent intent = new Intent(v.getContext(), SettingActivity.class); Intent intent = new Intent(v.getContext(), SettingActivity.class);
v.getContext().startActivity(intent); v.getContext().startActivity(intent);
@ -52,7 +87,14 @@ public class StepBar extends LinearLayout {
Intent intent = new Intent(v.getContext(), SettingActivity.class); Intent intent = new Intent(v.getContext(), SettingActivity.class);
v.getContext().startActivity(intent); v.getContext().startActivity(intent);
}); });
} else {
tvStep1.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark));
}
//步骤2
txStep2 = findViewById(R.id.txStep2);
tvStep2 = findViewById(R.id.tvStep2);
if (!current_step.equalsIgnoreCase("sender")) {
tvStep2.setOnClickListener(v -> { tvStep2.setOnClickListener(v -> {
Intent intent = new Intent(v.getContext(), SenderActivity.class); Intent intent = new Intent(v.getContext(), SenderActivity.class);
v.getContext().startActivity(intent); v.getContext().startActivity(intent);
@ -61,7 +103,14 @@ public class StepBar extends LinearLayout {
Intent intent = new Intent(v.getContext(), SenderActivity.class); Intent intent = new Intent(v.getContext(), SenderActivity.class);
v.getContext().startActivity(intent); v.getContext().startActivity(intent);
}); });
} else {
tvStep2.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark));
}
//步骤3
txStep3 = findViewById(R.id.txStep3);
tvStep3 = findViewById(R.id.tvStep3);
if (!current_step.equalsIgnoreCase("rule")) {
tvStep3.setOnClickListener(v -> { tvStep3.setOnClickListener(v -> {
Intent intent = new Intent(v.getContext(), RuleActivity.class); Intent intent = new Intent(v.getContext(), RuleActivity.class);
v.getContext().startActivity(intent); v.getContext().startActivity(intent);
@ -70,7 +119,14 @@ public class StepBar extends LinearLayout {
Intent intent = new Intent(v.getContext(), RuleActivity.class); Intent intent = new Intent(v.getContext(), RuleActivity.class);
v.getContext().startActivity(intent); v.getContext().startActivity(intent);
}); });
} else {
tvStep3.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark));
}
//步骤4
txStep4 = findViewById(R.id.txStep4);
tvStep4 = findViewById(R.id.tvStep4);
if (!current_step.equalsIgnoreCase("main")) {
tvStep4.setOnClickListener(v -> { tvStep4.setOnClickListener(v -> {
Intent intent = new Intent(v.getContext(), MainActivity.class); Intent intent = new Intent(v.getContext(), MainActivity.class);
v.getContext().startActivity(intent); v.getContext().startActivity(intent);
@ -79,7 +135,45 @@ public class StepBar extends LinearLayout {
Intent intent = new Intent(v.getContext(), MainActivity.class); Intent intent = new Intent(v.getContext(), MainActivity.class);
v.getContext().startActivity(intent); v.getContext().startActivity(intent);
}); });
} else {
tvStep4.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark));
}
ivStep_12_1 = findViewById(R.id.ivStep_12_1);
ivStep_12_2 = findViewById(R.id.ivStep_12_2);
ivStep_12_3 = findViewById(R.id.ivStep_12_3);
ivStep_23_1 = findViewById(R.id.ivStep_23_1);
ivStep_23_2 = findViewById(R.id.ivStep_23_2);
ivStep_23_3 = findViewById(R.id.ivStep_23_3);
ivStep_34_1 = findViewById(R.id.ivStep_34_1);
ivStep_34_2 = findViewById(R.id.ivStep_34_2);
ivStep_34_3 = findViewById(R.id.ivStep_34_3);
}
@SuppressLint("UseCompatLoadingForDrawables")
public void setHighlight(boolean Step1, boolean Step2, boolean Step3, boolean Step4) {
if (Step1) txStep1.setBackground(mContext.getResources().getDrawable(R.drawable.step_circle_current));
if (Step2) txStep2.setBackground(mContext.getResources().getDrawable(R.drawable.step_circle_current));
if (Step3) txStep3.setBackground(mContext.getResources().getDrawable(R.drawable.step_circle_current));
if (Step4) txStep4.setBackground(mContext.getResources().getDrawable(R.drawable.step_circle_current));
if (Step1 && Step2) {
ivStep_12_1.setImageResource(R.drawable.step_rectangle_current);
ivStep_12_2.setImageResource(R.drawable.step_rectangle_current);
ivStep_12_3.setImageResource(R.drawable.step_rectangle_current);
}
if (Step2 && Step3) {
ivStep_23_1.setImageResource(R.drawable.step_rectangle_current);
ivStep_23_2.setImageResource(R.drawable.step_rectangle_current);
ivStep_23_3.setImageResource(R.drawable.step_rectangle_current);
}
if (Step3 && Step4) {
ivStep_34_1.setImageResource(R.drawable.step_rectangle_current);
ivStep_34_2.setImageResource(R.drawable.step_rectangle_current);
ivStep_34_3.setImageResource(R.drawable.step_rectangle_current);
}
} }
} }

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M19.99,4c0,-1.1 -0.89,-2 -1.99,-2h-8L4,8v12c0,1.1 0.9,2 2,2h12.01c1.1,0 1.99,-0.9 1.99,-2l-0.01,-16zM9,19L7,19v-2h2v2zM17,19h-2v-2h2v2zM9,15L7,15v-4h2v4zM13,19h-2v-4h2v4zM13,13h-2v-2h2v2zM17,15h-2v-4h2v4z" />
</vector>

View File

@ -88,8 +88,10 @@
android:textSize="12sp" /> android:textSize="12sp" />
<com.idormy.sms.forwarder.view.StepBar <com.idormy.sms.forwarder.view.StepBar
android:id="@+id/stepBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
app:current_step="main" />
</LinearLayout> </LinearLayout>
</RelativeLayout> </RelativeLayout>

View File

@ -98,8 +98,10 @@
android:textSize="12sp" /> android:textSize="12sp" />
<com.idormy.sms.forwarder.view.StepBar <com.idormy.sms.forwarder.view.StepBar
android:id="@+id/stepBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
app:current_step="rule" />
</LinearLayout> </LinearLayout>

View File

@ -48,8 +48,10 @@
android:textSize="12sp" /> android:textSize="12sp" />
<com.idormy.sms.forwarder.view.StepBar <com.idormy.sms.forwarder.view.StepBar
android:id="@+id/stepBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
app:current_step="sender" />
</LinearLayout> </LinearLayout>
</RelativeLayout> </RelativeLayout>

View File

@ -33,14 +33,14 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="转发功能" android:text="@string/forwarding_function"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
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_marginStart="10dp"
android:text="总开关,请根据实际需要,启用对应的转发功能" android:text="@string/forwarding_function_tips"
android:textSize="10sp" android:textSize="10sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
</LinearLayout> </LinearLayout>
@ -123,7 +123,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="必选类型:" android:text="@string/mandatory_type"
android:textSize="11sp" android:textSize="11sp"
android:textStyle="bold" android:textStyle="bold"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
@ -135,7 +135,7 @@
android:layout_marginStart="-5dp" android:layout_marginStart="-5dp"
android:scaleX="0.7" android:scaleX="0.7"
android:scaleY="0.7" android:scaleY="0.7"
android:text="未接来电" /> android:text="@string/missed_call" />
<CheckBox <CheckBox
android:id="@+id/cbCallType1" android:id="@+id/cbCallType1"
@ -144,7 +144,7 @@
android:layout_marginStart="-15dp" android:layout_marginStart="-15dp"
android:scaleX="0.7" android:scaleX="0.7"
android:scaleY="0.7" android:scaleY="0.7"
android:text="已接来电" /> android:text="@string/received_call" />
<CheckBox <CheckBox
android:id="@+id/cbCallType2" android:id="@+id/cbCallType2"
@ -153,7 +153,7 @@
android:layout_marginStart="-15dp" android:layout_marginStart="-15dp"
android:scaleX="0.7" android:scaleX="0.7"
android:scaleY="0.7" android:scaleY="0.7"
android:text="本机去电" /> android:text="@string/local_outgoing_call" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@ -208,7 +208,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="可选操作:" android:text="@string/optional_action"
android:textSize="11sp" android:textSize="11sp"
android:textStyle="bold" android:textStyle="bold"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
@ -248,14 +248,14 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="主动请求" android:text="@string/active_request"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
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_marginStart="10dp"
android:text="通过 被动接收 或者 主动轮询 获取指令,从而操作本机" android:text="@string/active_request_tips"
android:textSize="10sp" android:textSize="10sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
</LinearLayout> </LinearLayout>
@ -278,14 +278,14 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="被动接收本地 HttpServer" android:text="@string/httpserver"
android:textStyle="bold" android:textStyle="bold"
tools:ignore="RelativeOverlap" /> tools:ignore="RelativeOverlap" />
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="WiFi网络下可用启动后局域网内其他机器可直接调用本机接口" android:text="@string/httpserver_tips"
android:textSize="9sp" android:textSize="9sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
</LinearLayout> </LinearLayout>
@ -363,14 +363,14 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="电池监控" android:text="@string/battery_monitor"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
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_marginStart="10dp"
android:text="电池状态变化与电量预警互不干扰" android:text="@string/battery_monitor_tips"
android:textSize="10sp" android:textSize="10sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
</LinearLayout> </LinearLayout>
@ -508,14 +508,14 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="保活措施" android:text="@string/keep_alive"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
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_marginStart="10dp"
android:text="建议开启每一项授权或设置不要禁用通知栏避免APP服务被杀" android:text="@string/keep_alive_tips"
android:textSize="10sp" android:textSize="10sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
</LinearLayout> </LinearLayout>
@ -760,14 +760,14 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="个性设置" android:text="@string/custom_settings"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
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_marginStart="10dp"
android:text="如果自动获取失败,请手动填写备注信息;清空后将再次自动获取!" android:text="@string/custom_settings_tips"
android:textSize="10sp" android:textSize="10sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
</LinearLayout> </LinearLayout>
@ -1091,8 +1091,10 @@
android:textSize="12sp" /> android:textSize="12sp" />
<com.idormy.sms.forwarder.view.StepBar <com.idormy.sms.forwarder.view.StepBar
android:id="@+id/stepBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
app:current_step="setting" />
</LinearLayout> </LinearLayout>

View File

@ -466,6 +466,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="3" android:layout_weight="3"
android:checked="true"
android:gravity="end" android:gravity="end"
android:textSize="18sp" android:textSize="18sp"
tools:ignore="UseSwitchCompatOrMaterialXml" /> tools:ignore="UseSwitchCompatOrMaterialXml" />

View File

@ -468,6 +468,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="3" android:layout_weight="3"
android:checked="true"
android:gravity="end" android:gravity="end"
android:textSize="18sp" android:textSize="18sp"
tools:ignore="UseSwitchCompatOrMaterialXml" /> tools:ignore="UseSwitchCompatOrMaterialXml" />

View File

@ -470,6 +470,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="3" android:layout_weight="3"
android:checked="true"
android:gravity="end" android:gravity="end"
android:textSize="18sp" android:textSize="18sp"
tools:ignore="UseSwitchCompatOrMaterialXml" /> tools:ignore="UseSwitchCompatOrMaterialXml" />

View File

@ -68,10 +68,14 @@
<TextView <TextView
android:id="@+id/tlog_content" android:id="@+id/tlog_content"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="start"
android:layout_marginBottom="10dp" /> android:layout_marginBottom="10dp"
android:ellipsize="end"
android:gravity="start"
android:maxEms="8"
android:maxLines="3" />
</LinearLayout> </LinearLayout>

View File

@ -3,6 +3,8 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
tools:ignore="UseCompoundDrawables"> tools:ignore="UseCompoundDrawables">
@ -15,11 +17,12 @@
<TextView <TextView
android:id="@+id/ItemTextView" android:id="@+id/ItemTextView"
android:layout_width="fill_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dip" android:layout_marginTop="5dip"
android:ellipsize="end"
android:gravity="center" android:gravity="center"
android:maxEms="6" android:maxEms="5"
android:maxLines="1" android:maxLines="1"
android:textColor="#ffffff" android:textColor="#ffffff"
android:textSize="12sp" /> android:textSize="12sp" />

View File

@ -12,17 +12,16 @@
<LinearLayout <LinearLayout
android:layout_width="34dp" android:layout_width="34dp"
android:layout_height="34dp" android:layout_height="34dp"
android:layout_marginStart="5dp"
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:id="@+id/rule_sender_image" android:id="@+id/rule_image"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="32dp" android:layout_height="32dp"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/rule_sender_status" android:id="@+id/rule_status"
android:layout_width="16dp" android:layout_width="16dp"
android:layout_height="16dp" android:layout_height="16dp"
android:layout_marginStart="18dp" android:layout_marginStart="18dp"
@ -32,15 +31,53 @@
<TextView <TextView
android:id="@+id/rule_match" android:id="@+id/rule_match"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginStart="5dp" /> android:layout_marginStart="5dp"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="start"
android:maxEms="8"
android:maxLines="3" />
<LinearLayout
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:gravity="center_horizontal"
android:orientation="vertical">
<LinearLayout
android:layout_width="24dp"
android:layout_height="24dp"
android:orientation="vertical">
<ImageView
android:id="@+id/rule_sender_image"
android:layout_width="24dp"
android:layout_height="24dp"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/rule_sender_status"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginStart="14dp"
android:layout_marginTop="-10dp"
tools:ignore="ContentDescription" />
</LinearLayout>
<TextView <TextView
android:id="@+id/rule_sender" android:id="@+id/rule_sender"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:ellipsize="end"
android:layout_marginStart="5dp" /> android:gravity="center"
android:maxEms="6"
android:maxLines="1"
android:textSize="9sp"
tools:ignore="SmallSp" />
</LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -32,9 +32,14 @@
<TextView <TextView
android:id="@+id/sender_name" android:id="@+id/sender_name"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginStart="10dp" /> android:layout_marginStart="10dp"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="start"
android:maxEms="8"
android:maxLines="2" />
</LinearLayout> </LinearLayout>

View File

@ -27,44 +27,48 @@
android:id="@+id/txStep1" android:id="@+id/txStep1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/step_circle_current" android:background="@drawable/step_circle_normal"
android:gravity="center" android:gravity="center"
android:text="@string/_1" android:text="@string/_1"
android:textColor="#fff" android:textColor="#fff"
android:textSize="16sp" /> android:textSize="16sp" />
<ImageView <ImageView
android:id="@+id/ivStep_12_1"
android:layout_width="15dp" android:layout_width="15dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@drawable/step_rectangle_current" android:src="@drawable/step_rectangle_normal"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/ivStep_12_2"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_weight="1" android:layout_weight="1"
android:src="@drawable/step_rectangle_current" android:src="@drawable/step_rectangle_normal"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/ivStep_12_3"
android:layout_width="15dp" android:layout_width="15dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@drawable/step_rectangle_current" android:src="@drawable/step_rectangle_normal"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
android:id="@+id/txStep2" android:id="@+id/txStep2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/step_circle_current" android:background="@drawable/step_circle_normal"
android:gravity="center" android:gravity="center"
android:text="@string/_2" android:text="@string/_2"
android:textColor="#fff" android:textColor="#fff"
android:textSize="16sp" /> android:textSize="16sp" />
<ImageView <ImageView
android:id="@+id/ivStep_23_1"
android:layout_width="15dp" android:layout_width="15dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_gravity="center" android:layout_gravity="center"
@ -72,6 +76,7 @@
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/ivStep_23_2"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_weight="1" android:layout_weight="1"
@ -79,6 +84,7 @@
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/ivStep_23_3"
android:layout_width="15dp" android:layout_width="15dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_gravity="center" android:layout_gravity="center"
@ -96,6 +102,7 @@
android:textSize="16sp" /> android:textSize="16sp" />
<ImageView <ImageView
android:id="@+id/ivStep_34_1"
android:layout_width="15dp" android:layout_width="15dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_gravity="center" android:layout_gravity="center"
@ -103,6 +110,7 @@
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
android:id="@+id/ivStep_34_2"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_weight="1" android:layout_weight="1"
@ -111,6 +119,7 @@
<ImageView <ImageView
android:id="@+id/ivStep_34_3"
android:layout_width="15dp" android:layout_width="15dp"
android:layout_height="4dp" android:layout_height="4dp"
android:layout_gravity="center" android:layout_gravity="center"

View File

@ -312,4 +312,21 @@
<string name="step_4">Logs</string> <string name="step_4">Logs</string>
<string name="clean_log">Clean Log</string> <string name="clean_log">Clean Log</string>
<string name="todo">TODO</string> <string name="todo">TODO</string>
<string name="forwarding_function">Forwarding Function</string>
<string name="forwarding_function_tips">Main switch: Enable the forwarding function as required</string>
<string name="mandatory_type">Mandatory type:</string>
<string name="missed_call">Missed call</string>
<string name="received_call">Received call</string>
<string name="local_outgoing_call">Local outgoing call</string>
<string name="optional_action">Optional action:</string>
<string name="active_request">Active request</string>
<string name="active_request_tips">Obtain instructions through passive reception or active polling to operate the machine</string>
<string name="httpserver">Local HttpServer</string>
<string name="httpserver_tips">Available under WiFi network, after startup, other machines in the LAN can directly call the local interface</string>
<string name="battery_monitor">Battery monitor</string>
<string name="battery_monitor_tips">[Note] You need to manually create APP forwarding rules, package name: 88888888</string>
<string name="keep_alive">Keep alive measures</string>
<string name="keep_alive_tips">It is recommended to open each authorization or setting, do not disable the notification bar, to avoid the APP service being killed</string>
<string name="custom_settings">Custom settings</string>
<string name="custom_settings_tips">If the automatic acquisition fails, please fill in the remarks manually; after clearing, it will be automatically acquired again!</string>
</resources> </resources>

View File

@ -76,4 +76,8 @@
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item> <item name="android:windowNoTitle">true</item>
</style> </style>
<declare-styleable name="StepBar">
<attr name="current_step" format="string" />
</declare-styleable>
</resources> </resources>

View File

@ -311,4 +311,21 @@
<string name="step_4">转发日志</string> <string name="step_4">转发日志</string>
<string name="clean_log">清理日志</string> <string name="clean_log">清理日志</string>
<string name="todo">TODO</string> <string name="todo">TODO</string>
<string name="forwarding_function">转发功能</string>
<string name="forwarding_function_tips">总开关,请根据实际需要,启用对应的转发功能</string>
<string name="mandatory_type">必选类型:</string>
<string name="missed_call">未接来电</string>
<string name="received_call">已接来电</string>
<string name="local_outgoing_call">本机去电</string>
<string name="optional_action">可选操作:</string>
<string name="active_request">主动请求</string>
<string name="active_request_tips">通过 被动接收 或者 主动轮询 获取指令,从而操作本机</string>
<string name="httpserver">被动接收本地 HttpServer</string>
<string name="httpserver_tips">WiFi网络下可用启动后局域网内其他机器可直接调用本机接口</string>
<string name="battery_monitor">电池监控</string>
<string name="battery_monitor_tips">【注意】需要手动创建APP转发规则包名88888888</string>
<string name="keep_alive">保活措施</string>
<string name="keep_alive_tips">建议开启每一项授权或设置不要禁用通知栏避免APP服务被杀</string>
<string name="custom_settings">个性设置</string>
<string name="custom_settings_tips">如果自动获取失败,请手动填写备注信息;清空后将再次自动获取!</string>
</resources> </resources>

View File

@ -79,4 +79,8 @@
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item> <item name="android:windowNoTitle">true</item>
</style> </style>
<declare-styleable name="StepBar">
<attr name="current_step" format="string" />
</declare-styleable>
</resources> </resources>