투케이2K

66. (AndroidStudio/android/java) glide (글라이더) 라이브러리 사용해서 일반 이미지, 원형 이미지, 인터넷 이미지 파일 표시 실시 본문

Android

66. (AndroidStudio/android/java) glide (글라이더) 라이브러리 사용해서 일반 이미지, 원형 이미지, 인터넷 이미지 파일 표시 실시

투케이2K 2021. 2. 26. 09:26

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//======== [build.gradle(Module:app)] ========
implementation 'com.github.bumptech.glide:glide:4.0.0'



//======== [AndroidManifest.xml] ========
<uses-permission android:name="android.permission.INTERNET"/>



//======== [xml] ========
<ImageView
                android:id="@+id/imageView"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/white_app_default"
                android:scaleType="fitCenter"/>



//======== [java - 이미지 뷰 생성] ========
ImageView imageView; //전역 변수 부분
imageView = (ImageView)findViewById(R.id.imageView); //oCreate 부분



//======== [java - 일반 이미지] ========
Glide.with(A_Glide.this)
	.load(R.drawable.people_image) //TODO 이미지 로드 실시
	.into(imageView); //이미지 표시할 뷰 지정



//======== [java - 인터넷 이미지] ========
final String reqUrl = "http://image.dongascience.com/Photo/2020/03/5bddba7b6574b95d37b6079c199d7101.jpg";

Glide.with(A_Glide.this)
	.load(reqUrl) //이미지 URL 주소
	.apply(new RequestOptions()
		.placeholder(R.drawable.white_app_default) //TODO 이미지 로딩중 표시되는 파일
		.error(R.drawable.white_app_default) //TODO 이미지 로드 실패시 표시되는 파일
	)
	.into(imageView); //이미지 표시할 뷰 지정



//======== [java - 원형 이미지] ========
Glide.with(A_Glide.this)
	.load(R.drawable.people_image)
	.apply(new RequestOptions()
		.circleCrop()
		.centerCrop()
		.transform(new CircleTransform(A_Glide.this))
	)
	.into(imageView);



//======== [java - 원형 이미지 제작 클래스] ========
class CircleTransform extends BitmapTransformation {

	public CircleTransform(Context context) {
		super(context);
	}

	@Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
		return circleCrop(pool, toTransform);
	}

	private Bitmap circleCrop(BitmapPool pool, Bitmap source) {
		if (source == null) return null;

		int size = Math.min(source.getWidth(), source.getHeight());
		int x = (source.getWidth() - size) / 2;
		int y = (source.getHeight() - size) / 2;

		Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);

		Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
		if (result == null) {
			result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
		}

		Canvas canvas = new Canvas(result);
		Paint paint = new Paint();
		paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
		paint.setAntiAlias(true);
		float r = size / 2f;
		canvas.drawCircle(r, r, r, paint);
		return result;
	}
	@Override
	public void updateDiskCacheKey(MessageDigest messageDigest) {
	}
}

/* =========================== */

반응형
Comments