3

我有一个 ImageButton 并且我已经为它制作了一个选择器,所以当我按下 imagebutton 时,会显示另一个图像。但是当按下图像按钮时,似乎必须等待 1 秒才能更改图像。这对用户体验真的不好。。

有没有可能解决这个问题?我已经查找了一些答案,但我现在不知道在哪里更改它。

这是我的代码

选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:state_pressed="true"
    android:state_enabled="true"
    android:drawable="@drawable/main_pressed" />
<item
    android:state_enabled="true"
    android:drawable="@drawable/main" />
</selector>

布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/bg" >

    <ImageButton
          android:id="@+id/mainMosque"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_centerInParent="true"
          android:background="@null"
          android:contentDescription="@string/mainMosque"
          android:src="@drawable/main_btn_mosque" />

</RelativeLayout>
4

3 回答 3

0

我不确定这是否会解决问题,因为这对我来说确实是新问题。但是您可以尝试以下方法

<ImageButton
      android:id="@+id/mainMosque"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:background="@drawable/main_btn_mosque"
      android:contentDescription="@string/mainMosque"/>

和 main_btn_mosque

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">    
<item
    android:state_pressed="true"
    android:drawable="@drawable/main_pressed" />
<item
    android:drawable="@drawable/main" />
</selector>

selector它只是一个优化,默认情况下它是启用的。

现在如果问题仍然存在。再尝试一件事。代替ImageButton使用Button

于 2013-03-15T15:16:18.157 回答
0

您可以使用 ImageView 代替 ImageButton,并使用 Glide 库将图像加载到视图中,这将提高应用程序的性能,您可以在此处阅读更多信息:https ://github.com/bumptech/glide 希望这可行为你!

于 2017-05-03T14:23:31.650 回答
-1

如何使按钮响应更快?

此链接提供了一些线索,说明导致此问题的原因,但是我没有成功实施答案。

嗯...我通常扩展 Button 类并覆盖 onTouchEvent 方法

public boolean onTouchEvent (MotionEvent event) 
{
   if (event.getAction() == MotionEvent.ACTION_DOWN) 
   {
      setPressed(true);
   }
   return super.onTouchEvent(event);
}
于 2015-01-26T16:21:17.437 回答