안드로이드 개발 질문/답변
(글 수 45,052)
탐색기를 만들고싶었습니다.
그래서 UI를
써치.xml
---------------------------------------------------------------------
어플 이름 그림
--------------------------------------------------------------------
이미지 버튼 1 이미지 버튼2 이미지 버튼3
---------------------------------------------------------------------
여기부분은 버튼을 눌렀을때 따로 화면이 표시되도록 하고싶었습니다
나머지다른 부분들은 변경되지 않고.
(빈 레이아웃)
------------------------------------------------------------------------
그래서 탐색기 화면 분을 java로 레이아웃을 만들어서 화면을 표시했고
그걸 다시 저 빈 레이아웃에 넣고싶은데 ㅠㅠ
어떻게 연결을 해야할지 모르겠어요 .....
FileBrowserDemoActivity (탐색기 부분)
package daegu.android;
import java.io.File;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
public class FileBrowserDemoActivity extends Activity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener, AdapterView.OnItemSelectedListener
{
private GridView mGrid;
private File mCurrentDir;
private ArrayList<File> mFiles;
private String[] mFilters;
private String[] mAudioExt;
private String[] mImageExt;
private String[] mArchiveExt;
private String[] mWebExt;
private String[] mTextExt;
private String[] mVideoExt;
private String[] mGeoPosExt;
private boolean mStandAlone;
private IconView mLastSelected;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mFiles = new ArrayList<File>();
mAudioExt = getResources().getStringArray(R.array.fileEndingAudio);
mImageExt = getResources().getStringArray(R.array.fileEndingImage);
mArchiveExt = getResources().getStringArray(R.array.fileEndingPackage);
mWebExt = getResources().getStringArray(R.array.fileEndingWebText);
mTextExt = getResources().getStringArray(R.array.fileEndingText);
mVideoExt = getResources().getStringArray(R.array.fileEndingVideo);
mGeoPosExt = getResources().getStringArray(R.array.fileEndingGeoPosition);
Intent intent = getIntent();
String action = intent.getAction();
if(action == null || action.compareTo(Intent.ACTION_MAIN) == 0)
mStandAlone = true;
else
mStandAlone = false;
mFilters = intent.getStringArrayExtra("FileFilter");
if(intent.getData() == null) browseTo(new File("/"));
else browseTo(new File(intent.getDataString()));
Display display = getWindowManager().getDefaultDisplay();
mGrid = new GridView(this);
mGrid.setNumColumns(display.getWidth() / 60);
mGrid.setOnItemClickListener(this);
mGrid.setOnItemLongClickListener(this);
mGrid.setOnItemSelectedListener(this);
mGrid.setAdapter(new IconAdapter());
setContentView(mGrid);
}
private synchronized void browseTo(final File location)
{
mCurrentDir = location;
mFiles.clear();
this.setTitle(mCurrentDir.getName().compareTo("") == 0 ? mCurrentDir.getPath() : mCurrentDir.getName());
if(location.getParentFile() != null) mFiles.add(mCurrentDir.getParentFile());
for(File file : mCurrentDir.listFiles())
{
if(file.isDirectory())
{
mFiles.add(file);
}
else if(mFilters != null)
{
for(String ext : mFilters)
{
if(file.getName().endsWith(ext))
{
mFiles.add(file);
continue;
}
}
}
else
{
mFiles.add(file);
}
}
if(mGrid != null) mGrid.setAdapter(new IconAdapter());
}
public class IconAdapter extends BaseAdapter
{
@Override
public int getCount()
{
return mFiles.size();
}
@Override
public Object getItem(int index)
{
return mFiles.get(index);
}
@Override
public long getItemId(int index)
{
return index;
}
@Override
public View getView(int index, View convertView, ViewGroup parent)
{
IconView icon;
File currentFile = mFiles.get(index);
int iconId;
String filename;
if(index == 0 && (currentFile.getParentFile() == null || currentFile.getParentFile().getAbsolutePath().compareTo(mCurrentDir.getAbsolutePath()) != 0))
{
iconId = R.drawable.updirectory;
filename = new String("..");
}
else
{
iconId = getIconId(index);
filename = currentFile.getName();
}
if(convertView == null)
{
icon = new IconView(FileBrowserDemoActivity.this, iconId, filename);
}
else
{
icon = (IconView)convertView;
icon.setIconResId(iconId);
icon.setFileName(filename);
}
return icon;
}
private int getIconId(int index)
{
File file = mFiles.get(index);
if(file.isDirectory()) return R.drawable.directory;
for(String ext : mAudioExt)
{
if(file.getName().endsWith(ext)) return R.drawable.audio;
}
for(String ext : mArchiveExt)
{
if(file.getName().endsWith(ext)) return R.drawable.archive;
}
for(String ext : mImageExt)
{
if(file.getName().endsWith(ext)) return R.drawable.image;
}
for(String ext : mWebExt)
{
if(file.getName().endsWith(ext)) return R.drawable.webdoc;
}
for(String ext : mTextExt)
{
if(file.getName().endsWith(ext)) return R.drawable.text;
}
for(String ext : mVideoExt)
{
if(file.getName().endsWith(ext)) return R.drawable.video;
}
for(String ext : mGeoPosExt)
{
if(file.getName().endsWith(ext)) return R.drawable.geoposition;
}
return R.drawable.unknown;
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long id)
{
File file = mFiles.get((int)id);
if(file.isDirectory())
{
browseTo(file);
}
else
{
if(!mStandAlone)
{
// Send back the file that was selected
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_PICK, path);
setResult(RESULT_OK, intent);
finish();
}
else
{
// Try to open it
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(file), getMimeType(file));
startActivity(Intent.createChooser(intent, null));
}
}
}
@Override
public boolean onItemLongClick(AdapterView<?> parentView, View view, int arg2, long id)
{
final File file = mFiles.get((int)id);
final File parent = file.getParentFile();
new AlertDialog.Builder(FileBrowserDemoActivity.this)
.setIcon(android.R.drawable.ic_menu_agenda)
.setItems(R.array.file_options, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
switch(whichButton)
{
// case 0: // Rename
// file.renameTo(new File(parent, "Bubba.txt"));
// browseTo(parent);
// break;
case 0: // Delete
file.delete();
browseTo(parent);
break;
// case 2: // Cut
// break;
// case 3: // Copy
// break;
case 1: // Send To...
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setType(getMimeType(file));
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
startActivity(Intent.createChooser(intent, null));
break;
}
dialog.dismiss();
}
})
.create().show();
return true;
}
private String getMimeType(File file)
{
for(String ext : mAudioExt)
{
if(file.getName().endsWith(ext)) return "audio/*";
}
for(String ext : mArchiveExt)
{
if(file.getName().endsWith(ext)) return "archive/*";
}
for(String ext : mImageExt)
{
if(file.getName().endsWith(ext)) return "image/*";
}
for(String ext : mWebExt)
{
if(file.getName().endsWith(ext)) return "text/html";
}
for(String ext : mTextExt)
{
if(file.getName().endsWith(ext)) return "text/plain";
}
for(String ext : mVideoExt)
{
if(file.getName().endsWith(ext)) return "video/*";
}
for(String ext : mGeoPosExt)
{
if(file.getName().endsWith(ext)) return "audio/*";
}
return "";
}
@Override
public void onItemSelected(AdapterView<?> grid, View icon, int arg2, long index)
{
if(mLastSelected != null)
{
mLastSelected.deselect();
}
if(icon != null)
{
mLastSelected = (IconView)icon;
mLastSelected.select();
}
}
@Override
public void onNothingSelected(AdapterView<?> grid)
{
if(mLastSelected != null)
{
mLastSelected.deselect();
mLastSelected = null;
}
}
}
IconView 탐색기부분
package see.android;
import android.content.Context;
import android.text.TextUtils;
import android.view.Gravity;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class IconView extends LinearLayout
{
private ImageView mIcon;
private TextView mFileName;
public IconView(Context context, int iconResId, String fileName)
{
super(context);
this.setOrientation(VERTICAL);
this.setPadding(3, 3, 3, 3);
this.setGravity(Gravity.CENTER_HORIZONTAL);
mIcon = new ImageView(context);
mIcon.setScaleType(ImageView.ScaleType.FIT_CENTER);
mIcon.setImageResource(iconResId);
addView(mIcon, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
mFileName = new TextView(context);
mFileName.setSingleLine();
mFileName.setEllipsize(TextUtils.TruncateAt.END);
mFileName.setText(fileName);
addView(mFileName, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
public void select()
{
mFileName.setEllipsize(TextUtils.TruncateAt.MARQUEE);
}
public void deselect()
{
mFileName.setEllipsize(TextUtils.TruncateAt.END);
}
public void setIconResId(int resId)
{
mIcon.setImageResource(resId);
}
public void setFileName(String fileName)
{
mFileName.setText(fileName);
}
}
서치 xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ffffff"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/mainicon"
android:layout_gravity="center"
android:layout_weight="1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckApk"
android:textColor="#00ff00"
android:textSize="40sp"
android:layout_gravity="center"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/edtAddress"
android:background="#ffffff"
android:text=""
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/header_layout_root"
>
<ImageButton
android:id="@+id/btnHome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/homeicon"
android:layout_gravity="center"
android:background="@null"
android:layout_margin="30dip"
android:gravity="center"
/>
<ImageButton
android:id="@+id/btnSearch"
android:src="@drawable/pixadeax_anwansoon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@null"
android:gravity="center"
/>
<ImageButton
android:id="@+id/btnView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:layout_gravity="center"
android:layout_margin="30dip"
android:background="@null"
android:gravity="center"
/>
</LinearLayout>
<!-- -------------------- -->
<!-- 여기가 빈 레이아웃입니다. -->
<!-- -------------------- -->
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/body_LinearLayout">
</LinearLayout>
</LinearLayout>



