Ответы пользователя по тегу Android Studio
  • Как сделать кнопки произвольной формы на Android?

    @YuryBorodkin
    Android dev
    Если ты хочешь иметь какие-то сегменты с разными обработчиками на клик, ну или на вид одна кнопка, а по факту там пять зон с разными обработчиками, это делается через viewgroup, т.е кнопки накладываются друга на друга или как-то еще сочетаются.
    В твоем случаем можно сделать что-то вроде
    код лэйаута, тебе нужно что в FrameLayout
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.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"
        tools:context=".MainActivity">
    
        <FrameLayout
            android:layout_width="80dp"
            android:layout_height="80dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
            <Button
                android:id="@+id/top_left"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_gravity="top|start"
                android:background="@drawable/rect_black_stroke_40dp" />
    
            <Button
                android:id="@+id/top_right"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_gravity="top|end"
                android:background="@drawable/rect_black_stroke_40dp" />
    
            <Button
                android:id="@+id/bottom_left"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_gravity="bottom|start"
                android:background="@drawable/rect_black_stroke_40dp" />
    
            <Button
                android:id="@+id/bottom_right"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_gravity="bottom|end"
                android:background="@drawable/rect_black_stroke_40dp" />
    
            <Button
                android:id="@+id/center"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_gravity="center"
                android:background="@drawable/circle_black_stroke_40dp" />
        </FrameLayout>
    
    </androidx.constraintlayout.widget.ConstraintLayout>


    circle_black_stroke_40dp
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <size
            android:width="40dp"
            android:height="40dp" />
        <stroke
            android:width="1dp"
            android:color="#000" />
    </shape>

    rect_black_stoke_40dp
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <size
            android:width="40dp"
            android:height="40dp" />
        <stroke
            android:width="1dp"
            android:color="#000" />
    </shape>

    Потом ставишь обработчики на id частей кнопки и готово. Можно один на все части (ну или сразу на весь FrameLayout) тогда будет на тап по любой части одна реакции. Либо, на каждый сегмент свой обработчик.
    Ответ написан
  • Как поменять зависимости в build.gradle?

    @YuryBorodkin
    Android dev
    Это `selling point` градла вообще, способность просто прописать зависимости и все заведется. Но - градлу нужно иметь репозиторий, в котором эта зависимости будет находится.
    В дефолтной структуре проекта, созданного студией, в рутовом проекте, в `build.gradle` надо не забыть прописать
    allprojects {
        repositories {
            google()
            jcenter()
    //other repositories
        }
    }

    т.к либы джетпака все в `google()` репозитории.
    Ответ написан
    Комментировать
  • Как выполнить такую верстку в 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>
    Ответ написан
    Комментировать
  • В чем проблема в android studio?

    @YuryBorodkin
    Android dev
    Перенеси выделенное в lifecycle-метод, например OnCreate(Bundle savedInstanceState) .
    Ответ написан
  • Можно ли настроить автоматическое копирование готового apk в произвольную папку?

    @YuryBorodkin
    Android dev
    ну, градлом точно можно копировать апк/аар готовые в нужную папку, на как-то так
    Ответ написан