탐색기를 만들고싶었습니다.

 

그래서 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>