안드로이드 이야기

안드로이드 - 복잡한 파일 탐색기

mapagilove 2012. 8. 23. 21:19
728x90
반응형
안드로이드 -  복잡한 파일 탐색기

2012/01/17 19:13

복사 http://blog.naver.com/meteor525/20148548121

FileExplore.java
package com.androidside.file;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.ExifInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.androidside.R;

public class FileExplorer extends ListActivity {

static final int JPG_DIALOG_ID = 0;

String filename;
String exifAttribute;
TextView exifText;
ImageView bmImage;
BitmapFactory.Options bmOptions;
File jpgFile;
Dialog jpgDialog;

private List<string> item = null;
private List<string> path = null;
private String root = "/";
private TextView myPath;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.file_fileexplorer);
myPath = (TextView) findViewById(R.id.path);
getDir(root);
}

private void getDir(String dirPath) {
myPath.setText("Location: " + dirPath);

item = new ArrayList<string>();
path = new ArrayList<string>();

File f = new File(dirPath);
File[] files = "파일 리스트 얻기";

if (!dirPath.equals(root)) {

item.add(root);
path.add(root);

item.add("../");
path.add(f.getParent());
}

for (int i = 0; i < files.length; i++) {
File file = files[i];
path.add("파일패스 추가");

if (파일이 디렉토리라면)
item.add("파일 이름 얻기" + "/");
else
item.add("파일 이름 얻기");
}

ArrayAdapter<string> fileList = new ArrayAdapter<string>(this,
"리스트의 각 로우에 나올 뷰" , "리스트에 설정할 아이템 지정");
setListAdapter(fileList);
}

@Override
"리스트를 클릭했을 때 발생하는 이벤트의 메소드 선언부"

File file = new File(path.get(position));

if (file.isDirectory()) {
if (file.canRead())
getDir(path.get(position));
else {
"파일이 없다는 것을 보여주는 경고창"
}
} else {
exifAttribute = null;
filename = file.getName();
String ext = filename.substring(filename.lastIndexOf('.') + 1,
filename.length());

if ("ext가 JPG나 jpg라면") {
try {
ExifInterface exif = new ExifInterface(file.toString());
exifAttribute = getExif(exif);
} catch (IOException e) {
// TODO Auto-generated catch block
;
}
jpgFile = file;
showDialog(JPG_DIALOG_ID);
} else {
"메시지에 exifAttribute 를 보여주는 경고창"
}
}
}

private String getExif(ExifInterface exif) {
String myAttribute = "";
myAttribute += getTagString(ExifInterface.TAG_IMAGE_LENGTH, exif);
myAttribute += getTagString(ExifInterface.TAG_IMAGE_WIDTH, exif);
return myAttribute;
}

private String getTagString(String tag, ExifInterface exif) {
return (tag + " : " + exif.getAttribute(tag) + "\n");
}

@Override
protected Dialog onCreateDialog(int id) {
jpgDialog = null;
;
switch (id) {
case JPG_DIALOG_ID:

//Context mContext = this;
jpgDialog = new Dialog(this);
jpgDialog.setContentView(R.layout.file_jpgview);

exifText = (TextView) jpgDialog.findViewById(R.id.text);
bmImage = (ImageView) jpgDialog.findViewById(R.id.image);
"적당한 코드를 고민해보세요"
bmOptions.inSampleSize = 2;

Button okDialogButton = (Button) jpgDialog
.findViewById(R.id.okdialogbutton);
okDialogButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
jpgDialog.dismiss();
}
});

break;
default:
break;
}
return jpgDialog;
}

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
// TODO Auto-generated method stub

switch (id) {
case JPG_DIALOG_ID:
dialog.setTitle("[" + filename + "]");
exifText.setText(exifAttribute);
"jpgFile의 경로와 bmOptions를 사용해서 Bitmap를 생성하고 이를 보여주는 다이얼로그"

break;
default:
break;
}
}
}
</string></string></string></string></string></string>


file_fileexplorer.xml

<linearlayout>
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<textview>
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

"리스트를 보여줄 ListView를 선언"

<textview>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="No Data" />
</textview></textview></linearlayout>



file_row.xml

<textview>
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rowtext"
android:layout_width="fill_parent"
android:layout_height="34dp"
android:textSize="18sp" />
</textview>


file_jpgview.xml

<linearlayout>
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="10dip"
android:paddingRight="10dip">
<textview>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="11sp" />
/>

"이미지를 보여줄 ImageView를 선언"

</textview></linearlayout>




728x90
반응형