仿原生安卓檔案管理器
仿照安卓原生自帶的檔案管理器開發,這裡只是簡單寫了個demo,依據現有程式碼可以很輕鬆實現後續開發,效果圖如下:
首先新建一個listview_item,學過介面卡的同學應該都知道一會要這是幹什麼的,就是為了繪製每個列表項的介面,這裡採用圖示+檔名
listview_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/name" android:textSize="25sp" android:layout_marginLeft="10dp" android:layout_gravity="center_vertical" android:textColor="#080808" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
然後開始著手寫我們的主介面佈局,兩層LinearLayout的巢狀
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.filemanagerdemo.MainActivity" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/parent" android:text="返回" android:background="#00EE76" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> <ListView android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginTop="3dp" android:id="@+id/listview" android:dividerHeight="1dp" android:layout_weight="1"> </ListView> </LinearLayout>
好了,現在靜態的介面都已經準備好了,下面開始最關鍵的主Activity的程式碼講解
MainActivity.java
<span style="font-size:18px;">package com.example.filemanagerdemo; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private Button parent ; private ListView listview ; private TextView textview ; private File currentParent ; //記錄當前檔案的父資料夾 private File[] currentFiles ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init() ; } /* * 初始化控制元件 */ private void init() { // TODO Auto-generated method stub this.parent = (Button)findViewById(R.id.parent) ; this.listview = (ListView)findViewById(R.id.listview) ; this.textview = (TextView)findViewById(R.id.textview) ; File root = new File(Environment.getExternalStorageDirectory().getPath()) ; if(root.exists()) { currentParent = root ; currentFiles = root.listFiles() ; inflateListView(currentFiles) ; } this.parent.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub try { if(!currentParent.getCanonicalFile().equals(Environment.getExternalStorageDirectory().getPath())) { currentParent = currentParent.getParentFile() ; //獲取上級目錄 currentFiles = currentParent.listFiles() ; //取得當前層所有檔案 inflateListView(currentFiles); //更新列表 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); this.listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub //如果點選的是檔案,不做任何處理 if(currentFiles[position].isFile()) { return ; } File[] temp = currentFiles[position].listFiles() ; if(temp == null || temp.length == 0) { Toast.makeText(getApplicationContext(), "此資料夾不可用或者資料夾為空",Toast.LENGTH_LONG).show(); ; return ; } currentParent = currentFiles[position] ; currentFiles = temp ; inflateListView(currentFiles); } }) ; } /* * 更新listview */ private void inflateListView(File[] files) { // TODO Auto-generated method stub List<Map<String,Object>> list = new ArrayList<Map<String, Object>>() ; for(int i = 0 ;i<files.length ;i++) { Map<String,Object> item= new HashMap<String, Object>() ; if(files[i].isDirectory()) { item.put("icon", R.drawable.folder) ; }else { item.put("icon", R.drawable.file) ; //這裡可以寫成根據具體的檔案型別新增不同的圖示 } item.put("name", files[i].getName()) ; list.add(item) ; } SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(),list,R.layout.listview_item, new String[]{"icon","name"}, new int[]{R.id.icon,R.id.name}) ; this.listview.setAdapter(adapter); try{ textview.setText(currentParent.getCanonicalPath()); }catch (IOException e){ e.printStackTrace(); } } } </span>
從onCreate開始閱讀,程式碼應該不難。Ok,一個仿安卓原生系統的檔案管理器demo就開發完畢,這個demo為了能讓大家看的清晰,我用了很不規範的書寫習慣,比如字串應該放進string.xml ,顏色也最好不要直接使用RGB編碼,應該在value下新建color.xml給這個RGB編碼指定一個名字。這裡為了原理講解清晰,我全部使用了硬編碼,還有就是我獲取SD卡根目錄的方式太簡單粗暴,正常應該專門寫一個方法來判斷各種異常情況,比如判斷有沒有SD卡或當前SD卡是否可用,否則一旦使用者執行一點異常操作,我們的程式就崩了,這就是正式專案與demo的區別吧。
OK that is all,有錯誤之處,希望瀏覽者能不吝指正。
覺得還不錯的話歡迎點一下下面的
頂!
d=====( ̄▽ ̄*)b
或者
oooO ↘┏━┓ ↙ Oooo
( 踩)→┃你┃ ←(死 )
\ ( →┃√┃ ← ) /
\_)↗┗━┛ ↖(_/
。
相關推薦
仿原生安卓檔案管理器
仿照安卓原生自帶的檔案管理器開發,這裡只是簡單寫了個demo,依據現有程式碼可以很輕鬆實現後續開發,效果圖如下: 首先新建一個listview_item,學過介面卡的同學應該都知道一會要這是幹什麼的,就是為了繪製每個列表項的介面,這裡採用圖示+檔名 listvie
安卓檔案管理器開啟指定目錄
File destDir = new File(getApplicationContext().getExternalCacheDir()+"//eml"); Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
安卓 檔案管理器-ListView實現
今天覆習一下ListView實現安卓檔案管理器,包括檔案的篩選、apk的安裝,以及BaseAdapter的應用等。 直接上程式碼: 應用實現部分 public class MainActivity extends ListActivity {
Android TimePickerDialog(原生安卓時間選擇器)
這個控制元件說實話之前沒用過原生的,都是用的自定義的,其實這個也挺好看的。 public class MainActivity extends AppCompatActivity { private Calendar c; @Override prot
安卓MP3播放器開發實例(3)之進度條和歌詞更新的實現
tac run detail datetime style mem poll() arc call 上一次談了音樂播放的實現,這次說下最復雜的進度條和歌詞更新。因為須要在播放的Activity和播放的Service間進行交互,所以就涉及了Activi
安卓多媒體播放器的開發
lis list 媒體 ongl .com ava aid 多媒體 http JaVa%E5%8F%8D%E5%B0%84%E6%9C%BA%E5%88%B6%E5%AE%9E%E7%8E%B0%E5%8F%8A%E5%8E%9F%E7%90%86 http://musi
安卓 傳感器基礎
ports htm div 有效 type() 0ms 類型 event pan 基礎部分 傳感器類型 動作傳感器 這類傳感器在三個軸(X、Y、Z)上測量加速度和旋轉角度。包括如下幾個傳感器。 加速(accelerometer)傳感器 陀螺儀(gyroscope)傳感器 重
ShopNC Android 好商城原生安卓客戶端源碼項目
安裝 程序 .com 管理 截圖 red 客服系統 報錯 客戶端源碼 # ShopNc Android 警告:本開源程序作者:MapStory,聯系QQ:1002285057,交流群:492184679,禁止任何未授權商用! 基於好商城V5.6的Android客戶端,目
安卓中管理Activity
安卓中一般在BaseActivity 管理所有的Activity 因為所有的Activity 繼承自BaseActivity 步驟: 1:在BaseActivity New 一個ArrayList 儲存Activity private List<Activity> allA
搭建開源的web檔案管理器(eXtplorer)
下載: wget https://extplorer.net/attachments/download/77/eXtplorer_2.1.11.zip 解壓: unzip eXtplorer_2.1.11.zip -d extplorer 複製到站點根目錄: \cp -a extpl
VDVESTA一鍵安裝指令碼-VESTACP-PHP7.1-檔案管理器-vDDoSProxy
VDVESTA一鍵部署script/VESTACP/PHP7.1/檔案管理器/vDDoS Proxy 簡介 VDVESTA是一個小型的shellscript,為您的CentOS7 x86_64主動定製並部署VESTACP面板,與官方面板不同的是,此script支援php7。並增加了需付費使用的檔案管理面板
寫一個簡單的網站檔案管理器
一時不知道從何說起了,網站檔案管理器滿天飛的,所以,純粹是閒的蛋疼,才會做這個,對於我來說,這就是打遊戲。 1.仿win7介面 2.仿win7操作 3.上傳,下載,分享檔案,這麼說起來,就像是一個個人網盤了。 製作過程有點懶得說了,目前是做到可以瀏覽檔案,切換目錄這樣 用我的Vue元件載入做的,
推薦一款最好用的windows檔案管理器
在日常生活或工作中,除了一些文字編輯工具以及網頁瀏覽器以外,我們接觸的最多的可能就是資源管理器了。資源管理器軟體有很多。如: Clover 、QTTabBar、FreeCommander、WindowsTabs、Q-Dir、Total Commander等
_035_Android_Android studio3.0開啟Device File Explore(檔案管理器)的方法(圖文教程)
轉自https://blog.csdn.net/xiayiye5/article/details/79002921,感謝作者的無私分享。 方法一: 點選 View > Tool Windows > Android Profiler (還可以點
循序而漸進,熟讀而精思——優麒麟檔案管理器篇
自上次發表“自是年少,韶華傾負 ——優麒麟-系統入門篇”教程之後,小編就消失快幾個月了,不過小編沒有偷懶喲,而是參與18.10的UKUI主題管理及釋出派對去了。So,小編應該算比較勤快的,你看,今天又來寫第二篇“優麒麟檔案管理器”,現在跟我一起來認識這個管理工具吧。 華味慚初識,新聲喜盡聞——檔
安卓視訊播放器——ijkPlayer(Bilibili開源)
作為一個B站(Bilibili)使用者,特別喜歡B站的播放器 湊巧,發現了b站的github的地址。。嘿嘿。。B站github地址f 發現了ijkplayer播放器,支援android 和ios 我們用AndroidStudio新建project名字是bilibili_ijkplay
刪除Win10檔案管理器中的文件音樂視訊OneDrive快速訪問等
一、刪除Win10檔案管理器中的文件/音樂/視訊等在Windows 10下開啟這臺電腦,除了會顯示磁碟碟符外,在資源管理器上半部分還會顯示6個資料夾,這6個資料夾就像6個核桃一樣,對一些人有用,對一些人沒有用。有些強迫症的童鞋表示不能忍受,下面介紹怎樣刪除這幾個資料夾。環境:Windows10專業版開啟登錄檔
RE檔案管理器下載|RE檔案管理器免費下載
re管理器是我很喜歡的一款功能強大的高許可權檔案管理器,可以利用它刪除手機自帶的不必要軟體,從而提高系統的執行速度,非常的好用。RE檔案管理器下載連結應用簡介RE檔案管理器是一款非常強的的檔案管理工具,該軟體需要RE管理器ROOT的許可權,新建資料夾,檢視/編輯檔案,軟體安裝,如果你的手機已經Root過了並且
安卓視訊播放器
磨洋工磨了好久,終於決定開始寫視訊播放器了,嗯,相簿播放器那裡,就是典型的舊坑未填,又挖新坑,233.再辭給自己立一個flag,一個月之後就要完成基本上的功能,比如基本的顯示,自動播放了,上一個下一個,暫停開始,拖拉,視訊列表。嗯,其他的慢慢來,總是要有個目標的,都沒人管
File Cabinet Pro for Mac(Mac選單欄檔案管理器) V6.7.1(2.7.9)破解版
File Cabinet Pro for Mac是Mac平臺上一款非常簡潔的Mac選單欄檔案管理器,File Cabinet Pro Mac破解版不僅僅是一個選單欄檔案管理軟體,它還內建了文字編輯器、pdf檢視器、影象檢視器和媒體播放器等小功能,功能非常的強大。 File Cabinet Pro