Imagebutton缓慢变为按下状态

时间:2013-03-15 14:38:18

标签: android android-layout imagebutton android-image android-selector

我有一个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>

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

How can I make a Button more responsive?

这个链接提供了一些关于导致这种情况的线索,但是我没有成功地实现答案。

  

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

public boolean onTouchEvent (MotionEvent event) 
{
   if (event.getAction() == MotionEvent.ACTION_DOWN) 
   {
      setPressed(true);
   }
   return super.onTouchEvent(event);
}