当前位置:  编程技术>移动开发
本页文章导读:
    ▪SD卡资料列表        SD卡文件列表 MainActivity.java package lee.sdcard; 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.E.........
    ▪ Ubuntu 上統計代碼行數        Ubuntu 下統計代碼行數 sudo apt-get install sloccountsloccount 文件名 ......
    ▪ 一些设立       一些设置 // 取消标题                 requestWindowFeature(Window.FEATURE_NO_TITLE);                 // 禁止屏幕休眠                 getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,     .........

[1]SD卡资料列表
    来源: 互联网  发布时间: 2014-02-18
SD卡文件列表

MainActivity.java

package lee.sdcard;

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.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {
    private ListView listView;				//文件目录ListView
	private GridView toolbarGrid;			//工具条
    private TextView title;					//标题-路径
    private List<String> fileName=null;	 	//文件名称
	private List<String> fileNum=null;	 	//记录文件大少或者有多少个子目录
	private List<String> filePath=null;		//文件路径
	private List<Boolean> isFile=null;		//是否文件夹

    private boolean flag = true;
    private String sdCardPath;				//SD卡根路径
    private String parentPath;				//路径的上级
    
	/** 底部菜单图片 **/
	int[] menu_toolbar_image_array = { 
			R.drawable.menu_paste,
			R.drawable.controlbar_back, 
			R.drawable.menu_penselectmodel,
			R.drawable.menu_quit };
	
	/** 底部菜单文字 **/
	String[] menu_toolbar_name_array = { "主目录", "返回", "确定", "退出" };
    
    
    public void toast(String msg){
    	Toast.makeText(this, msg, 1).show();
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        

        if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
        
        	toast("Sd卡不存在");
        }
    	sdCardPath=Environment.getExternalStorageDirectory().getPath();
    	
//    	File fff=new File(sdCardPath+"/test/ddd");
//    	if(!fff.exists())fff.mkdirs();
    	
    	
        listView=(ListView) findViewById(R.id.list_view);
        title=(TextView) findViewById(R.id.title2);
        
        
        getFileDir(sdCardPath);
        
    
        
    	
		// 创建底部菜单 Toolbar
		toolbarGrid = (GridView) findViewById(R.id.filedir_toolbar);		//获取底部的GridView控件
		toolbarGrid.setNumColumns(4);				// 设置每行列数

		toolbarGrid.setAdapter(getMenuAdapter(menu_toolbar_name_array,menu_toolbar_image_array));// 设置菜单Adapter。调用getMenuAdapter方法构造MAP参数
	
		/** 监听底部菜单选项 **/
		toolbarGrid.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
				switch (arg2) {
				case 0:	//首页
				    getFileDir(sdCardPath);
					break;
					
				case 1:	//返回
							getFileDir(parentPath);
							title.setText("路径:"+parentPath);
					break;
				case 2:
					// TODO Auto-generated method stub
					
					
					break;
				case 3:		
					MainActivity.this.finish();
					break;
				}
			}
		});
        
        
        
        
        
        
    }
    
    /**
	 * 构造菜单Adapter
	 * @param menuNameArray 名称
	 * @param imageResourceArray 图片
	 * @return SimpleAdapter
	 */
	private SimpleAdapter getMenuAdapter(String[] menuNameArray,int[] imageResourceArray) {
		ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < menuNameArray.length; i++) {
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("itemImage", imageResourceArray[i]);
			map.put("itemText", menuNameArray[i]);
			data.add(map);
		}
		SimpleAdapter simperAdapter = new SimpleAdapter(
				this,					//上下文
				data,					//数据源
				R.layout.item_menu, 	//绑定的视图
				new String[] { "itemImage", "itemText" },			//绑定数据源对应的标题
				new int[] { R.id.item_image, R.id.item_text });		//绑定视图对应的控件
		return simperAdapter;
	}
    
	/**
	 * 获取路径的子目录列表
	 * @param path 路径
	 */
	private void getFileDir(String path) {
		
		File f = new File(path);		//建立文件   
		if(!path.equals(sdCardPath)){	//判断文件是否SD卡根路径
			parentPath = f.getParent();	//如果不是根路径就获取该路径的上级路径
		}else
			parentPath = sdCardPath;	//如果是根路径就
		   
		   
		   
		//初始化存放个数据的List
		fileName = new ArrayList<String>();
		fileNum = new ArrayList<String>();
		filePath = new ArrayList<String>();
		isFile = new ArrayList<Boolean>();


		File file=new File(path);	//获取接收进来的路径
		int fileSize = file.list().length;	//获取路径一共有多少个子文件
		
		//第一次遍历存放文件夹
		for(int i=0;i<fileSize;i++){
			File fileChild=new File(path, file.list()[i]);	//定义子文件
			if(fileChild.isDirectory() && !fileChild.isHidden()){	//判断子文件是否文件夹并且不是隐藏文件
				fileName.add(fileChild.getName());	//获取子文件的名称
				fileNum.add(String.valueOf(fileChild.list().length)+"个子文件");	//获取子文件里面有几个子文件
				filePath.add(fileChild.getPath());	//获取子文件的路径
				isFile.add(true);					//标记是否文件夹
			}
		}
		
		//第2次遍历放图片文件
		for(int i=0;i<fileSize;i++){
			File fileChild=new File(path, file.list()[i]);			
			if(fileChild.getName().endsWith(".jpg")){	//判断后缀是图片
				fileName.add(fileChild.getName());		
				fileNum.add(String.valueOf(formatSize(fileChild.length())));	 //格式化图片大少,显示KB/MB/GB
				filePath.add(file.getPath());
				isFile.add(false);
			}
		}
		
		
		String[] str={"fileImage","fileName","isFileImage","fileNum","filePath"};
		List<Map<String,Object>> list =new ArrayList<Map<String,Object>>();
		for(int i=0;i<fileName.size();i++){
			Map<String,Object> map =new HashMap<String, Object>();
			
			map.put("fileName", fileName.get(i));
			map.put("filePath", filePath.get(i));
			map.put("fileNum", fileNum.get(i));
			
			//判断是文件夹还是图片,显示不同的图片
			if(isFile.get(i)){	
				map.put("fileImage",  R.drawable.image_folder);
				map.put("isFileImage", R.drawable.list_icon);
			}else if(fileName.get(i).endsWith(".jpg")){
				map.put("fileImage",  R.drawable.imagefile);
				map.put("isFileImage", R.drawable.list_icon);
			}
			list.add(map);
		}
		
		
		SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,
				list, 
				R.layout.filedir_item,
				str,
				new int[]{R.id.item_image,R.id.item_name,R.id.item_icon,R.id.item_num});
	
		listView.setAdapter(adapter);
		
		listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
		     
				Map<String, Object> map=(Map<String, Object>) parent.getItemAtPosition(position);	// 获取点击的Item所绑定的数据	   
				getFileDir(map.get("filePath").toString());	//获取点击文件夹路径
				title.setText("路径:"+map.get("filePath").toString());	//设置标题文字
			}
		});
	}

	

	/**
	 * 格式化文件大少,显示KB/MB/GB
	 * @param size
	 * @return	返回格式化的字符串
	 */
    private String formatSize(long size) {
        long SIZE_KB = 1024;
        long SIZE_MB = SIZE_KB * 1024;
        long SIZE_GB = SIZE_MB * 1024;
        
		if(size < SIZE_KB) {   
			return  String.format( "%d B" , (int) size);   
		} else if(size < SIZE_MB) {   
			return  String.format( "%.2f KB" , (float)size / SIZE_KB);    
		} else if(size < SIZE_GB) {   
			return  String.format( "%.2f MB" , (float)size / SIZE_MB);   
		} else {   
			return  String.format( "%.2f GB" , (float)size / SIZE_GB);   
		}   
	} 
	
	
	
	
//	@Override
//	public boolean onKeyDown(int keyCode, KeyEvent event) {
//		if(keyCode==KeyEvent.KEYCODE_BACK){
//			if(parentPath!=null)
//		    getFileDir(parentPath);
//		 	return true;
//		}
//		
//		
//		return super.onKeyDown(keyCode, event);
//	}
}

 


    
[2] Ubuntu 上統計代碼行數
    来源: 互联网  发布时间: 2014-02-18
Ubuntu 下統計代碼行數
sudo apt-get install sloccount
sloccount 文件名

    
[3] 一些设立
    来源: 互联网  发布时间: 2014-02-18
一些设置

// 取消标题
                requestWindowFeature(Window.FEATURE_NO_TITLE);
               
// 禁止屏幕休眠
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
                                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
               
// 全屏幕
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android双击返回键退出程序的实现方法 iis7站长之家
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,