Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 菜鳥Android之路(上),菜鳥android之路

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

編輯:關於android開發

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


自己為什麼要學android

  • 本人作為應屆畢業生,自己進入社會前做過好多夢,可是呢,現實還是打敗了無邪!!面對社會的壓力和殘酷的競爭力自己如何生成下去??我自己對自己說:第一步
    先養活自己,才能走好以後的路  開始接觸手機端android那時感覺,做android開發的工資高、android前景廣。可是自己在學校那時自學了,最後自己沒有堅持走下去。因為開始接觸新的東西,自己要付出很多努力和時間,主要是自己那時不懂的利用好網絡資源、遇到問題不知道怎麼去咨詢解決,碰了很多壁和走了彎路!自己就去學了C/C++、JavaWeb,也接觸過Python,大學生活自己過的一團遭,回想起來自己很`Loser`
  • 現在2016年就不一樣了,自己拾起Android,中間經歷了好多,得到過好多人的指導、幫助.自己也在默默努力加油,一直在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>     

Android工程目錄結構

  • 四種方法寫按鈕點擊事件

 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   XmlPullParser
12 
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進行留言交流,並且裡面有更多知識分享!

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved