安卓:视觉提示用户

时间:2019-01-30 22:17:28

标签: android animation kotlin

我的任务是在向用户显示某些片段时向他们显示一些屏幕帮助。具体来说,我想在ImageView上添加脉动式悬停(可绘制)以显示其可点击。

那么,什么是最优化的方式来做到这一点?特别是,如何检查用户是否是第一次访问该片段?

1 个答案:

答案 0 :(得分:0)

对于脉冲式提示,您可以尝试创建一个提示图标,将一个可绘制对象(要设置动画)放在提示下方,然后对其进行动画处理。所以像这样的事情会起作用:

使用两个ImageView创建布局

<?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,这意味着他曾经去过那里。

您可以使用此answer as an inspiration