제목 그대로 xml 파일에서 지정한 백그라운드 이미지 파일명을 자바 코드에서 어떻게 얻나요?
로그인한 사람의 권한에 따라 백그라운드 이미지를 동적으로 변경해주려고 하는데...
지금 코드를 기본 베이스로 깔리는 이미지(xml에 설정된)를 매개변수로 넘겨주고 로그인한 사람의 권한에 따라 그 파일명 앞에
특정한 문자열을 붙여허 리턴 시켜주는 메소드를 만들어 놓았습니다.
문제는...
현재 방법이 2가지가 있는데 매개변수를 그냥 각 레이아웃마다 백그라운드로 지정된 이미지 파일명을 하드코딩으로 넘겨주느냐...
아니면 제가 질문한 xml에서 설정해 놓은 이미지 파일명을 얻어와 그걸 넘겨주느냐 인데...
이미지 파일 명을 얻어오면 각 레이아웃마다 다 다른 코드가 아닌 전부 동일한 코드로 코딩이 가능하고
추후 이미지 파일명이 변경되더라도 코드는 변경 안해줘도 될것 같아서... 후자가 낫다고 생각이 되는데...
더 괜찮은 방법 있나요?
일단, 질문의 요지는 xml 파일에서 설정해 놓은 백그라운드 이미지 파일명을 자바코드에서 어떻게 받아올수 있나요?
LinearLayout형으로 객체 생성하고 '객체명.getBackground' 해봤는데 반환값이 Drawable형이었나? 암튼 그러네요 ㅠㅠ
아... 그리고 제가 자바를 공부해본 적 없이 바로 개발 투입되서... 자바를 소설책 읽듯이 이틀정도에 걸쳐서 그냥 훑어본게다라...
멍청한 저를 위해 설명좀 자세히 해주시면 감사하겠습니다;;
자문자답
http://www.androidpub.com/1546524
아직 해보진 않았지만 요로코롬 하면 될 것 같네요
아닌것 같음...
파싱 성공했다는 글말 있고 코드는 없음...
파싱하는 메소드를 만들어야 되는건가...
기본적으로 캔버스에 그려주는 객체가 drawable이다 보니 배경이미지 같은것도 Drawable로 줘야 합니다.
리소스 id로 주는 애들은 내부에서 알아서 drawable로 바꾸는겁니다.
파일명으로 하고 싶으시다면 xml에서는 불가능하구요
소스상에서 파일명을 이용해서 bitmap을 만들고
bitmap으로 BitmapDrawable을 만든다음 setBackground 하시면 됩니다.
지금 원래 코드가 백그라운드가 전부 xml에서 정의되어 있고 이걸 이제 로그인한 ID 권한에 따라 이미지 변경을 해줘야 되서
xml에서 세팅해준 백그라운드 이미지 파일명을 얻어와서 그 파일명 앞에 권한에 따라 특정한 문자열을 붙여줘서 그 이미지로 바꿔 주려고 했는데
그건 좀 힘든가 보네요... 이미지 파일명이 변경되게 되더라도 코드는 여러군데 수정 안하고 파일명하고 xml만 수정 하려고 하는데...
그럼 xml에서 백그라운드 지정해 주는 부분을 전부 OnCreate에서 해줘서 xml을 수정 안하고 OnCreate를 수정하는 식으로 하던지 해야겠네요
지금 상태에서 소스상에서 수정하면 이미지 파일명이 변경되게 되면 xml도 다 수정해줘야 되고 추가한 코드에 이미지 파일명도 다 수정해 줘야되서...
흠... 그냥 하드코딩으로 박아야겠네요;;
답변 감사합니다.
뭘 원하시는지 정확히 이해는 안되지만... 대충
xml
android:id="@+id/f"
android:src="@drawable/file1"
android:tag="file1"
java
String prefix = "pre_";
ImageView v = (ImageView) findViewById(R.id.f);
int res = getResources().getIdentifier(prefix + v.getTag(), "drawable", getPackageName());
v.setImageResource(res);
이런식으로는 안될런지 ㅋㅋ;




setBackground는 결국엔 drawable이나 bitmap으로 set해주는 형태라 get으로 파일명을 가져올수는 없을 것 같네요..
getBackgroundFileName식의 메소드를 따로 만드셔서
setbackground메소드도 함께 만들어서 set할 때에 파일이름을 string변수나 프리퍼런스로 기억을 하고 있다가,
getBackgroundFileName호출 하면 앞서 기억하고있던 값을 가지고오는 식으로 밖에 못 할 것같네요..