单个图像按钮用作启动 - 停止 - 启动

时间:2013-04-17 05:36:02

标签: java android imagebutton

在我的android项目中,我拍摄了2个图像按钮(开始和停止)。 当我按下START IMAGE BUTTON然后它再次转换为STOP IMAGE BUTTON但是当我按下STOP IMAGE BUTTON时它没有转换为START BUTTON.so让我知道问题出在哪里。

  mImageButton.setOnFocusChangeListener(
  new OnFocusChangeListener()
  {
  @Override
  public void onFocusChange(View v, boolean hasFocus) {
  // TODO Auto-generated method stub
  if (hasFocus==true)
  {
      mImageButton.setImageResource(R.drawable.stop);
  }
 else
 {
  mImageButton.setImageResource(R.drawable.play);
 }
  }
 });

 mImageButton.setOnClickListener(
 new OnClickListener() {
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 mImageButton.setImageResource(R.drawable.stop);
   }
   });     
 }
}

5 个答案:

答案 0 :(得分:1)

onFocusChange之前调用Android onCLick。无论您在onFocusChange方法中设置的是什么,都会被忽略,因为onClick将会被调用,然后它会将图片bak更改为R.drawable.stop

你根本不应该使用onFocusChange来做你想做的事情。只使用onClick。

private boolean pCurrentlyPlaying = false;

...

mImageButton.setOnClickListener(
    new OnClickListener() {
       @Override
       public void onClick(View v) 
       {
           int image = pCurrentlyPlaying ? R.drawable.stop : R.drawable.play;
           mImageButton.setImageResource(image);
           pCurrentlyPlaying = !pCurrentlyPlaying ;
       }
    });    

您还可以使用ToggleButton,here is an example如何在XML中定义它。

答案 1 :(得分:0)

您正在切换onFocusChangeListener而不是onClickListener中的按钮图像。 ToggleButton似乎适合您所描述的情景。

答案 2 :(得分:0)

正确的方法是使用选择器

在drawable

中创建以下ImgBtnSelector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
     android:state_pressed="true"
     android:drawable="@drawable/custom_info_bubble1" />
    <item 
     android:state_pressed="false"
     android:drawable="@drawable/custom_info_bubble" />
</selector>

在我们的布局中,xml将图像按钮背景设置为此选择器。

这里有一个关于选择器的link

答案 3 :(得分:0)

尝试此代码..可以帮助您。

 boolean isStart = true ;
 boolean isStop = false;
 mImageButton.setOnClickListener(
 new OnClickListener() {
 @Override
 public void onClick(View v) {
// TODO Auto-generated method stub
 if(isStart){
 isStart =false ;
 isStop = true ;
 mImageButton.setImageResource(R.drawable.play);
 }else{
 isStart = true ;
isStop = false;
mImageButton.setImageResource(R.drawable.stop);
 }
}
});     
}
}

答案 4 :(得分:0)

Boolean isStart=true;//This is global

mImageButton.setOnClickListener(
 new OnClickListener() {
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
if(isStart)
 mImageButton.setImageResource(R.drawable.stop);
else
 mImageButton.setImageResource(R.drawable.start);

isStart=!isStart;
   }
   });     
 }
}

这是你需要松开onfocusChanged部分