android項目實戰-背唄單詞DEV01-拷貝單詞書實現

來源:互聯網
上載者:User

標籤:

該篇說明

現在我們正式進入功能及代碼的分析

主要進行重要功能的講解吧。

 

拷貝單詞書功能在第一個介面中

也就是在歡迎介面WelcomeActivity中

 

項目整體構架是MVC模式的

UI中主要只進行調用顯示資料

真正的資料處理邏輯在用戶端後台。

 

那麼先介紹UI及流程,再描述背景拷貝單詞書功能。

 

效果

 

 

執行流程圖

 

流程詳細說明

1> 先需要檢查單詞書

首先需要檢查SDcard中是否存在單詞書檔案,不存在才需要進行拷貝

private void checkWordBookFiles() {       boolean result = ResManager.checkWordBookFiles();       if(!result) {           Toast.makeText(context,                  "不存在單詞書db檔案-準備拷貝", Toast.LENGTH_LONG).show();           //拷貝單詞書           installWordBookFiles();       } else {           Toast.makeText(context,                  "存在單詞書db檔案-準備檢查學習計劃", Toast.LENGTH_LONG).show();
//檢查學習計劃 checkStudyPlanFiles(); }}

  

2> 拷貝單詞書方法

需要進度條提示,然後拷貝單詞書需要操作SQLite資料庫

耗時操作一定要在多線程中進行,否則會卡主UI。

private void installWordBookFiles() {       installWordBookFilesProgressDialog.setMessage("正在初始化單詞資料");       installWordBookFilesProgressDialog.setMax(WordBookConstant.allWordBookFileByteLength);       installWordBookFilesProgressDialog.show();       Thread installWordBookFilesThread = new Thread(new InstallWordBookFilesThread());       installWordBookFilesThread.start();}

  

3> 拷貝單詞書線程

這裡線程類實現Runnable介面的內部類,調用了資源管理的拷貝單詞書方法

class InstallWordBookFilesThread implements Runnable {       @Override       public void run() {           ResManager.init(context, installWordBookFilesProgressDialog);           ResManager.installWordBookFiles();           myHandler.sendEmptyMessage(0);    }}

  

後台拷貝單詞書功能詳解

該功能調用於資源管理模組ResManager

1> 拷貝所有檔案功能

public static void installWordBookFiles() {  try {    //建立項目目錄    File path = new File(PathConstant.WDBOOK_PATH);           if (path.exists() == false) {              Log.d("vrbword", "path didn‘t exist, creating!!!");              path.mkdirs();           }           //安裝檔案           installFile(WordBookConstant.DICT_STR + ".smf",                  PathConstant.WDBOOK_PATH + "/" + WordBookConstant.DICT_STR);           installFile(WordBookConstant.CET4_STR,                  PathConstant.WDBOOK_PATH + "/" + WordBookConstant.CET4_STR);           installFile(WordBookConstant.CET6_STR,                  PathConstant.WDBOOK_PATH + "/" + WordBookConstant.CET6_STR);           installFile(WordBookConstant.KAOYAN_STR,                  PathConstant.WDBOOK_PATH + "/" + WordBookConstant.KAOYAN_STR);           installFile(WordBookConstant.TOFEL_STR,                  PathConstant.WDBOOK_PATH + "/" + WordBookConstant.TOFEL_STR);           installFile(WordBookConstant.IELTS_STR,                  PathConstant.WDBOOK_PATH + "/" + WordBookConstant.IELTS_STR);           installFile(WordBookConstant.GRE_STR,                  PathConstant.WDBOOK_PATH + "/" + WordBookConstant.GRE_STR);    } catch (Exception e) {        e.printStackTrace();    }}

a> 先要建立項目目錄,是從assets目錄拷貝到sdcard目錄中,你可以自己通過常量類Constant來確定目錄的。

b> 目錄建立好了,就可以依次拷貝了

這裡使用了installFile(from, dest)方法,可拷貝單個檔案

 

2> 拷貝檔案功能

拷貝單個檔案

就是從assets目錄中拷貝指定檔案資料到sdcard的指定目錄的檔案中

private static void installFile(String from, String dest) throws Exception {        //判斷檔案        File fp = new File(dest);        if (!fp.exists() || fp.length() < 10 * 1024) {        //確定out及in流        InputStream in = context.getAssets().open(from);        OutputStream out = new FileOutputStream(fp);        //每次讀寫位元組長度        byte[] buf = new byte[operateFileByteLength];        while (-1 != in.read(buf)) {            out.write(buf);            //休眠可加強進度顯示效果            SystemUtil.sleepvd(5);            //不斷設定進度值            progressValue += operateFileByteLength;            myProgressDialog.setProgress(progressValue);        }        //關閉in及out流        in.close();        out.close();    }}                            

a> 首先要判斷檔案大小,檔案存在和檔案滿足大小條件才進行拷貝

b> 然後確定out及in流,根據指定的位元組長度依次寫入讀出的資料到檔案中。

c> 這裡用到了休眠只是為了顯示更好

d> 每次寫指定位元組的資料,進度值都會增加,顯示到自訂的對話方塊中。

 

更多請自行下載源碼解讀

應用下載:請點擊

源碼下載:請點擊

android項目實戰-背唄單詞DEV01-拷貝單詞書實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.