我的任务是在向用户显示某些片段时向他们显示一些屏幕帮助。具体来说,我想在ImageView上添加脉动式悬停(可绘制)以显示其可点击。
那么,什么是最优化的方式来做到这一点?特别是,如何检查用户是否是第一次访问该片段?
答案 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