반응형
|
안드로이드(Android) 이미지뷰에서 Exif 정보 다이얼로그 띄우기 |
|
개발환경 : window 7 64bit, Eclipse Mars, Android 4.2.2 |
|
이번예제는 파일브라우저에서 이미지를 선택하면 상세 페이지가 나오는 예제에서 이미지 클릭시 Exif 정보를 다이얼로그로 만들어 보여주는 예제 입니다. |
파일 브라우저에서 jpg 이미지를 클릭했을 때
보여주는 클래스에 다이얼로그를 띄우는 소스
입니다.
먼저 이미지를 클릭했을 때 다이올로그를 호출할수
있도록 onClickListener 등록합니다.
View.OnClickListener popupDlgOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
createdDialog(ID_JPGDIALOG).show(); // Instead of showDialog(0);
}
};
onClickListener 에서 호출하는 함수 createDialog() 는
다음과 같습니다. 다이얼로그 내부는 dialog_select_image_view.xml
로 레이아웃을 구성하며 OK 버튼을 클릭했을 때
화면을 닫을수 있도록 onClickListener 에 등록합니다.
protected Dialog createdDialog(int id) {
dlg = null;
TextView content;
switch (id) {
case ID_JPGDIALOG:
Context mContext = this;
dlg = new Dialog(mContext);
dlg.setContentView(R.layout.dialog_select_image_view);
content = (TextView) dlg.findViewById(R.id.dlgImageName);
content.setText(exifAttribute);
Button okDialogButton = (Button) dlg.findViewById(R.id.btnOk);
okDialogButton.setOnClickListener(okDialogButtonOnClickListener);
break;
default:
break;
}
return dlg;
}
다이얼로그 레이아웃 xml 전체 내용입니다.
다양하게 꾸밀려면 여기에 수정을 하시면 되겠죠
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/dlgImageName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="top" />
<Button
android:id="@+id/btnOk"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="OK" />
</LinearLayout>
다이얼로그에 등록한 OK 버튼 클릭시 상자를 닫기
위해 OnClickListener 에 dlg.dismiss() 호출하였습니다.
private Button.OnClickListener okDialogButtonOnClickListener =
new Button.OnClickListener() {
public void onClick(View v) {
dlg.dismiss();
}
};
이상 Exif 를 보여주기위한 이미지 상세 페이지에
대한 전체 activity 소스 입니다.
import java.io.IOException;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.ExifInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class SelectImageView extends Activity {
private static final int ID_JPGDIALOG = 0;
private String exifAttribute;
private Dialog dlg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_image_view);
TextView txtImgName = (TextView) findViewById(R.id.jpgname);
ImageView jpgView = (ImageView) findViewById(R.id.jpgview);
jpgView.setOnClickListener(popupDlgOnClickListener);
Intent intent = getIntent();
if (intent != null) {
String path = intent.getStringExtra("totalpath");
txtImgName.setText(path);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bm = BitmapFactory.decodeFile(path, options);
jpgView.setImageBitmap(bm);
try {
ExifInterface exif = new ExifInterface(path);
exifAttribute = getExif(exif);
} catch (IOException e) {
e.printStackTrace();
}
}
}
View.OnClickListener popupDlgOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
createdDialog(ID_JPGDIALOG).show(); // Instead of showDialog(0);
}
};
protected Dialog createdDialog(int id) {
dlg = null;
TextView content;
switch (id) {
case ID_JPGDIALOG:
Context mContext = this;
dlg = new Dialog(mContext);
dlg.setContentView(R.layout.dialog_select_image_view);
content = (TextView) dlg.findViewById(R.id.dlgImageName);
content.setText(exifAttribute);
Button okDialogButton = (Button) dlg.findViewById(R.id.btnOk);
okDialogButton.setOnClickListener(okDialogButtonOnClickListener);
break;
default:
break;
}
return dlg;
}
private Button.OnClickListener okDialogButtonOnClickListener =
new Button.OnClickListener() {
public void onClick(View v) {
dlg.dismiss();
}
};
private String getExif(ExifInterface exif) {
String myAttribute = "";
myAttribute += getTagString(ExifInterface.TAG_DATETIME, exif);
myAttribute += getTagString(ExifInterface.TAG_FLASH, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LATITUDE, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LATITUDE_REF, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LONGITUDE, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LONGITUDE_REF, exif);
myAttribute += getTagString(ExifInterface.TAG_IMAGE_LENGTH, exif);
myAttribute += getTagString(ExifInterface.TAG_IMAGE_WIDTH, exif);
myAttribute += getTagString(ExifInterface.TAG_MAKE, exif);
myAttribute += getTagString(ExifInterface.TAG_MODEL, exif);
myAttribute += getTagString(ExifInterface.TAG_ORIENTATION, exif);
myAttribute += getTagString(ExifInterface.TAG_WHITE_BALANCE, exif);
return myAttribute;
}
private String getTagString(String tag, ExifInterface exif) {
return (tag + " : " + exif.getAttribute(tag) + "\n");
}
}
반응형
'안드로이드 개발' 카테고리의 다른 글
| 안드로이드(Android) PhoneGap, 이클립스 플러그인 설치로 좀더 쉽게 개발하기 (0) | 2014.11.18 |
|---|---|
| 안드로이드(Android) 간단한 RatingBar 사용예제 (0) | 2014.11.18 |
| 안드로이드(Android) 이미지에서의 Exif GPS 정보를 GeoPoint 바꾸기 (6) | 2014.11.17 |
| 안드로이드(Android) 문의 – Dialog 클래스를 이용하여 다이얼로그 계산기 올리기 (0) | 2014.11.16 |
| 안드로이드(Android) showDialog(int) deprecated 다시 구현하기 (0) | 2014.11.14 |
| 안드로이드(Android) 파일 브라우저에서 이미지 보여주기 (1) | 2014.11.13 |
| 안드로이드(Android) 파일브라우저에서 이미지 클릭시 Exif 정보 출력하기 (0) | 2014.11.12 |
| 안드로이드(Android) 간단한 파일 브라우저 만들기 (0) | 2014.11.11 |
