• Как выполнить такую верстку в android xml?

    @YuryBorodkin
    Android dev
    activity_main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.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:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context=".MainActivity"
        tools:showIn="@layout/activity_main">
    
    
        <View
            android:layout_width="match_parent"
            android:layout_height="4dp"
            android:background="@drawable/shadow_4dp"
            app:layout_constraintBottom_toTopOf="@+id/buttons_background"
            />
    
        <View
            android:id="@+id/buttons_background"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="#dadada"
            app:layout_constraintBottom_toBottomOf="parent" />
    
    
        <ImageButton
            android:id="@+id/red_ibtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="?selectableItemBackgroundBorderless"
            android:src="@drawable/ic_circle_solid_red_72dp"
            android:translationY="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />
    
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
    
            android:background="?selectableItemBackgroundBorderless"
            android:src="@drawable/ic_android_black_24dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/red_ibtn"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@id/buttons_background" />
    
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
    
            android:background="?selectableItemBackgroundBorderless"
            android:src="@drawable/ic_android_black_24dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@id/red_ibtn"
            app:layout_constraintTop_toTopOf="@id/buttons_background" />
    </android.support.constraint.ConstraintLayout>

    ic_circle_solid_red_72dp xml
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" android:visible="true">
        <size
            android:width="72dp"
            android:height="72dp" />
        <solid android:color="#cb253d" />
    
    </shape>

    shadow_4dp xml
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <size android:width="0dp" android:height="4dp"/>
        <gradient
            android:angle="90"
            android:endColor="#02000000"
            android:startColor="#32000000" />
    
    </shape>
    Ответ написан
    Комментировать
  • Как отрисовать пройденный маршрут в google maps api (android)?

    @YuryBorodkin
    Android dev
    PolylineOptions rectOptions = new PolylineOptions()
    .add(new LatLng(37.35, -122.0))//добавляем точки
    .add(new LatLng(37.45, -122.0))
    .add(new LatLng(37.45, -122.2))
    .add(new LatLng(37.35, -122.2))
    .add(new LatLng(37.35, -122.0));

    Polyline polyline = myMap.addPolyline(rectOptions);
    Ответ написан
    Комментировать
  • Как из класса добавить картинку на экран?

    @YuryBorodkin
    Android dev
    ну для таких целей используются assets.
    Создается папке assets в основной папке приложения (где src,buid, config) - туда кладутся картинки. Их имена и надо хранить в sqlite.
    Потом
    InputStream ims = getAssets().open("my_image.jpg");
       
        Drawable d = Drawable.createFromStream(ims, null);

    и готово.
    Ответ написан
    Комментировать
  • Как отключить реакцию на касание для EditText в Android?

    @YuryBorodkin
    Android dev
    Для таких случаев пригодиться метод onInterceptTouchEvent(MotionEvent) класса viewgroup.
    Создадим класс-наследник вьюгрупп
    public class InterceptableConstraintLayout extends ConstraintLayout {
        private Set<View> mIntercepatbleViews = new HashSet<>();
    
        public InterceptableConstraintLayout(Context context) {
            super(context);
        }
    
        public InterceptableConstraintLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public InterceptableConstraintLayout(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        public void addViewToIntercept(View v) {
            if (v == null) return;
            mIntercepatbleViews.add(v);
        }
    
        public void removeViewFromInterception(View v) {
            if (v == null) return;
            mIntercepatbleViews.remove(v);
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            if (ev.getAction() == MotionEvent.ACTION_DOWN
                    && mIntercepatbleViews.size() > 0
                    && getChildCount() > 0) {
                int x = (int) ev.getX();
                int y = (int) ev.getY();
                Rect hitRect = new Rect();
                for (int i = 0; i < getChildCount(); i++) {
                    View child = getChildAt(i);
                    child.getHitRect(hitRect);
                    if (hitRect.contains(x, y) && mIntercepatbleViews.contains(child)) return true;
                }
                return super.onInterceptTouchEvent(ev);
            } else return super.onInterceptTouchEvent(ev);
        }
    }


    в activity берем нужные вью и передаем их в метод addViewToIntercept(View)
    InterceptableConstraintLayout mLo = findViewById(R.id.fragment_phone_registration_profile_box);
            View mEt = findViewById(R.id.fragment_fio_input_surname_info);
            mLo.addViewToIntercept(mEt);
    
            mLo.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.e("mLo", "clicked");
                }
            });

    В результате клики на нужные вьюхи перехватываются.
    Добиться чего-то похожего через xml - я хз как. android:descendantFocusability="beforeDescendants" и clickable = true тоже не помогут.
    Ответ написан
    Комментировать
  • Стоит ли тщательно исправлять все ошибки(предупреждения) в Android Lint?

    @YuryBorodkin
    Android dev
    Максима: на линтер, встроенный в IDEA нужно обращаться внимание всегда. Он реально советует хорошие вещи.
    но, если твердо знаешь что делаешь и при этом сроки горят, можно проигнорить (увы, жизнь не совершенна).
    При работе в команде лучше деражть список предупреждений чистым, конечно если он бесогонит - сделать supress чего-то, но зато всегда будешь видеть чей-то говнокод при сборке.
    Ответ написан
    1 комментарий
  • Какие анимации смены Activity сейчас тренде?

    @YuryBorodkin
    Android dev
    самые популярные аппы юзают slide-from right slide-to-left и fade in-fade out, все без изысков
    Ответ написан
    2 комментария
  • Как удалить базу Sqlite из приложения, если решил отказаться от её использования?

    @YuryBorodkin
    Android dev
    ну да через shared prefs и делается обычно.
    Ответ написан
    Комментировать
  • Как сделать карточки с тенями без рисования PNG?

    @YuryBorodkin
    Android dev
    Много вариантов...просто - заюзать Cardview из design библиотеки гугла.
    Можно сделать градиент в xml
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle"
        >
        <gradient
            android:angle="90"
            android:endColor="#00000000"
            android:startColor="#90000000" />
    </shape>


    а вкунтактик скорее всего написалси собственную вьгруппу, где и рисуют тень на канвасе.
    Ответ написан
    Комментировать
  • Как обойти объект в цикле?

    @YuryBorodkin
    Android dev
    как товарищи выше сказали, Джава работает не так.
    Бойлерплейта много, да. Но как я понял тебе нужно описание обьекта - а его может сгенерировать IDE или либа-кодогенератор вроде project Lombok
    Ответ написан
    Комментировать
  • Как обработать нажатие на notification?

    @YuryBorodkin
    Android dev
    Хм, как минимум, есть 2 пути:
    1)быстрый. делаешь прозрачную активити, которую прямо в onCreate() и убиваешь, попутно отослав метрику.
    2)Сделать кастомную нотификацию, там помоему можно повесить слушаетля на кнопки.
    Ответ написан
    Комментировать
  • Как добавить рекламу в Android приложение?

    @YuryBorodkin
    Android dev
    Адмоб https://developers.google.com/admob/android/quick-start
    файрбэйз - https://firebase.google.com/docs/android/setup
    Оба сейчас гуглу принадлежат, у них интеграции есть. Можно внешний вид рекламы настроить,.
    Ответ написан
    1 комментарий
  • Что писать в отклике на вакансию "Мой круг"?

    @YuryBorodkin
    Android dev
    Мой круг - не место поиска места жуниором, типо приличное место для приличных господ.
    хх.ру - выбор больше, в том числе на начальные позиции. И да - поставить в резюме "джуниор" - это как насрать в штаны, все будут смотреть с жалостью и брезгливостью).
    Потренируйтесь, чтото напишите сами, повезет - пару меких заказов перехватите - а потом смело на мидла подавайтесь в мелкую конторку, там как раз требования на мидла как джуниора :).
    Ответ написан
    Комментировать
  • Как из веб сайта сделать мобильное приложение?

    @YuryBorodkin
    Android dev
    Обернуть не получиться никак, кроме как встроенным браузером.
    Можно попробовать react native - если знакомы с react, можно запилить сразу под обе платформы, но круто не получится - там с анимацией туго и кастомные/нестандартные элементы надо искать-самому писать.
    Круто только нативный для каждой платформы интструментарий.
    Ответ написан
    3 комментария
  • Как заблокировать Activity на время загрузки файлов?

    @YuryBorodkin
    Android dev
    можно использовать ProgressDialog - поставив setCancelable(false) в его билдере.
    или, что предпочтительнее, сделать кастомный DialogFragment, вызывав mDialog.setCancelable(false) в onCreateDialog()
    Ответ написан
  • Как правильно упаковать в ScrollView два RecycleView?

    @YuryBorodkin
    Android dev
    в ресайклерах сделай nestedSrollingEnabled = "false"
    и надо использовать для таких вещей NestedRecyclerView;
    Ответ написан
    Комментировать
  • Как делается кеширование в приложениях, типа, инстаграмма?

    @YuryBorodkin
    Android dev
    хм, ну от задачи зависит.
    я, обычно, храню гдето в структурах данных репозитория оперативную информация. Т.е. был запрос, подтянул данные, сохранил, отдал. Второй такой-же запрос - отдаю готовое, обновляю + отдаю снова.
    когда приложение умирает - чтото постоянное кидаю в sqlite.
    Впрочем, бывают случаи, если приложение-справочник - подтягиваю инфу сразу в бд. и прямо из нее отдаю данные, в нее скидваю же при запросе и отдаю, и все такое, использую как source-of-truth ). sqlite, если не перебарщивать с обертками и orm норм 300к записей держит на таблицу с миллисекундными задержками на запрос.
    А вообще, если нет конкретной бизнес-проблемы, данных немного и сервера быстрые заморачиваться особо не стоит, лишний код- лишние проблемы.
    Ответ написан
    Комментировать
  • Как определить тип девайса Android?

    @YuryBorodkin
    Android dev
    Достоверно - никак, с т.з ОС разницы нет.
    Ответ написан
    Комментировать
  • В чем проблема в android studio?

    @YuryBorodkin
    Android dev
    Перенеси выделенное в lifecycle-метод, например OnCreate(Bundle savedInstanceState) .
    Ответ написан
  • Какие возможности у React Native по создания анимаций?

    @YuryBorodkin
    Android dev
    С анимацией в рн плохо.
    она
    а)не нативно выглядит
    б)ограниченна
    с) медленная
    Все это можно решить написав нативные анимашки для платформы забиндить их как нативный модуль.
    Ответ написан