Please Enable JavaScript!
Gon[ Enable JavaScript ]

(1) 안드로이드 (android) 의 ImageView 레이아웃에 대한 사용법

안드로이드 개발

(1) 안드로이드 (android) 의 ImageView 레이아웃에 대한 사용법 


ImageView
는 이미지를 표현하는 레이아웃이다.

아래의 전체 예제는 리소스에 대한 정보를 가져와 ImageView 레이아웃에 표현하는 것이다.

예제의 소스처럼 ImageView setImageResource 함수를 사용해서 리소스 데이터를

바로 넣을수도 있겠지만 보통 입맛에 맞게 크기를 조절한다던지 용량을 줄이는 등의

작업을 진행한후 사용한다.

이때는 리소스 데이터를 Bitmap 데이터로 변환한후 크기를 조작한다던지 용량을 줄이는

작업후 사용하면 된다. Bitmap 데이터의 크기를 조절한후 setImageBitmap 함수의

파라미터로 이미지를 넣어 셋팅한 예제이다.


ImageView iv = new ImageView(this);
Bitmap orgImage = BitmapFactory.decodeResource(getResources(), R.drawable.news);
Bitmap resize = Bitmap.createScaledBitmap(orgImage, 300, 400, true);
iv.setImageBitmap(resize);

위의 예제는 리소스에 있는 그림을 가져와 셋팅한 것인데 SDCARD 에서 이미지를 가져와

셋팅을 할수도 있다. 먼저 에뮬레이터를 사용한다면 SDCARD 이미지에 그림을 복사해 넣고

decodeFile 함수를 호출해준다. 첫번째 파라미터로는 파일이 있는 주소가 들어가고 두번째

파라미터에는 BitmapFactory.Options 의 옵션값이 들어간다. 어떤 형태로 로딩할것인지

정해주는것이다.
ImageView iv = new ImageView(this);
BitmapFactory.Options bo = new BitmapFactory.Options();
bo.inSampleSize = 8;
Bitmap bmp = BitmapFactory.decodeFile(thumbsDataList.get(position), bo);
iv.setImageBitmap(bmp);

XML 을 사용하지 않고 순수하게 소스내에서 레이아웃 객체를 생성해 화면을 표현한

전체 예제이다. 소스에서 LinearLayout 는 최상위 레이아웃이고 여기에 ImageView

객체를 생성해서 넣은것이다. mLinearLayout.addView(iv); 같다.

그리고 LayoutParams.FILL_PARENT XML 에서 layout_width="fill_parent"

동일한 표현으로 상위 레이아웃의 크기에 맞게 채운다는 말이다.


import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class Main extends Activity {
	
	private LinearLayout mLinearLayout;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ImageView 를 추가하기 위한 LinearLayout 생성
        mLinearLayout = new LinearLayout(this);
        
        // ImageView 객체 생성
        ImageView iv = new ImageView(this);
        iv.setImageResource(R.drawable.test01);
        iv.setAdjustViewBounds(true);
        iv.setLayoutParams(new Gallery.LayoutParams(
        		LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        iv.setScaleType(ImageView.ScaleType.FIT_XY); // 레이아웃 크기에 이미지를 맞춘다
        
        mLinearLayout.addView(iv);
        setContentView(mLinearLayout);
    }
}

Posted by 녹두장군

댓글을 달아 주세요

  1. 유석 2010.06.09 14:24  댓글주소  수정/삭제  댓글쓰기

    뷰나 레이아웃을 xml 에서 정의하지 않고 코드로도 이런식으로 활용가능하군요

    감사합니다

  2. 임동환 2011.09.01 11:59  댓글주소  수정/삭제  댓글쓰기

    정말 잘 정리해 주셨네요 ^^

    저 궁금한게 하나 있는데 , 애니메이션을 적용하려면, xml file로 애니메이션을 정의해놨는데 어떻게 끌어와서 쓰나요..??

    여기저기서 image View에 대해 공부하고있는데, 이것에 대해선 많ㅇ ㅣ없는거 같아서요 ㅠ

  3. 배윤기 2012.09.15 14:51  댓글주소  수정/삭제  댓글쓰기

    많은 참고가 되었습니다 감사합니다~

  4. 김영우 2018.09.30 21:56  댓글주소  수정/삭제  댓글쓰기

    2주동안 이런 코드를 찾아다녔는데 여기서 발견하네요 진심으로 감사합니다ㅠㅠ