2013-07-19 2 views
3

모든 터치 이벤트에서 이미지 뷰에 표시되는 이미지를 변경하고 싶습니다. 아래의 코드는이를 수행합니다. 내가 전화의 방향을 변경하고 새 이미지가 이전 이미지 위에 그려진 이미지를 다시 접촉 할 때 그러나 그 생각에 문제가 있습니다Android 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; 
    } 

}는, 그 이전의 이미지입니다 백그라운드에서 계속 표시됩니다. 어떤 일이 일어나고 있는지 누군가가 안내해 줄 수 있습니까? 감사.

- setImageDrawable 대신 setImageResource()를 사용해 보았지만 문제가 지속됩니다.

+0

u가 setImageBitmap을 시도해 보았습니다. –

+0

그래, 시도해 보겠습니다. – nave

+0

setImageBitMap도 같은 문제를 발생 시켰습니다. – nave

답변

0

두 번째 드로어 블을 설정하기 전에 다음을 수행 할 수 있습니다.

telephoneImageView.setImageResource(0); 

나는 위를했지만, 그것은 또한 작동하지 않을 경우 시도하지 않은 :

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

또한 다음 다시 가시로 설정의 이미지 뷰가 같은 눈에 보이지 않는 지정하려고합니다. 이로 인해 다시 그리기가 트리거 될 수 있습니다. 또한 위의 조합을 시도해보고 telephoneImageView.invalidate()를 시도해 볼 수도 있습니다.

+0

안타깝게도 둘 다 작동하지 않습니다. 방향이 바뀌면 이전 이미지가 어떻게 든 화면에 고정됩니다. – nave

+0

ImageView가 성능상의 이유로 캔버스를 지우지 않는 경우가 있습니다. 그래서 시도하고 찾아야 할 것은 다시 그리도록 강요하는 방법입니다. 위와 telephoneImageView.invalidate()의 조합 일 수도 있습니다. 나 자신을 시도하지 않고 잘 모르겠다. 희망이 도움이됩니다. –

+0

괜찮아요, 고마워요. ..android : configChanges = "orientation | screenSize"트릭을 한 것으로 보입니다 ... 왜 나는 잘 모르겠지만 해킹과 같은 느낌입니다 ... – nave

관련 문제