3

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

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,但问题仍然存在。

4

1 回答 1

0

在设置第二个可绘制对象之前,您可以使用以下方法执行此操作。

telephoneImageView.setImageResource(0);

我没有尝试上述方法,但如果它不起作用,请尝试:

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

还可以尝试将 imageview 指定为不可见,然后再次将其设置回可见。这可能会触发重绘。您也可以尝试以上方法的组合,也可以尝试 phoneImageView.invalidate()。

于 2013-07-19T04:40:45.760 回答