Android: визуальные подсказки для пользователя - PullRequest
0 голосов
/ 31 января 2019

Моя задача - показать некоторую экранную справку для пользователей, когда им отображается определенный фрагмент.В частности, я хочу добавить пульсирующее наведение (рисование) поверх ImageView, чтобы показать, что оно кликабельно.

Так какой же самый оптимальный способ сделать это?И, в частности, как проверить, впервые ли пользователь посетил фрагмент?

1 Ответ

0 голосов
/ 31 января 2019

Для пульсирующей подсказки вы можете попытаться создать иконку подсказки, поместите отрисовку (которую вы хотите анимировать) под подсказкой, а затем просто оживите ее.Так что-то вроде этого будет работать:

Создайте макет с двумя ImageViews

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/pulse"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/grad_pulse"
        android:layout_centerInParent="true"/>

    <ImageView
        android:id="@+id/hint"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_info"
        android:layout_centerInParent="true"/>

</RelativeLayout>

Создайте нужную анимацию (например, импульс):

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="2"
    android:repeatMode="reverse"
    android:toXScale="0.5"
    android:toYScale="0.5" />

И затем подключите всеоб этом в MainActivity.kt

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        animate()
    }

    private fun animate() {
        val pulse = findViewById<ImageView>(R.id.pulse)
        val anim = AnimationUtils.loadAnimation(this, R.anim.pulse)
        anim.repeatCount = Animation.INFINITE
        pulse.startAnimation(anim)
    }

}

Если вы хотите, чтобы пульсировало только само изображение, вы можете просто использовать один ImageView и масштабировать сам значок.

как проверить, еслиэто первый раз, когда пользователь посетил фрагмент?

Вы можете использовать SharedPreferences.Создайте пару ключ / значение, для которой по умолчанию будет установлено значение false.Если это неверно, вы знаете, что это первый раз, когда пользователь открыл ваше приложение.Если это так, просто измените значение на true - в следующий раз, когда пользователь введет ваш фрагмент, значение будет установлено в true, что означает, что он был там раньше.

Вы можете использовать этот ответ каквдохновение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...