Android Imageview正在以前的图像上绘制新图像

时间:2013-07-19 04:28:53

标签: android android-fragments drawable

我想在每次触摸事件时更改imageview上显示的图像。下面的代码实现了这一点。

public class TelephoneFragment extends Fragment {

ImageView telephoneImageView;

@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.telephone_fragment,
        container, false);
    telephoneImageView = (ImageView)view.findViewById(R.id.telephoneImageView);
    telephoneImageView.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN){
                telephoneImageView.setImageDrawable(getResources().getDrawable(R.drawable.telephone_clicked));
            }
            if(event.getAction() == MotionEvent.ACTION_UP){
                telephoneImageView.setImageDrawable(getResources().getDrawable(R.drawable.telephone));
            }
            return true;    
        }
    });
    return view;
  }

}

然而,当我改变手机的方向并尝试再次触摸图像时会出现问题,新图像将被绘制在上一张图像上,即前一张图像仍然在背景中可见。有人可以指导我发生了什么吗?感谢。

- 我尝试使用setImageResource()而不是setImageDrawable,但问题仍然存在。

1 个答案:

答案 0 :(得分:0)

您可以在设置第二个drawable之前使用以下内容执行此操作。

telephoneImageView.setImageResource(0);

我没有尝试过上述内容,但如果不起作用也请尝试:

telephoneImageView.setImageResource(android.R.color.transparent);

同时尝试将imageview指定为不可见,然后再将其设置为可见。这可能会触发重绘。您也可以尝试上述的组合,也可以尝试telephoneImageView.invalidate()。