最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)文件資源管理器雛形

 更新時間:2022年03月29日 19:07:21   作者:wenix1988  
這篇文章主要為大家詳細介紹了Android實現(xiàn)文件資源管理器雛形,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android文件資源管理器雛形的實現(xiàn)代碼,供大家參考,具體內容如下

學習Android,應該在掌握單個知識點之后,把多個知識點串聯(lián)起來實現(xiàn)一些有一定代碼量的小項目比較好。當然,這也是我教學中總結出來的一點經驗心得,并不適合所有人。

先做需求分析(實現(xiàn)的功能):

1.ListView開始顯示sdcard目錄下的子目錄和文件。

2.點擊文件,Toast顯示“點擊的是文件”

3.點擊目錄,進入子目錄,顯示子目錄下的子目錄和文件。

4.back鍵回退到上層目錄。

5.異常情況處理:

5.1如果sdcard沒有插入,則不顯示列表,且提示用戶應該插入sdcard后操作

5.2不允許進入sdcard的上層目錄

下面開始實現(xiàn):

布局有兩個:

1.主布局:file_list.xml

<RelativeLayout 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"
? ? tools:context=".FileExplorerActivity" >
?? ?<TextView?
?? ? ? ?android:id="@+id/currentTv"
?? ? ? ?android:layout_alignParentTop="true"
?? ? ? ?android:clickable="true"
?? ? ? ?android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content"/>
? ? <ListView?
? ? ? ? android:id="@+id/fileLv"
? ? ? ? android:layout_below="@id/currentTv"
? ? ? ? android:layout_alignParentBottom="true"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content">
? ? ? ??
? ? </ListView>
? ??
</RelativeLayout>

布局很簡單,就是放置了一個ListView控件,這里要注意的是,ListView標簽下不能再放入其他的子控件。內容是通過子布局和Adapter來顯示的。

2.ListView中的子布局file_list_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/filename"
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"/>
?
</LinearLayout>

子布局也很簡單,就是在水平方向上左邊顯示一個圖標,用來顯示文件夾或文件圖標,右邊顯示文件名。

3.Activity代碼(功能點寫在注釋中)

public class FileExplorerActivity extends Activity {
?? ?//Adapter中ICON和Filename鍵值對常量
?? ?private static final String ICON = "icon";
?? ?private static final String FILENAME = "filename";
?? ?private TextView currentTv;//ListView上顯示當前路徑的TextView
?? ?private ListView fileLv;//文件列表顯示的ListView
?? ?SimpleAdapter adapter;//適配器
?? ?private List<HashMap<String, Object>> data;//填充的數據
?? ?private File root;//文件夾根節(jié)點
?? ?private File[] currentFiles; //根節(jié)點下的所有文件(包括文件夾)
?? ?private File currentPath;//記錄當前節(jié)點
?? ?@Override
?? ?protected void onCreate(Bundle savedInstanceState) {
?? ??? ?super.onCreate(savedInstanceState);
?? ??? ?setContentView(R.layout.activity_file_explorer);
?? ??? ?
?? ??? ?currentTv = (TextView)findViewById(R.id.currentTv);
?? ??? ?fileLv = (ListView)findViewById(R.id.fileLv);
?? ??? ?
?? ??? ?//得到根節(jié)點root -->/mnt/sdcard
?? ??? ?root = getFileSystemRoot();
?? ??? ?//得到第一屏的信息
?? ??? ?if(root != null){
?? ??? ??? ?//從/mnt/sdcard下得到文件列表
?? ??? ??? ?data = getFileListFromSdcard(root);
?? ??? ?}else{
?? ??? ??? ?//如果沒有掛載sdcard,則提示用戶
?? ??? ??? ?data = new ArrayList<HashMap<String, Object>>();
?? ??? ??? ?HashMap<String, Object> map = new HashMap<String, Object>();
?? ??? ??? ?map.put(ICON, R.drawable.none);
?? ??? ??? ?map.put(FILENAME, "逗我玩啊,插卡啊");
?? ??? ??? ?data.add(map);
?? ??? ?}
?? ??? ?//創(chuàng)建Adapater
?? ??? ?adapter = new SimpleAdapter(
?? ??? ??? ??? ??? ?this,?
?? ??? ??? ??? ??? ?data,?
?? ??? ??? ??? ??? ?R.layout.file_list_item,?
?? ??? ??? ??? ??? ?new String[]{ICON, FILENAME},?
?? ??? ??? ??? ??? ?new int[]{R.id.icon, R.id.filename});
?? ??? ?
?? ??? ?fileLv.setAdapter(adapter);
?? ??? ?//綁定事件
?? ??? ?fileLv.setOnItemClickListener(new OnItemClickListener() {
?? ??? ??? ?@Override
?? ??? ??? ?public void onItemClick(AdapterView<?> parent, View view,
?? ??? ??? ??? ??? ?int position, long id) {
?? ??? ??? ??? ?//點擊listview 項時,如果是目錄,則進入下一層次,如果是文件,不做處理
?? ??? ??? ??? ?File currentPosFile = currentFiles[position];
?? ??? ??? ??? ?if(currentPosFile.isDirectory()){
?? ??? ??? ??? ??? ?getFileListFromSdcard(currentPosFile);
?? ??? ??? ??? ?}else{
?? ??? ??? ??? ??? ?Toast.makeText(FileExplorerActivity.this, "您點擊的是文件夾", Toast.LENGTH_LONG).show();
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?});
?? ?}
?
?? ?/**
?? ? * 攔截back鍵返回
?? ? * @return
?? ? */
?? ?@Override
?? ?public boolean onKeyDown(int keyCode, KeyEvent event) {
?? ??? ?if(KeyEvent.KEYCODE_BACK == keyCode){
?? ??? ??? ?File parentFile = currentPath.getParentFile();
?? ??? ??? ?//不能超過最頂層
?? ??? ??? ?try {
?? ??? ??? ??? ?if(parentFile.getCanonicalPath().toString().equals("/mnt")){
?? ??? ??? ??? ??? ?Toast.makeText(this, "別按了,到家了", Toast.LENGTH_LONG).show();
?? ??? ??? ??? ??? ?return true;
?? ??? ??? ??? ?}else{
?? ??? ??? ??? ??? ?getFileListFromSdcard(parentFile);
?? ??? ??? ??? ?}
?? ??? ??? ?} catch (IOException e) {
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return super.onKeyDown(keyCode, event);
?? ?}
?? ?private File getFileSystemRoot() {
?? ??? ?//首先得到Sd卡是否加載了
?? ??? ?if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
?? ??? ??? ?//得到sd卡路徑 root --> /mnt/sdcard
?? ??? ??? ?root = Environment.getExternalStorageDirectory();
?? ??? ?}else{
?? ??? ??? ?Toast.makeText(this, "逗我玩啊,插卡啊", Toast.LENGTH_LONG).show();
?? ??? ?}
?? ??? ?return root;
?? ?}
?
?? ?/**
?? ? * 得到Sdcard中的文件列表
?? ? * @return
?? ? */
?? ?private List<HashMap<String, Object>> getFileListFromSdcard(File root) {
?? ??? ?try {
?? ??? ??? ?currentPath = root;
?? ??? ??? ?currentTv.setText(root.getCanonicalPath().toString());
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
?? ??? ?currentFiles = root.listFiles();//列出當前目錄下的所有文件和目錄
?? ??? ?for(File f : currentFiles){
?? ??? ??? ?HashMap<String, Object> map = new HashMap<String, Object>();
?? ??? ??? ?String fileName = f.getName();
?? ??? ??? ?int icon;
?? ??? ??? ?if(f.isDirectory()){
?? ??? ??? ??? ?icon = R.drawable.dir;
?? ??? ??? ??? ?map.put(ICON, icon);
?? ??? ??? ?}else if(f.isFile()){
?? ??? ??? ??? ?icon = R.drawable.file;
?? ??? ??? ??? ?map.put(ICON, icon);
?? ??? ??? ?}
?? ??? ??? ?map.put(FILENAME, fileName);
?? ??? ??? ?list.add(map);
?? ??? ?}
?? ??? ?//把原來的data list清空,然后把list放進去,再通知adapter
?? ??? ?if(data != null){
?? ??? ??? ?data.clear();
?? ??? ??? ?data.addAll(list);
?? ??? ??? ?adapter.notifyDataSetChanged();
?? ??? ?}
?? ??? ?return list;
?? ?}
}

運行效果:

功能展望:

以上代碼是通過精簡功能達到的,如果要增加以下功能也是相當之簡單的:

1.文件夾和文件的刪除功能

2.文件夾和文件的重命名功能

3.文件的分類調用App查看功能

4.文件詳細信息顯示功能

...

從上面示例可以看出,其實做一個文件資源管理器是相當簡單的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android狀態(tài)欄的適配匯總

    Android狀態(tài)欄的適配匯總

    這篇文章主要給大家介紹了關于Android狀態(tài)欄適配的相關資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • Android銀行卡掃描獲取銀行卡號

    Android銀行卡掃描獲取銀行卡號

    這篇文章主要為大家詳細介紹了Android銀行卡掃描獲取銀行卡號的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 詳解Android封裝一個全局的BaseActivity

    詳解Android封裝一個全局的BaseActivity

    這篇文章主要介紹了詳解Android封裝一個全局的BaseActivity,對封裝感興趣的同學,可以參考下
    2021-04-04
  • android基本控件ToggleButton&Switch使用指南

    android基本控件ToggleButton&Switch使用指南

    本文給大家匯總介紹了android的2個基本控件ToggleButton和Switch的使用方法,非常的詳細,有需要的小伙伴可以參考下。
    2016-01-01
  • Android Google AutoService框架使用詳解

    Android Google AutoService框架使用詳解

    AutoService是Google開發(fā)一個自動生成SPI清單文件的框架??催^一些基于APT的三方框架源碼的讀者應該有所了解。比如Arouter、EventBus等等
    2022-11-11
  • Android 雙擊Back鍵退出應用的實現(xiàn)方法

    Android 雙擊Back鍵退出應用的實現(xiàn)方法

    這篇文章主要介紹了Android 雙擊Back鍵退出應用的實現(xiàn)方法的相關資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • Android編程基于距離傳感器控制手機屏幕熄滅的方法詳解

    Android編程基于距離傳感器控制手機屏幕熄滅的方法詳解

    這篇文章主要介紹了Android編程基于距離傳感器控制手機屏幕熄滅的方法,結合具體實例形式分析了Android距離傳感器的控制屏幕熄滅的實現(xiàn)方法與相關操作技巧,需要的朋友可以參考下
    2017-11-11
  • Android編程之監(jiān)聽器的實現(xiàn)方法

    Android編程之監(jiān)聽器的實現(xiàn)方法

    這篇文章主要介紹了Android編程之監(jiān)聽器的實現(xiàn)方法,以實例形式較為詳細的分析了Android監(jiān)聽器的創(chuàng)建、注冊及相關使用技巧,需要的朋友可以參考下
    2015-11-11
  • Android檢查網絡狀態(tài)工具類詳解

    Android檢查網絡狀態(tài)工具類詳解

    這篇文章主要為大家詳細介紹了Android檢查網絡狀態(tài)工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Android中播放在線音樂代碼

    Android中播放在線音樂代碼

    這篇文章主要介紹了Android中播放在線音樂代碼,本文只給出了核心操作代碼,需要的朋友可以參考下
    2015-04-04

最新評論

平凉市| 苍梧县| 滨海县| 瑞昌市| 元阳县| 宜黄县| 宜黄县| 滦南县| 贵州省| 汤阴县| 喀喇沁旗| 台湾省| 洱源县| 上栗县| 上林县| 偏关县| 营山县| 秦安县| 娄底市| 钟山县| 黎平县| 那坡县| 乃东县| 祁门县| 正镶白旗| 瑞安市| 富阳市| 彝良县| 长寿区| 本溪| 文水县| 维西| 泰安市| 响水县| 环江| 彭山县| 青阳县| 兰西县| 泸西县| 抚远县| 临高县|