Android编程实现简单文件浏览器功能

作者:村头那抠脚大叔 时间:2022-01-02 06:13:46 

本文实例讲述了Android编程实现简单文件浏览器功能。分享给大家供大家参考,具体如下:

运行效果:

Android编程实现简单文件浏览器功能

布局:


<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="wrap_content"
 android:orientation="vertical"
 android:layout_gravity="center_horizontal"
 tools:context=".MainActivity" >
 <TextView
   android:id="@+id/txt1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />
 <ImageButton
   android:id="@+id/imageBt1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/home"/>
 <ListView
   android:id="@+id/listFile"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" >
 </ListView>
</LinearLayout>


<?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/images"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />
 <TextView
   android:id="@+id/txtview"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />
</LinearLayout>

java代码:


package com.android.xiong.sdfilelook;
import java.io.File;
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.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class MainActivity extends Activity {
 private ListView listfile;
 //当前文件目录
 private String currentpath;
 private TextView txt1;
 private ImageView images;
 private TextView textview;
 private ImageButton imagebt1;
 private int[] img = { R.drawable.file, R.drawable.folder, R.drawable.home };
 private File[] files;
 private SimpleAdapter simple;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   listfile = (ListView) findViewById(R.id.listFile);
   txt1 = (TextView) findViewById(R.id.txt1);
   imagebt1 = (ImageButton) findViewById(R.id.imageBt1);
   init(Environment.getExternalStorageDirectory());
   listfile.setOnItemClickListener(new OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
         long arg3) {
       // TODO Auto-generated method stub
       // 获取单击的文件或文件夹的名称
       String folder = ((TextView) arg1.findViewById(R.id.txtview))
           .getText().toString();
       try {
         File filef = new File(currentpath + '/'
             + folder);
         init(filef);
       } catch (Exception e) {
         e.printStackTrace();
       }
     }
   });
   //回根目录
   imagebt1.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View v) {
       init(Environment.getExternalStorageDirectory());
     }
   });
 }
 // 界面初始化
 public void init(File f) {
   if (Environment.getExternalStorageState().equals(
       Environment.MEDIA_MOUNTED)) {
     // 获取SDcard目录下所有文件名
     files = f.listFiles();
     if (!files.equals(null)) {
       currentpath=f.getPath();
       txt1.setText("当前目录为:"+f.getPath());
       List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
       for (int i = 0; i < files.length; i++) {
         Map<String, Object> maps = new HashMap<String, Object>();
         if (files[i].isFile())
           maps.put("image", img[0]);
         else
           maps.put("image", img[1]);
         maps.put("filenames", files[i].getName());
         list.add(maps);
       }
       simple = new SimpleAdapter(this, list,
           R.layout.fileimageandtext, new String[] { "image",
               "filenames" }, new int[] { R.id.images,
               R.id.txtview });
       listfile.setAdapter(simple);
     }
   } else {
     System.out.println("该文件为空");
   }
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
   // Inflate the menu; this adds items to the action bar if it is present.
   getMenuInflater().inflate(R.menu.main, menu);
   return true;
 }
}

权限控制:


<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

希望本文所述对大家Android程序设计有所帮助。

来源:http://blog.csdn.net/x605940745/article/details/12580367

标签:Android,文件浏览器
0
投稿

猜你喜欢

  • spring boot中配置hikari连接池属性方式

    2022-11-13 06:06:44
  • mybatis-plus使用问题小结

    2023-10-30 06:45:58
  • Spring Boot与Spring MVC Spring对比及核心概念

    2023-09-27 05:14:36
  • JSON各种转换问题(json转List,json转对象等)

    2021-09-28 08:53:45
  • Java实现Redis的集合(set)命令操作

    2022-05-08 11:07:03
  • hibernate-validator改进校验框架validator v0.4使用

    2023-01-22 21:08:07
  • maven多profile 打包下 -P参和-D参数的实现

    2023-03-22 08:25:08
  • Java中的main函数的详细介绍

    2021-10-03 16:09:16
  • 浅析java移位符的具体使用

    2023-12-21 09:36:13
  • JVM(Java虚拟机)简介(动力节点Java学院整理)

    2023-11-25 06:12:12
  • Java 8 Stream操作类型及peek示例解析

    2021-07-17 20:42:08
  • Java 多线程等待优雅的实现方式之Phaser同步屏障

    2023-11-29 09:47:43
  • Spring Security之默认的过滤器链及自定义Filter操作

    2023-11-24 02:48:35
  • Java判断对象是否为空(包括null ,"")的方法

    2022-11-26 13:50:25
  • Activiti如何启动流程并使流程前进

    2023-11-18 18:38:51
  • C#编写游戏客户端的实现代码

    2021-08-28 06:24:58
  • Unity3D实现甜品消消乐游戏

    2022-11-06 16:26:24
  • SpringBoot详细讲解视图整合引擎thymeleaf

    2023-12-04 16:31:37
  • IDEA连接Mysql数据库的详细图文教程

    2023-10-09 09:51:24
  • Java受检异常的一些思考

    2021-06-08 08:22:16
  • asp之家 软件编程 m.aspxhome.com