首页 > 代码库 > Android 编程之入门开发文件夹管理器开发详细讲解-1

Android 编程之入门开发文件夹管理器开发详细讲解-1

在我们的手持设备中,一般都会自带设备公司自己开发的文件管理系统、拍照系统之类的东东,今天我给大伙说说入门级开发的文件夹管理器,代码贼少

总共就6个类吧,没有夹杂其他外部应用,就是一个纯文件夹管理器

APP主要功能设计:文件复制、文件夹复制、批量文件/文件夹复制、删除文件、删除文件夹、批量删除文件/文件夹、文件分类、文件搜索暂时没有写,

有兴趣的可以自己写写

APP主要应用:DrawerLayout 、ListView、Fragment、IO、序列化、文件过滤、文件排序、ActionBar、Adapter、v4包、一些事件等

下面开始讲开发吧,首先我们要给APP读写权限,在清单文件配置如下权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

主界面活动代码:

package com.example.maozhuafile;
/**
 * 文件管理主界面
 * @author Engineer-Jsp
 * @date 2014.10.27
 * */
import java.io.File; 
import java.util.ArrayList;
import java.util.HashMap;  
import java.util.List;
import java.util.Map; 
import com.example.maozhuafile.MainActivity.FragmentA.FragmentB;
import com.example.maozhuafile.MainActivity.FragmentA.FragmentC;
import com.example.maozhuafile.MainActivity.FragmentA.FragmentD;
import com.example.util.CustomFileFilter;
import com.example.util.FileOpreationUitl;
import com.example.util.FileSort;
import com.example.util.FragmentAdapter;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.database.Cursor;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.ActionMode;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.MultiChoiceModeListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnItemClickListener {
	private ActionBar actionbar;
	private ActionBarDrawerToggle drawertoggle;
	private DrawerLayout drawerLayout;
	private ListView drawerlistview;
	private String[] drawerdata;
	private SimpleAdapter adapter;
	private List<Map<String, Object>> draweralllist = new ArrayList<Map<String, Object>>();
	private FragmentA fragmentA;
	private FragmentB fragmentB;
	private FragmentC fragmentC;  
	private FragmentD fragmentD;
	private int[] list_image = { R.drawable.cunchu, R.drawable.music,
			R.drawable.movies, R.drawable.photos };
	private static int index = -1;
	private static File currentpath;
	private static File SDpath;
//	private static File[] mfileData;
	private static Context mContext;
	public  static boolean exit;
	private static boolean copy;
	private static MenuItem paste;
	int i=0;
	private static EditText newFile;
	private static FileOpreationUitl opreaFile=new FileOpreationUitl();
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mContext = MainActivity.this;
		initDrawerLayout();
		//
		initDrawerContent();
		//
		if (null == savedInstanceState) {
			// 如果为空代表第一次执行
			fragmentA = new FragmentA();
			fragmentB = new FragmentB();
			fragmentC = new FragmentC();
			fragmentD = new FragmentD();
			// 动态添加
			android.app.FragmentManager fg = getFragmentManager();
			fg.beginTransaction().add(R.id.drawer_frame_a, fragmentA).commit();
		}
	}
	private void initDrawerContent() {
		drawerdata = http://www.mamicode.com/getResources().getStringArray(R.array.array);>
主布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/chouti"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <FrameLayout 
        android:id="@+id/drawer_frame_a"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
    <FrameLayout 
        android:id="@+id/drawer_frame_b"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
    <ListView 
        android:id="@+id/drawer_list"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#eee"
        />

</android.support.v4.widget.DrawerLayout>


文件列表 Item 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/drawer_bg"
    >

    <ImageView
        android:id="@+id/filelist_imageview"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="18dp"
        android:layout_marginTop="10dp"
        android:src=http://www.mamicode.com/"@drawable/photos">
自定义Adapter,控制文件与应用图片配对,队号入座,ViewHolder 节约内存资源:

package com.example.util;
/**
 * 自定义容器Adapter
 * @author Engineer-Jsp
 * @date 2014.10.27
 * */
import java.io.File;
import java.util.Date;
import com.example.maozhuafile.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class FragmentAdapter extends BaseAdapter {

    private Context mContext ;	 
    private File[] mfileData ;
	private LayoutInflater mlayoutinflater;


	public FragmentAdapter( File[]files ,Context pContext) {
		mContext = pContext ;
		mfileData = http://www.mamicode.com/files ;>


至此主活动布局就完成了,主布局效果图:


注意:如果使用模拟器测试,请注意,如果模拟器没有开启 SD 内存iso,请自行开启测试,如果SD内存为空,请自行新建文件测试,谢谢~

Android 编程之入门开发文件夹管理器开发详细讲解-1