안드로이드 개발 질문/답변
(글 수 45,052)
invalidate()라는 메소드가 뷰를 invalid시켜서 강제로 다시 그리는 걸로 알고 있습니다.
제가 지금 노트패드를 보면서 디비에 접근해서 디비의 내용을 update()를 통해 새로 갱신하려고 하는데요....
update()를 실행해도 화면에 바뀐 내용이 바로 보이는 것이 아니라 finish()를 하고 다시 불러왔을때..
그때 갱신이 되내요..아무래도 엑티비티가 디스트로이 될때 갱신되는건 아닐까 생각합니다만...
그렇다면 엑티비티를 강제적으로 디스트로이시키고 다시 그리게 하는 방법이 있을까요??
이게 아니라면 마치 엑티비티가 종료되었다고 속이고 화면을 다시 그리게 할수는 없을지요??
도와주세요...답답합니다...가능할꺼 같은데 길이 보이질 않내요..
제가 지금 노트패드를 보면서 디비에 접근해서 디비의 내용을 update()를 통해 새로 갱신하려고 하는데요....
update()를 실행해도 화면에 바뀐 내용이 바로 보이는 것이 아니라 finish()를 하고 다시 불러왔을때..
그때 갱신이 되내요..아무래도 엑티비티가 디스트로이 될때 갱신되는건 아닐까 생각합니다만...
그렇다면 엑티비티를 강제적으로 디스트로이시키고 다시 그리게 하는 방법이 있을까요??
이게 아니라면 마치 엑티비티가 종료되었다고 속이고 화면을 다시 그리게 할수는 없을지요??
도와주세요...답답합니다...가능할꺼 같은데 길이 보이질 않내요..
2009.06.11 00:13:58
invalidate는 화면에 표시되는 View를 새로 그리도록 하는 것인데. invalidate이전에 View의 내용자체가 바뀌어있어야 하는데요. 말씀하신 update는 단순히 Database에 반영되는거고 해당 View의 내용이 바뀌지는 않습니다. 아마도 update후에 View의 컨텐츠를 다시 설정해주는 부분이 필요한데 그 부분을 빠뜨리신듯 합니다. 예를 들어 TextView라면 setText를 다시 해준다던가 하는 작업이 필요한 것인데 말이지요. Cursor를 사용하는 거라면 requery를 해줘야 할수도 있구요.
2011.01.12 15:59:29
회색님 도움좀 부탁드려요^ㅡ^
button03.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int count = 0;
count++;
height += height / 10;
width += width / 10;
iv[ppp].setMaxHeight(height);
iv[ppp].setMaxWidth(width);
matrix.postScale(1.1f, 1.1f);
iv[ppp].setImageMatrix(matrix);
v.invalidate();
}
});
이건 이미지를 확대하는 소스입니다.
그런데 확대된 이미지가 바로 확대된 것으로 보이지 않고 이미지를 한번 움직여야 화면이 갱신되는데요
확대 버튼을 누른 즉시 이미지가 갱신되는 방법이 없을까요?