Size: a a a

Android Developers

2021 January 16

CF

C Y B E R F O X in Android Developers
Malik
AS (4.1.1) на маке (Big Sur) в Full Screen постоянно тупит, перестает реагировать, приходится убивать процесс. Сталкивался кто и как боролись?
Согласно странице официального ДЕВа андрюши (вольный перевод):
На компьютерах под управлением macOS Big Sur Android Studio 4.1 может зависнуть при открытии диалогового окна.
Чтобы обойти эту проблему, выполните одно из следующих действий:
    Перейдите в меню Apple, выберите Системные настройки> Общие. Во вкладке «Предпочитать вкладки при открытии документов» выберите «никогда». Затем перезапустите Android Studio.
    Выполните обновление до Android Studio 4.2, которое в настоящее время доступно в бета-версии.
В противном случае дождитесь стабильной Android Studio 4.2.
источник

D

Denis in Android Developers
Deni
Понял, спасибо за советы!
private static void expand(final View v, TextView textView) {
       int color = !LeveeApplication.getIsNightMode() ? R.color.white : R.color.black_app_color;
       textView.setBackgroundColor(ContextCompat.getColor(LeveeApplication.getAppContext(), color));
//        textView.setTextColor(ContextCompat.getColor(LeveeApplication.getAppContext(), R.color.support_activity_blue_color));
       int matchParentMeasureSpec = View.MeasureSpec.makeMeasureSpec(((View) v.getParent()).getWidth(), View.MeasureSpec.EXACTLY);
       int wrapContentMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
       v.measure(matchParentMeasureSpec, wrapContentMeasureSpec);
       final int targetHeight = v.getMeasuredHeight();

       // Older versions of android (pre API 21) cancel animations for views with a height of 0.
       v.getLayoutParams().height = 1;
       v.setVisibility(View.VISIBLE);
       Animation a = new Animation() {
           @Override
           protected void applyTransformation(float interpolatedTime, Transformation t) {
               v.getLayoutParams().height = interpolatedTime == 1
                       ? ViewGroup.LayoutParams.WRAP_CONTENT
                       : (int) (targetHeight * interpolatedTime);
               v.requestLayout();
           }

           @Override
           public boolean willChangeBounds() {
               return true;
           }
       };

       // Expansion speed of 1dp/ms
       a.setDuration((int) (targetHeight / v.getContext().getResources().getDisplayMetrics().density));
       v.startAnimation(a);
   }
источник

D

Denis in Android Developers
private static void collapse(final View v, Animation.AnimationListener listener) {
       final int initialHeight = v.getMeasuredHeight();

       Animation a = new Animation() {
           @Override
           protected void applyTransformation(float interpolatedTime, Transformation t) {
               if (interpolatedTime == 1) {
                   v.setVisibility(View.GONE);
               } else {
                   v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
                   v.requestLayout();
               }
           }

           @Override
           public boolean willChangeBounds() {
               return true;
           }
       };
       a.setAnimationListener(listener);

       // Collapse speed of 1dp/ms
       a.setDuration(300);
       v.startAnimation(a);
   }
источник

D

Deni in Android Developers
Denis
private static void collapse(final View v, Animation.AnimationListener listener) {
       final int initialHeight = v.getMeasuredHeight();

       Animation a = new Animation() {
           @Override
           protected void applyTransformation(float interpolatedTime, Transformation t) {
               if (interpolatedTime == 1) {
                   v.setVisibility(View.GONE);
               } else {
                   v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
                   v.requestLayout();
               }
           }

           @Override
           public boolean willChangeBounds() {
               return true;
           }
       };
       a.setAnimationListener(listener);

       // Collapse speed of 1dp/ms
       a.setDuration(300);
       v.startAnimation(a);
   }
Спасибо! 👍🏼
источник

D

Denis in Android Developers
Deni
Спасибо! 👍🏼
там еще сделан коллапс всех остальных вью, кроме той, которая раскрывается. могу, короче, в личку полностью код скинуть если надо
источник

M

Malik in Android Developers
C Y B E R F O X
Согласно странице официального ДЕВа андрюши (вольный перевод):
На компьютерах под управлением macOS Big Sur Android Studio 4.1 может зависнуть при открытии диалогового окна.
Чтобы обойти эту проблему, выполните одно из следующих действий:
    Перейдите в меню Apple, выберите Системные настройки> Общие. Во вкладке «Предпочитать вкладки при открытии документов» выберите «никогда». Затем перезапустите Android Studio.
    Выполните обновление до Android Studio 4.2, которое в настоящее время доступно в бета-версии.
В противном случае дождитесь стабильной Android Studio 4.2.
Спасибо)
источник

D

Deni in Android Developers
Denis
там еще сделан коллапс всех остальных вью, кроме той, которая раскрывается. могу, короче, в личку полностью код скинуть если надо
Не, спасибо) дальше сам разберусь, так интереснее)
источник

S

Singular in Android Developers
По вашему опыту, какой лучший и безопасный способ использовать TextWatcher и избавиться от рекурсии при изменении строки?
источник

D

Denis in Android Developers
Ни у кого не было проблемы после обновления студии до 4.1, когда на винде верхняя панель не воспринимает цветовую схему Darcula? ну, т.е. все остальное работает нормально, а вот эта панель всех окон остается светлой. юзаю плагин, но хотелось бы решить проблему все-таки
источник

D

Denis in Android Developers
Singular
По вашему опыту, какой лучший и безопасный способ использовать TextWatcher и избавиться от рекурсии при изменении строки?
я просто отключаю вотчер при редактировании и подключаю его после. может, тупо, но работает)
источник

S

Singular in Android Developers
Denis
я просто отключаю вотчер при редактировании и подключаю его после. может, тупо, но работает)
Такой подход тормознутый, и слишком сильно расходует ресурсы
источник

D

Denis in Android Developers
я понимаю там экономия ресов и тд и тп, но блин, это ж сколько вотчеров нужно добавить, чтобы система хоть на долю секунды задумалась?
источник

S

Singular in Android Developers
Denis
я понимаю там экономия ресов и тд и тп, но блин, это ж сколько вотчеров нужно добавить, чтобы система хоть на долю секунды задумалась?
Ну при быстро вводе фризы появляются на некоторых слабых телефонах
источник

DH

Daniil Horishnii in Android Developers
Singular
Ну при быстро вводе фризы появляются на некоторых слабых телефонах
просто таймаут поставить небольшой, да и все
источник

D

Denis in Android Developers
Singular
Ну при быстро вводе фризы появляются на некоторых слабых телефонах
я очень сомневаюсь, что действия removeCallback()(или как там метод называется) и addOnTextChangeListener могут повлиять на производительность даже если они вызываются в onTextChanged
источник

S

Singular in Android Developers
Ну вот допустим в PhoneNumberFormattingTextWatcher  используются флаги
источник

D

Denis in Android Developers
Какие флаги? И как они относятся к рекурсии?
источник

S

Singular in Android Developers
Denis
Какие флаги? И как они относятся к рекурсии?
Глянь исходники ватчера от гугла
источник

D

Denis in Android Developers
кинь линк плз
источник

CF

C Y B E R F O X in Android Developers
Как жаль, что до понимания такого мне расти и расти...
https://developer.android.com/reference/kotlin/android/text/TextWatcher.html?hl=ru
источник