developer tip

Android에서 프로그래밍 방식으로 ImageView의 이미지 변경

copycodes 2020. 8. 29. 11:23
반응형

Android에서 프로그래밍 방식으로 ImageView의 이미지 변경


프로그래밍 방식으로 이미지를 변경하면 원래 레이아웃 파일에 설정된 이전 이미지 위에 새 이미지가 표시됩니까?

다음은 내 레이아웃 파일의 일부입니다.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="39dp"
    android:gravity="center_vertical" >
    <ImageView
        android:id="@+id/qStatusImage"
        android:layout_width="16dp"
        android:layout_height="16dp"
        android:layout_margin="5dp"
        android:background="@drawable/thumbs_down"
         />

    <TextView
        android:id="@+id/grp_child"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:textColor="@color/radio_colors"
        android:textStyle="normal"
        android:background="@color/grey"
    />

 </LinearLayout>

그리고 imageView를 설정하는 코드 :

     @Override
public View getChildView(final int groupPosition, final int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {
//Answers
            if(answersGroup != null)
                   answersGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                       @Override
                    public void onCheckedChanged(RadioGroup group, int checkedId) {

                         //  int index = answersGroup.indexOfChild(findViewById(answersGroup.getCheckedRadioButtonId()));

                           qImageView = (ImageView) V.findViewById(R.id.qStatusImage);
                           if(ans ==0 || ans == 5){
                            //   qSV.setImageResource(0);
                               qImageView.setImageResource(R.drawable.thumbs_up);
                           }
                           else
                               qImageView.setImageResource(R.drawable.thumbs_down);

                       }
                   });

내가 무엇을 놓치고 있습니까?


ImageView배경 대신 src를 설정하기 때문에 발생 합니다.

대신 사용 :

qImageView.setBackgroundResource(R.drawable.thumbs_down);

다음 은 두 방법의 차이점에 대해 설명하는 스레드입니다.


XML에서 사용 :

android:src="@drawable/image"

소스 사용 :

imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image));

짧은 답변

이미지를 res/drawable폴더에 복사하고

imageView.setImageResource(R.drawable.my_image);

세부

다양한 답변으로 인해 약간의 혼란이 발생할 수 있습니다. 우리는

Background이름에 있는 메서드는 모두 구체적이 View아니라 클래스에 속합니다 ImageView. 그러나 ImageView상속 이후에도 View사용할 수 있습니다. Image이름에 있는 메서드 는 특히에 속합니다 ImageView.

View(하지만 방법은 모두 서로 같은 일을 할 setBackgroundDrawable()되지 않습니다) 우리가에 초점을 맞출 것이다, 그래서 setBackgroundResource(). 마찬가지로 ImageView메서드는 모두 동일한 작업을 수행하므로 setImageResource(). 메소드 간의 유일한 차이점은 전달하는 매개 변수 유형입니다.

설정

여기입니다 FrameLayout을 포함하는 ImageView. ImageView처음에에 모든 이미지가 없습니다. (나는 FrameLayout그 주위에 테두리를 놓을 수 있도록를 추가했습니다. 이렇게하면의 가장자리를 볼 수 있습니다 ImageView.)

여기에 이미지 설명 입력

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:background="@drawable/border"
        android:layout_centerInParent="true">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </FrameLayout>
</RelativeLayout>

아래에서 우리는 다른 방법을 비교할 것입니다.

setImageResource ()

ImageView의를 사용 setImageResource()하면 이미지가 종횡비를 유지하고 크기가 조정됩니다. 다음은 두 가지 다른 이미지 예입니다.

  • imageView.setImageResource(R.drawable.sky);
  • imageView.setImageResource(R.drawable.balloons);

여기에 이미지 설명 입력

setBackgroundResource ()

setBackgroundResource()반면에 View의를 사용 하면 이미지 리소스가 뷰를 채우기 위해 늘어납니다.

  • imageView.setBackgroundResource(R.drawable.sky);
  • imageView.setBackgroundResource(R.drawable.balloons);

여기에 이미지 설명 입력

양자 모두

View의 배경 이미지와 ImageView의 이미지는 별도로 그려 지므로 둘 다 설정할 수 있습니다.

imageView.setBackgroundResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);

여기에 이미지 설명 입력


qImageView.setImageResource(R.drawable.img2);

나는 이것이 당신을 도울 것이라고 생각합니다


이미지보기에 대한 XML에서 android:background="@drawable/thumbs_down이를 다음으로 변경했습니다.android:src="@drawable/thumbs_down"

현재는 그 이미지를 실제 이미지가 아닌보기의 배경으로 배치하고 있습니다.


XML 디자인에서

android:background="@drawable/imagename 
android:src="@drawable/imagename"

코드를 통한 드로어 블 이미지

imageview.setImageResource(R.drawable.imagename);

서버 이미지

  ## Dependency ##

  implementation 'com.github.bumptech.glide:glide:4.7.1'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'

  Glide.with(context).load(url) .placeholder(R.drawable.image)
   .into(imageView);

 ## dependency  ##
 implementation 'com.squareup.picasso:picasso:2.71828'

 Picasso.with(context).load(url) .placeholder(R.drawable.image)
 .into(imageView);

당신이 사용할 수있는

val drawableCompat = ContextCompat.getDrawable(context, R.drawable.ic_emoticon_happy)

또는 자바 자바

Drawable drawableCompat = ContextCompat.getDrawable(getContext(), R.drawable.ic_emoticon_happy)

참고 URL : https://stackoverflow.com/questions/16906528/change-image-of-imageview-programmatically-in-android

반응형