반응형
안드로이드(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 |