|
|
51CTO旗下网站
|
|
移动端

3.3.2 具体实现(1)

《Android游戏开发从入门到精通》第3章Android 游戏开发基础,本章将引导读者开始Android 手机游戏开发,详细讲解Android 游戏开发的基本知识,为读者进行本书后面知识的学习打下基础。本节为大家介绍具体实现。

作者:王玉芹来源:机械工业出版社|2017-11-14 11:20

3.3.2 具体实现(1)

本实例的实现文件是SDC.java、SDC_1.java 和SDC_2.java,接下来将分别介绍上述文件的具体实现流程。

(1)编写文件SDC.java,具体实现流程如下。

用方法getFilesDir()获取SD 卡的目录,设置当SD 卡无插入时myButton2 处于不能按的状态。对应代码如下。

  1. /* 取得目前File 目录 */  
  2. fileDir = this.getFilesDir();  
  3. /* 取得SD 卡目录 */  
  4. sdcardDir = Environment.getExternalStorageDirectory();  
  5. /* 当SD 卡无插入时将myButton2 设成不能按 */  
  6. if (Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED))  
  7. {  
  8. myButton2.setEnabled(false);  

分别定义按钮单击处理事件setOnClickListener 和setOnClickListener,具体代码如下。

  1. myButton1.setOnClickListener(new Button.OnClickListener()  
  2. {  
  3. @Override  
  4. public void onClick(View arg0)  
  5. {  
  6. String path = fileDir.getParent() + java.io.File.separator  
  7. + fileDir.getName();  
  8. showListActivity(path);  
  9. }  
  10. });  
  11. myButton2.setOnClickListener(new Button.OnClickListener()  
  12. {  
  13. @Override  
  14. public void onClick(View arg0)  
  15. {  
  16. String path = sdcardDir.getParent() + sdcardDir.getName();  
  17. showListActivity(path);  
  18. }  
  19. });  

定义方法showListActivity(String path),并定义一个Intent 对象intent,然后将路径传到SDC_1。具体代码如下。

  1. private void showListActivity(String path)  
  2. {  
  3. Intent intent = new Intent();  
  4. intent.setClass(SDC.this, SDC_1.class);  
  5. Bundle bundle = new Bundle();  
  6. /* 将路径传到example_1 */  
  7. bundle.putString("path", path);  
  8. intent.putExtras(bundle);  
  9. startActivity(intent);  
  10. }  

(2)编写文件SDC_1.java,具体实现流程如下。

将主Activity 传来的path(路径)字符串作为传入路径,如果不存在这个路径,则使用java.io.File 创建一个新的。具体代码如下。

  1. public class SDC_1 extends ListActivity  
  2. {  
  3. private List<String> items = null;  
  4. private String path;  
  5. protected final static int MENU_NEW = Menu.FIRST;  
  6. protected final static int MENU_DELETE = Menu.FIRST + 1;  
  7. @Override  
  8. public void onCreate(Bundle savedInstanceState)  
  9. {  
  10. super.onCreate(savedInstanceState);  
  11. setContentView(R.layout.ex06_09_1);  
  12. Bundle bunde = this.getIntent().getExtras();  
  13. path = bunde.getString("path");  
  14. java.io.File file = new java.io.File(path);  
  15. /* 当该目录不存在时将目录创建 */  
  16. if (!file.exists())  
  17. {  
  18. file.mkdir();  
  19. }  
  20. fill(file.listFiles());  

通过onOptionsItemSelected 根据单击的MENU 选项实现添加或删除操作,具体代码如下。

  1. public boolean onOptionsItemSelected(MenuItem item)  
  2. {  
  3. super.onOptionsItemSelected(item);  
  4. switch (item.getItemId())  
  5. {  
  6. case MENU_NEW:  
  7. /* 单击添加MENU */  
  8. showListActivity(path, "", "");  
  9. break;  
  10. case MENU_DELETE:  
  11. /* 单击删除MENU */  
  12. deleteFile();  
  13. break;  
  14. }  
  15. return true;  

使用onCreateOptionsMenu(Menu menu)用于添加需要的MENU,具体代码如下。

  1. @Override  
  2. public boolean onCreateOptionsMenu(Menu menu)  
  3. {  
  4. super.onCreateOptionsMenu(menu);  
  5. /* 添加MENU */  
  6. menu.add(Menu.NONE, MENU_NEW, 0, R.string.strNewMenu);  
  7. menu.add(Menu.NONE, MENU_DELETE, 0, R.string.strDeleteMenu);  
  8. return true;  

当单击文件名后获取文件内容,具体代码如下。

  1. protected void onListItemClick  
  2. (ListView l, View v, int position, long id)  
  3. {  
  4. File file = new File  
  5. (path + java.io.File.separator + items.get(position));  
  6. /* 单击文件取得文件内容 */  
  7. if (file.isFile())  
  8. {  
  9. String data = "";  
  10. try  
  11. {  
  12. FileInputStream stream = new FileInputStream(file);  
  13. StringBuffer sb = new StringBuffer();  
  14. int c;  
  15. while ((c = stream.read()) != -1)  
  16. {  
  17. sb.append((char) c);  
  18. }  
  19. stream.close();  
  20. data = sb.toString();  
  21. }  
  22. catch (Exception e)  
  23. {  
  24. e.printStackTrace();  
  25. }  
  26. showListActivity(path, file.getName(), data);  
  27. }  

使用方法fill(File[] files)将内容填充到文件,具体代码如下。

  1. private void fill(File[] files)  
  2. {  
  3. items = new ArrayList<String>();  
  4. if (files == null)  
  5. {  
  6. return;  
  7. }  
  8. for (File file : files)  
  9. {  
  10. items.add(file.getName());  
  11. }  
  12. ArrayAdapter<String> fileList = new ArrayAdapter<String> 
  13. (this,android.R.layout.simple_list_item_1, items);  
  14. setListAdapter(fileList);  


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网管员必读—网络应用(第2版)

本书虽然是《网管员必读—网络应用》的改版,但它绝不是简单的修改,而是完完全全的重写,内容更实用、更专业。全书共9章,13个大小方案,...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊