안드로이드 스튜디오 이미지뷰 이미지 바꾸기

조회수 953회

setImageResource() 함수를 이용하면

logoImageViews[i].setImageResource(R.drawable.premierleague);

그런데 제가 원하는 거는 태그가 아니라 파일 명('xx.png')를 입력해서 바꾸는 건데 가능한가요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 파일명으로 접근하시려면 조금 복잡할 수도 있지만 setImageUri()를 이용하는 방법이 있습니다.

    형태는 "android:resource//패키지/drawable/파일 이름"으로 하시면 되는데요, 만약 패키지가 "com.example.package"이고 불러오실 파일 이름이 "premierleague.png"라고 하신다면 "android:resource//com.example.package/drawable/premierleague.png" 이렇게 쓰시면 됩니다.

    그런 다음 ImageView 클래스의 setImageUri() 메서드를 이용해서 만든 Uri 객체를 넘겨주시면 됩니다.

    Uri pathToImage = Uri.parse("android:resource//com.example.package/drawable/premierleague.png");
    
    // setImageUri()에 만든 Uri.parse()를 통해서 만든 Uri 객체를 넘겨주시면 됩니다.
    logoImageViews[i].setImageUri(pathToImage);
    

    이 방법 말고도 방법이 하나 더 있는데, 비용이 조금 비싸서 RecyclerView 같은 곳에서 사용하면 렉을 경험하실 수도 있습니다.

    Activity에서 getResources().getIdentifier()를 이용하는 방법인데요, 호출할 때 파일 이름, 리소스 타입, 패키지를 넘겨주시면 됩니다.

    int imageResourceId = getResources().getIdentifier("premierleague.png", "drawable", getPacakageName());
    // getPacakageName()으로 패키지 이름을 얻을 수도 있고, 아니면 직접 쓰셔도 상관 없습니다.
    
    logoImageViews[i].setImageResource(imageResourceId);
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)