📅  最后修改于: 2023-12-03 15:23:22.013000             🧑  作者: Mango
在Android界面设计中,显示图像按钮是常见的UI设计。图像按钮通常是由一个Imageview和一个Button组成。当用户触摸此按钮时,通常会触发一个单击效果,以提示用户此按钮已按下。本文将介绍如何在Android中实现图像按钮的单击效果。
要实现图像按钮单击效果,可以使用StateListDrawable类。StateList可以定义View Widget在不同状态下的外观和行为。该类包含一个或多个StateDrawable,每个StateDrawable由于对应一种状态,比如:按下、选中或未选中,以及对应的Drawable对象。根据View的状态,系统会自动从StateList中调取对应的Drawable对象进行显示。
StateListDrawable常见的状态集合有5种:
一个典型的StateListDrawable如下所示,其中listSelector作为listView背景时用到,即选择某项时的样式:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_selected"/>
<item android:drawable="@drawable/btn_normal"/>
</selector>
在图像按钮中,可以先定义一个Drawable类型的selector xml文件,具体代码如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--按钮按下状态 -->
<item android:state_pressed="true" android:drawable="@drawable/btn_pressed" />
<!--按钮默认状态-->
<item android:drawable="@drawable/btn_normal" />
</selector>
其中btn_pressed为按下状态下的Drawable对象,btn_normal为按钮默认状态下的Drawable对象。
接下来,在Imageview中设置StateListDrawable:
<ImageView
android:id="@+id/imgBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_btn_selector"
android:clickable="true"
android:src="@drawable/btn_bg"
/>
设置background为上述selector xml文件,即可在Imageview上实现单击效果。
在Java代码中实现Button的单击效果,需要为Imageview设置事件监听器,当监听到按下事件时,改变Imageview的背景,以实现按下效果。当监听到抬起事件时,回复默认背景。
ImageView imgBtn = findViewById(R.id.imgBtn);
imgBtn.setClickable(true);
imgBtn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setBackgroundResource(R.drawable.img_btn_pressed);
break;
case MotionEvent.ACTION_UP:
v.setBackgroundResource(R.drawable.img_btn_normal);
break;
}
return false;
}
});
以上代码中setImageResource()函数用于更换Imageview的背景资源。
以上就是在Android中实现图像按钮的单击效果的方法。通过StateListDrawable类配合ImageView实现按下效果,或通过Java代码设置监听器改变Imageview的背景资源,均可以实现图像按钮的单击效果。