菜鳥Android之路(上),菜鳥android之路

來源:互聯網
上載者:User

菜鳥Android之路(上),菜鳥android之路

自己為什麼要學android

  • 本人作為應屆畢業生,自己進入社會前做過好多夢,可是呢,現實還是打敗了無邪!!面對社會的壓力和殘酷的競爭力自己如何產生下去??我自己對自己說:第一步
    先養活自己,才能走好以後的路  開始接觸手機端android那時感覺,做android開發的工資高、android前景廣。可是自己在學校那時自學了,最後自己沒有堅持走下去。因為開始接觸新的東西,自己要付出很多努力和時間,主要是自己那時不懂的利用好網路資源、遇到問題不知道怎麼去諮詢解決,碰了很多壁和走了彎路!自己就去學了C/C++、JavaWeb,也接觸過Python,大學生活自己過的一團遭,回想起來自己很`Loser`
  • 現在2016年就不一樣了,自己拾起Android,中間經曆了好多,得到過好多人的指導、協助.自己也在默默努力加油,一直在android的路上....... 
  • Android基礎
  • Android學習路線 
     
  • Android作業系統介紹   
  • Android系統架構---分層的架構    
  • DDMS介紹    
  • android工程目錄結構 
 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.intentcallphone" android:versionCode="1" android:versionName="1.0" > 3 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.CALL_PHONE" />" <!-- 代表當前應用 -->  4 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >  5 <activity android:name=".MainActivity" android:label="@string/app_name" >  6 <!-- main主入口 --> <!-- 意圖過濾器 -->  7 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />  8 </intent-filter>  9 </activity> 10 </application> 11 </manifest>     

  • 四種方法寫按鈕點擊事件
 1 android:id="@+id/pay" 2 android:layout_width="fill_parent" 3 android:layout_height="wrap_content" 4 android:layout_margin="10dp" 5 android:onClick="pay" 6 android:text="支付" 7 tools:ignore="HardcodedText" /> 8  9 public void pay(View v) {10 //要執行的操作11 }
  •  儲存到SD卡,擷取SD的大小及可用空間

需要判斷sdcard剩餘空間

 1 //判斷sdcard儲存空間是否滿足檔案的儲存 2 File sdcard_filedir = Environment.getExternalStorageDirectory();//得到sdcard的目錄作為一個檔案對象 3 long usableSpace = sdcard_filedir.getUsableSpace();//擷取檔案目錄對象剩餘空間 4 long totalSpace = sdcard_filedir.getTotalSpace(); 5 //將一個long類型的檔案大小格式化成使用者可以看懂的M,G字串 6 String usableSpace_str = Formatter.formatFileSize(mContext, usableSpace); 7 tring totalSpace_str = Formatter.formatFileSize(mContext, totalSpace); 8 if(usableSpace < 1024 * 1024 * 200){//判斷剩餘空間是否小於200M 9 Toast.makeText(mContext, "sdcard剩餘空間不足,無法滿足下載;剩餘空間為:"+usableSpace_str, Toast.LENGTH_SHORT).show();10 return ;    11 }12 13 /data/data: context.getFileDir().getPath();14 是一個應用程式的私人目錄,只有當前應用程式有許可權訪問讀寫,其他應用無許可權訪問。一些安全性要求比較高的資料存放在該目錄,一般用來存放size比較小的資料。15 /sdcard:  Enviroment.getExternalStorageDirectory().getPath();16 是一個外部儲存目錄,只用應用聲明了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>的一個許可權,就可以訪問讀寫sdcard目錄;所以一般用來存放一些安全性不高的資料,檔案size比較大的資料。
  •  SharedPreferences介紹 

 

 

  • 產生xml的兩種方式 
 1 1.寫布局 2  3 2.商務邏輯 4 a.備份 5   1.封裝簡訊資料到list中 6   2.將list中的資料寫到xml檔案中。 7 b.恢複 8   1.解析xml檔案中簡訊資料,封裝到list集合中 9   2.將解析資料列印。10 11   XmlPullParser12 13 //使用XmlSerializer來序列化xml檔案14 public static boolean backupSms_android(Context context){15         16 try{17             18 //[0]擷取簡訊資料19 ArrayList<SmsBean> allSms = SmsDao.getAllSms();20 //[1]通過Xml擷取一個XmlSerializer對象21 XmlSerializer xs = Xml.newSerializer();22 //[2]設定XmlSerializer的一些參數,比如:設定xml寫入到哪個檔案中23 //os:xml檔案寫入流   encoding:流的編碼24 xs.setOutput(context.openFileOutput("backupsms2.xml", Context.MODE_PRIVATE), "utf-8");25 //[3]序列化一個xml的聲明頭26 //encoding:xml檔案的編碼  standalone:是否獨立27 xs.startDocument("utf-8", true);28 //[4]序列化一個根節點的開始節點29 //namespace:命名空間  name: 標籤的名稱30 xs.startTag(null, "Smss");31 //[5]迴圈遍曆list集合序列化一條條簡訊32             33 for (SmsBean smsBean : allSms) {34 xs.startTag(null, "Sms");35 //name:屬性的名稱  value:屬性值36 xs.attribute(null, "id", smsBean.id+"");37                     38 xs.startTag(null, "num");39 //寫一個標籤的內容40 xs.text(smsBean.num);41 xs.endTag(null, "num");42                     43 xs.startTag(null, "msg");44 xs.text(smsBean.msg);45 xs.endTag(null, "msg");46                     47 xs.startTag(null, "date");48 xs.text(smsBean.date);49 xs.endTag(null, "date");50                     51 xs.endTag(null, "Sms");52 }53 54 //[6]序列化一個根節點的結束節點55                 xs.endTag(null, "Smss");56 //[7]將xml寫入到檔案中,完成xml的序列化57 xs.endDocument();58 return true;59 60 }catch (Exception e) {61 e.printStackTrace();62 }63 return false;64 }
  • 使用pull解析xml格式的資料 
     1 dom解析:基於全文載入的解析方式   sax解析:基於事件的逐行解析方式  pull解析:同sax 2          3       產生  XmlSerializer  模板代碼 4       解析  XmlPullParser  模板代碼 5      6  7 //解析xml檔案讀取簡訊內容 8 public static int restoreSms(Context context) { 9 ArrayList<SmsBean> arrayList = null;10 SmsBean smsBean = null;11 try{12 //1.通過Xml擷取一個XmlPullParser對象13 XmlPullParser xpp = Xml.newPullParser();14 //2.設定XmlPullParser對象的參數,需要解析的是哪個xml檔案,設定一個檔案讀取流15         16 //通過context擷取一個資產管理者對象17 AssetManager assets = context.getAssets();18 //通過資產管理者對象能擷取一個檔案讀取流19 InputStream inputStream = assets.open("backupsms.xml");20 xpp.setInput(inputStream,"utf-8");21 //xpp.setInput(context.openFileInput("backupsms2.xml"), "utf-8");22 //3.擷取當前xml行的事件類型23 int type = xpp.getEventType();24 //4.判斷事件類型是否是文檔結束的事件類型25 while(type != XmlPullParser.END_DOCUMENT){26 //5.如果不是,迴圈遍曆解析每一行的資料。解析一行後,擷取下一行的事件類型27 28 String currentTagName = xpp.getName();29 //判斷當前行的事件類型是開始標籤還是結束標籤30 switch (type) {31 case XmlPullParser.START_TAG:32 if(currentTagName.equals("Smss")){33 //如果當前標籤是Smss,需要初始化一個集合34 arrayList = new ArrayList<SmsBean>();35 }else if(currentTagName.equals("Sms")){36 37 smsBean = new SmsBean();38 smsBean.id = Integer.valueOf(xpp.getAttributeValue(null, "id"));39 40 }else if(currentTagName.equals("num")){41 smsBean.num =  xpp.nextText();42 }else if(currentTagName.equals("msg")){43 smsBean.msg =  xpp.nextText();44 }else if(currentTagName.equals("date")){45 smsBean.date =  xpp.nextText();46 }47 break;48 case XmlPullParser.END_TAG:49 //當前結束標籤是Sms的話,一條簡訊資料封裝完成, 可以加入list中50 if(currentTagName.equals("Sms")){51 arrayList.add(smsBean);52 }53 break;54 default:55 break;56 }57 58 type = xpp.next();//擷取下一行的事件類型59 }60 61 return arrayList.size();62 63 }catch (Exception e) {64 e.printStackTrace();65 }66 return 0;67 }
     先寫到這裡,歡迎交流,進入本人網站:www.wangsong520.com進行留言交流,並且裡面有更多知識分享!

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.