編輯:關於android開發
自己為什麼要學android
先養活自己,才能走好以後的路 開始接觸手機端android那時感覺,做android開發的工資高、android前景廣。可是自己在學校那時自學了,最後自己沒有堅持走下去。因為開始接觸新的東西,自己要付出很多努力和時間,主要是自己那時不懂的利用好網絡資源、遇到問題不知道怎麼去咨詢解決,碰了很多壁和走了彎路!自己就去學了C/C++、JavaWeb,也接觸過Python,大學生活自己過的一團遭,回想起來自己很`Loser`

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 }
需要判斷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比較大的數據。
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 }
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 }
Android--自定義荷載進度的兩種方法,android--荷載
Android--自定義荷載進度的兩種方法,android--荷載博客撰寫人:It一zhai男 轉載請標明地址:http://www.cnblogs.com/i
Android下創建一個SQLite數據庫,androidsqlite
Android下創建一個SQLite數據庫,androidsqlite數據庫:SQLite(輕量級,嵌入式的數據庫) 大量的相似結構的數據的儲存,快速的查詢。特殊的文件(
android:QQ多種側滑菜單的實現
android:QQ多種側滑菜單的實現 然而這個菜單效果只是普通的側拉效果 我們還可以實現抽屜式側滑菜單 就像這樣 第一種效果 第二種效果 第三種效果 第四種效果 其
Android開發學習之路-動態高斯模糊怎麼做,android高斯
Android開發學習之路-動態高斯模糊怎麼做,android高斯什麼是高斯模糊? 高斯模糊(英語:Gaussian Blur),也叫高斯平滑,是在Adobe Phot