我想在每次触摸事件时更改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,但问题仍然存在。
答案 0 :(得分:0)
您可以在设置第二个drawable之前使用以下内容执行此操作。
telephoneImageView.setImageResource(0);
我没有尝试过上述内容,但如果不起作用也请尝试:
telephoneImageView.setImageResource(android.R.color.transparent);
同时尝试将imageview指定为不可见,然后再将其设置为可见。这可能会触发重绘。您也可以尝试上述的组合,也可以尝试telephoneImageView.invalidate()。