国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 文件選擇器詳解及實例代碼

2019-12-12 04:59:39
字體:
供稿:網(wǎng)友

     本文給大家講解下Android文件選擇器的使用。實際上就是獲取用戶在SD卡中選擇的文件或文件夾的路徑,這很像C#中的OpenFileDialog控件。

       此實例的實現(xiàn)過程很簡單,這樣可以讓大家快速的熟悉Android文件選擇器,提高開發(fā)效率。

       網(wǎng)上曾經(jīng)見到過一個關(guān)于文件選擇器的實例,很多人都看過,本實例是根據(jù)它修改而成的,但更容易理解,效率也更高,另外,本實例有自己的特點:

       1、監(jiān)聽了用戶按下Back鍵的事件,使其返回上一層目錄。

       2、針對不同的文件類型(文件vs文件夾 , 目標(biāo)文件vs其他文件)做了特殊處理。

       知識點一、 File 類的使用

       文件選擇器的主要功能是:瀏覽文件/文件夾、文件類型等;都是通過Java File類來實現(xiàn)的。

       知識點二、調(diào)用方法說明  

       使用了startActivityForResult()發(fā)起調(diào)用以及onActivityResult()方法接收回調(diào)后的信息。

       先貼上效果圖如下:

       其他的也沒什么好說了,大家看看代碼注釋吧,很簡單。

       FileChooserActivity.java 實現(xiàn)文件選擇的類 。

Java代碼

public class CopyOfFileChooserActivity extends Activity {      private String mSdcardRootPath ; //sdcard 根路徑   private String mLastFilePath ;  //當(dāng)前顯示的路徑      private ArrayList<FileInfo> mFileLists ;   private FileChooserAdapter mAdatper ;      //配置適配器   private void setGridViewAdapter(String filePath) {     updateFileItems(filePath);     mAdatper = new FileChooserAdapter(this , mFileLists);     mGridView.setAdapter(mAdatper);   }   //根據(jù)路徑更新數(shù)據(jù),并且通知Adatper數(shù)據(jù)改變   private void updateFileItems(String filePath) {     mLastFilePath = filePath ;     mTvPath.setText(mLastFilePath);          if(mFileLists == null)       mFileLists = new ArrayList<FileInfo>() ;     if(!mFileLists.isEmpty())       mFileLists.clear() ;          File[] files = folderScan(filePath);     if(files == null)        return ;     for (int i = 0; i < files.length; i++) {       if(files[i].isHidden()) // 不顯示隱藏文件         continue ;              String fileAbsolutePath = files[i].getAbsolutePath() ;       String fileName = files[i].getName();       boolean isDirectory = false ;       if (files[i].isDirectory()){         isDirectory = true ;       }       FileInfo fileInfo = new FileInfo(fileAbsolutePath , fileName , isDirectory) ;       //添加至列表       mFileLists.add(fileInfo);     }     //When first enter , the object of mAdatper don't initialized     if(mAdatper != null)       mAdatper.notifyDataSetChanged(); //重新刷新   }   //獲得當(dāng)前路徑的所有文件   private File[] folderScan(String path) {     File file = new File(path);     File[] files = file.listFiles();     return files;   }   private AdapterView.OnItemClickListener mItemClickListener = new OnItemClickListener() {     public void onItemClick(AdapterView<?> adapterView, View view, int position,         long id) {       FileInfo fileInfo = (FileInfo)(((FileChooserAdapter)adapterView.getAdapter()).getItem(position));       if(fileInfo.isDirectory())  //點擊項為文件夾, 顯示該文件夾下所有文件         updateFileItems(fileInfo.getFilePath()) ;       else if(fileInfo.isPPTFile()){ //是ppt文件 , 則將該路徑通知給調(diào)用者         Intent intent = new Intent();         intent.putExtra(EXTRA_FILE_CHOOSER, fileInfo.getFilePath());         setResult(RESULT_OK , intent);         finish();       }       else {  //其他文件.....         toast(getText(R.string.open_file_error_format));       }     }   };   public boolean onKeyDown(int keyCode , KeyEvent event){     if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode()       == KeyEvent.KEYCODE_BACK){       backProcess();         return true ;     }     return super.onKeyDown(keyCode, event);   }   //返回上一層目錄的操作   public void backProcess(){     //判斷當(dāng)前路徑是不是sdcard路徑 , 如果不是,則返回到上一層。     if (!mLastFilePath.equals(mSdcardRootPath)) {        File thisFile = new File(mLastFilePath);       String parentFilePath = thisFile.getParent();       updateFileItems(parentFilePath);     }      else {  //是sdcard路徑 ,直接結(jié)束       setResult(RESULT_CANCELED);       finish();     }   } } 

       此實例的界面稍顯簡陋,不過大家可以在此基礎(chǔ)上完善,添加其他功能。本實例代碼下載地址:

http://download.csdn.net/detail/qinjuning/4825392。

        感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 天峻县| 遵化市| 兰考县| 封开县| 固镇县| 河间市| 清徐县| 大余县| 璧山县| 克拉玛依市| 台安县| 西华县| 山阴县| 苍南县| 银川市| 南靖县| 霍州市| 宜昌市| 佳木斯市| 北辰区| 定远县| 永城市| 罗江县| 慈溪市| 沂南县| 长顺县| 乐业县| 西华县| 临城县| 来凤县| 古丈县| 海门市| 根河市| 江安县| 潢川县| 岳西县| 醴陵市| 西峡县| 嵊泗县| 芜湖市| 子长县|