Остановка на экране Splash для 4's 5 без необходимости не имеет большого смысла. Это нормально, если вы загружаете что-то в фоновом режиме, следуйте этому подходу, чтобы реализовать заставку: - Внедрение заставки - это немного иначе, чем вы могли себе представить. Представление всплеска, которое вы видите, должно быть готово немедленно, даже до того, как вы сможете раздуть файл макета в своей активности всплеска.
Таким образом, вы не будете использовать файл макета. Вместо этого укажите фон вашего заставки в качестве фона темы мероприятия. Для этого сначала создайте XML-чертеж в res / drawable.
-
Здесь я установил цвет фона и изображение.
Затем вы будете установите это как фоновый фон вашей брызги в теме. Перейдите к файлу styles.xml и добавьте новую тему для вашей активности всплеска:
В новом SplashTheme установите атрибут фона фона для вашего XML-чертежа. Настройте это как тему своей активности всплеска в вашем AndroidManifest.xml:
Наконец, класс SplashActivity должен просто перенаправлять вас на ваш основной вид деятельности:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
Подробнее читайте это: 1. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 2. http://blog.goodbarber.com/3- советы к Create-A-great-заставку-для-вашего-подвижной app_a287.html
Это ошибка из-за оптимизации в bash.
При замене шаблона bash first проверяет, соответствует ли шаблон в любом месте в строке. Если это не так, тогда нет смысла выполнять поиск и замену. То, как он это делает, - построить новый шаблон, поместив его с помощью *..*
по мере необходимости:
/* If the pattern doesn't match anywhere in the string, go ahead and
short-circuit right away. A minor optimization, saves a bunch of
unnecessary calls to strmatch (up to N calls for a string of N
characters) if the match is unsuccessful. To preserve the semantics
of the substring matches below, we make sure that the pattern has
`*' as first and last character, making a new pattern if necessary. */
/* XXX - check this later if I ever implement `**' with special meaning,
since this will potentially result in `**' at the beginning or end */
len = STRLEN (pat);
if (pat[0] != '*' || (pat[0] == '*' && pat[1] == LPAREN && extended_glob) || pat[len - 1] != '*')
{
int unescaped_backslash;
char *pp;
p = npat = (char *)xmalloc (len + 3);
p1 = pat;
if (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob))
*p++ = '*';
Образец, который он пытается сопоставить со строкой, заканчивается *(*
Открытие *(
теперь непреднамеренно распознается как начало extglob, но когда bash не находит закрытие )
, оно соответствует шаблону в виде строки:
prest = PATSCAN (p + (*p == L('(')), pe, 0); /* ) */
if (prest == 0)
/* If PREST is 0, we failed to scan a valid pattern. In this
case, we just want to compare the two as strings. */
return (STRCOMPARE (p - 1, pe, s, se));
Это означает, что если строка, в которой выполняются замены, буквально *(*
, оптимизация неверно отклоняет строку, считая, что делать нечего. Разумеется, это также означает, что он корректно работает для самого *(*
:
$ f='*(*'; echo "${f//(/\\(}"
*\(*
Если вы хотите выманить эту проверку оптимизации в исходном коде:
diff --git a/subst.c b/subst.c
index fc00cab0..f063f784 100644
--- a/subst.c
+++ b/subst.c
@@ -4517,8 +4517,6 @@ match_upattern (string, pat, mtype, sp, ep)
c = strmatch (npat, string, FNMATCH_EXTFLAG | FNMATCH_IGNCASE);
if (npat != pat)
free (npat);
- if (c == FNM_NOMATCH)
- return (0);
len = STRLEN (string);
end = string + len;
, тогда он будет корректно работать в вашем случае:
$ ./bash -c 'f="my string(1) with (parens)"; echo "${f//(/\\(}"'
my string\(1) with \(parens)
Цитирование строки поиска не позволяет интерпретировать ее как глобус и тем самым устраняет проблему:
shopt -s extglob
foo='file(2)'
foo=${foo//'('/'\('}
foo=${foo//')'/'\)'}
printf '%s\n' "$foo"
(цитата о замене также позволяет избежать дублирования обратной косой черты).
)
имеет смысл только в контексте предшествующего (
. Тем не менее, мне нужно было бы вникнуть в парсер, чтобы дать вам точный ответ, а не «не делать этого». главное правило. Тем не менее, общее правило достаточно, поскольку оно делает любое / все поведение в режиме глобуса совершенно не имеющим отношения к операции.
– Charles Duffy
13 July 2018 в 17:54
(
можно интерпретировать как extglob
без +
или @
и т. Д. Или без закрывающей круглой скобки.
– mickp
13 July 2018 в 17:57