|
안드로이드(Android) HorizontalScrollView 이용해 이미지 갤러리 만들기 – 2부 |
|
개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2 |
이번 갤러리는 리소스에서 이미지를 가져오는 것이
아니라 sdcard 에서 불러와 갤러리를 만듭니다.
HorizontalScrollView 에 View 를 추가하여
갤러리를 만들기 위해 먼저 테스트할 이미지를
추가합니다.
File Explorer 창으로 가서 Push a file 아이콘을
클릭해 이미지 파일일 넣습니다. 폴더는 Pictures 가
됩니다.
이미지를 표현하기 위해 LinearLayout 을 생성하고
LinearLayout.HORIZONTAL 옵션으로 가로 배치
합니다.
mBtnLayout = new LinearLayout(context); /** 가로로 자식들을 배치 함 */ mBtnLayout.setOrientation(LinearLayout.HORIZONTAL);
다음은 SDCARD 에 넣은 이미지를 불러오기
위해 함수를 만들었습니다.
Environment.getExternalStorageDirectory().getPath() 는
SDCARD 주소를 가져오며 Pictures 폴더명과
합쳐 주소를 완성합니다.
f.listFiles 함수로 파일리스트를 불러옵니다.
불러온 파일들의 Path 값을 얻어
List<String> imgListPath; 변수에 저장합니다.
// SDCARD 에 이미지를 가져옵니다.
private void ReadSDCard() {
List tFileList = new ArrayList();
File f = new File(
Environment.getExternalStorageDirectory().getPath()
+ "/Pictures/");
File[] files = f.listFiles();
for (int i = 0; i < files.length; i++) {
File file = files[i];
tFileList.add(file.getPath());
}
imgListPath = tFileList;
}
SDCARD 에서 이미지를 불러온뒤 BitmapFactory.decodeFile
를 이용해 Bitmap 객체를 만듭니다. 이렇게 만든 Bitmap
객체를 i.setImageBitmap(bm); 로 이용해 이미지를
셋팅합니다.
레이아웃에 이미지갯수 만큼 addView 를 한뒤
HorizontalScrollView 에 추가합니다.
public HorizentalScrollViewMainView(Context context) {
super(context);
mBtnLayout = new LinearLayout(context);
/** 가로로 자식들을 배치 함 */
mBtnLayout.setOrientation(LinearLayout.HORIZONTAL);
this.ReadSDCard();
/** 이미지 추가 */
for (int cnt = 0; cnt < imgListPath.size(); cnt++) {
Bitmap bm = BitmapFactory.decodeFile(
imgListPath.get(cnt).toString());
ImageView i = new ImageView(context);
i.setImageBitmap(bm);
i.setLayoutParams(new LayoutParams(150, 100));
i.setScaleType(ImageView.ScaleType.FIT_XY);
mBtnLayout.addView(i);
}
mHorizentalScrollView = new HorizontalScrollView(context);
mHorizentalScrollView.addView(mBtnLayout);
addView(mHorizentalScrollView);
}
전체 Activity 소스는 다음과 같습니다.
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class SampleActivity3 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new HorizentalScrollViewMainView(this));
}
private class HorizentalScrollViewMainView extends LinearLayout {
public HorizontalScrollView mHorizentalScrollView;
public LinearLayout mBtnLayout;
private List<String> imgListPath;
public HorizentalScrollViewMainView(Context context) {
super(context);
mBtnLayout = new LinearLayout(context);
/** 가로로 자식들을 배치 함 */
mBtnLayout.setOrientation(LinearLayout.HORIZONTAL);
this.ReadSDCard();
/** 이미지 추가 */
for (int cnt = 0; cnt < imgListPath.size(); cnt++) {
Bitmap bm = BitmapFactory.decodeFile(
imgListPath.get(cnt).toString());
ImageView i = new ImageView(context);
i.setImageBitmap(bm);
i.setLayoutParams(new LayoutParams(150, 100));
i.setScaleType(ImageView.ScaleType.FIT_XY);
mBtnLayout.addView(i);
}
mHorizentalScrollView = new HorizontalScrollView(context);
mHorizentalScrollView.addView(mBtnLayout);
addView(mHorizentalScrollView);
}
// SDCARD 에 이미지를 가져옵니다.
private void ReadSDCard() {
List<String> tFileList = new ArrayList<String>();
File f = new File(
Environment.getExternalStorageDirectory().getPath()
+ "/Pictures/");
File[] files = f.listFiles();
for (int i = 0; i < files.length; i++) {
File file = files[i];
tFileList.add(file.getPath());
}
imgListPath = tFileList;
}
}
}
실행한 화면은 1부와 동일하며 단지 이미지를 리소스가
아닌 SDCARD 에서 가져와 뿌려 줬다는 것입니다.
'안드로이드 개발' 카테고리의 다른 글
| 안드로이드(Android) 2014년 9월 까지 플랫폼 버전과 화면해상도 분포 (0) | 2014.10.24 |
|---|---|
| 안드로이드(Android) OS 버전과 시스템정보 알아오기 (0) | 2014.10.23 |
| 안드로이드(Android) 저장소(Sdcard) 에서 읽어온 파일이 이미지인지 판단하기 (0) | 2014.10.23 |
| 안드로이드(Android) google map API v2 에서 지도에 마커설정하기 (1) | 2014.10.22 |
| 안드로이드(Android) HorizontalScrollView 이용해 이미지 갤러리 만들기 – 1부 (0) | 2014.10.22 |
| 안드로이드(Android) XML 을 사용하여 이미지 버튼 배경 로딩하기 (0) | 2014.10.13 |
| 안드로이드(Android) SeekBar 로 배경색 변경하기 (0) | 2014.10.09 |
| 안드로이드(Android) android.util.DisplayMetrics 이용해 해상도를 측정하는 코드 (0) | 2014.09.27 |

