Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android寶典入門篇

Android寶典入門篇

編輯:關於Android編程

 今天跟大家分享的是我學android時的筆記。以前搞net很多年了,現在還在搞這。本著活到老學到老抽了點時間學習了下android。android網上有很多的視頻教程,當時對於我這樣以前不了解java和eclipse的人來說還是遇到了一些很讓人頭疼的各種問題,分享這些問題我想對於跟我一樣基礎的人學習android肯定很有價值,有不周到的地方大家多指正。android挺好的,值得我花的時間,推薦大家有空也看看。   一、eclipse我常用的快捷鍵 1.、ctrl+shift+r:打開資源      2、ctrl_shift+/ 注釋      3. ctrl+o:快速outline,神器啊      4. ctrl+e:快速轉換編輯器,神器啊      5. alt+shift+r:重命名      7. shift+enter及ctrl+shift+enter      8. Alt+方向鍵      9. ctrl+m 最大\小化編輯器      10. ctrl+.:下一個錯誤及快速修改      Ctrl+Shift+X 把當前選中的文本全部變味小寫      Ctrl+Shift+Y 把當前選中的文本全部變為小寫      Ctrl+Shift+F 格式化當前代碼       eclipse 斷點調試快捷鍵   F3        --跳到聲明或定義的地方。          F5       --單步調試進入函數內部。          F6       --單步調試不進入函數內部,如果裝了金山詞霸2006則要把“取詞開關”的快捷鍵改成其他的。          F7       --由函數內部返回到調用處。          F8       --一直執行到下一個斷點。   二、安裝sdk錯誤 SDK Manager:failed to install Warning! A folder failed to be renamed or moved.On Windows this typically means that a propram is using that folder>>>D:\android\android-sdk-windows\tools.When ready,press YES to try again.     解決辦法:     1.進入sdk的temp文件夾,下載好後會有一個tools_r06-windows.zip(版本號可能會不一樣)     2.解壓此文件,如解壓成tools_r06-windows     3.進入tools_r06-windows文件夾,將tools_r06-windows裡的文件復制     4.覆蓋sdk根目錄的tools文件夾中的文件   三、sqllite操作 運行起模擬器    adb shell 進入linux命令行 ls -l查看目錄 cd進入目錄 sqlite3 test.db操作test.db     插入數據:      SQLiteDatabase db = openOrCreateDatabase("test",       Context.MODE_PRIVATE, null);       String sql = "insert into role(id,name) values(?,?)";       String[] values=new String[]{"11","系統管理員"};       db.execSQL(sql, values);    四、DDMS介紹 DDMS 的全稱是Dalvik Debug Monitor Service,為測試設備截屏,針對特定的進程查看正在運行的線程以及堆信息、Logcat、廣播狀態信息、模擬電話呼叫、接收SMS、虛擬地理坐標等等 FileExolorer文件浏覽 EmulatorControl模擬向模擬器發送短信,聲音。等    五、android.os.NetworkOnMainThreadException  android4.0後不能再主線程上執行下載需要使用異步 需要新建一個線程執行Runnable中的操作,然後把結果發送給Handler   復制代碼 1、新線程 new Thread(runnable).start(); 2、執行下載操作 Runnable runnable = new Runnable() {         @Override         public void run() {                             //執行下載操作                     Message msg = new Message(); //發送結果             handler.sendMessage(msg);         }     };       private Handler handler = new Handler() {         @Override         // 當有消息發送出來的時候就執行Handler的這個方法         public void handleMessage(Message msg) {             try {                 //處理結果                                    } catch (Exception e) {                 Log.e(e.getMessage(), e.toString());             }           }     };         復制代碼 2、當然要是真不想使用異步也可以直接下載的,需要設置下,怎麼設置大家找下度娘。    六、 java.net.SocketException: Permission denied (maybe missing INTERNET permission) 在android中想操作文件,上個網,查看通訊錄。啥的都需要開通相應的權限 需要把對應授權加到AndroidManifest.xml中     <uses-permission android:name="android.permission.INTERNET" />     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>   列幾個,這塊可以在android開發文檔中查找其他的    android.permission.ACCESS_CHECKIN_PROPERTIES 允許讀寫訪問”properties”表在checkin數據庫中,改值可以修改上傳( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)   android.permission.ACCESS_COARSE_LOCATION 允許一個程序訪問CellID或WiFi熱點來獲取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)   android.permission.ACCESS_FINE_LOCATION 允許一個程序訪問精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)   android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 允許應用程序訪問額外的位置提供命令(Allows an application to access extra location provider commands)   android.permission.ACCESS_MOCK_LOCATION 允許程序創建模擬位置提供用於測試(Allows an application to create mock location providers for testing)   android.permission.ACCESS_NETWORK_STATE 允許程序訪問有關GSM網絡信息(Allows applications to access information about networks)   android.permission.ACCESS_SURFACE_FLINGER 允許程序使用SurfaceFlinger底層特性(Allows an application to use SurfaceFlinger’s low level features)   android.permission.ACCESS_WIFI_STATE 允許程序訪問Wi-Fi網絡狀態信息(Allows applications to access information about Wi-Fi networks)   android.permission.ADD_SYSTEM_SERVICE 允許程序發布系統級服務(Allows an application to publish system-level services).    七、模擬器10.0.2.2 代表127.0.0.1 經常在模擬器中測試下載文件啥的,用127.0.0.1不行啦  八、http操作   沒有使用過java的人可以看下,我也是在網上找來的  復制代碼 package com.example.tools;   import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;   public class HttpDownLoad {     public String Download(String url) {         StringBuilder sb = new StringBuilder();         BufferedReader br = null;         String s;         try {             URL r = new URL(url);             HttpURLConnection con = (HttpURLConnection) r.openConnection();             br = new BufferedReader(new InputStreamReader(con.getInputStream()));             while ((s = br.readLine()) != null) {                 sb.append(s);             }         } catch (Exception ex) {             ex.printStackTrace();           } finally {             try {                 br.close();             } catch (IOException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }         }         return sb.toString();     }       public InputStream GetInputStream(String url) {         try {             URL r = new URL(url);             HttpURLConnection con = (HttpURLConnection) r.openConnection();             InputStream input = con.getInputStream();             return input;         } catch (Exception ex) {             ex.printStackTrace();             return null;         }     } } 復制代碼     九、操作XML之SAX  今天只跟大家分享下SAX這個輕量級的操作XML方法,他不像DOM那種把文件都加載到內存後再操作XML,我比較喜歡的   復制代碼 package cn.itcast.service;   import java.io.InputStream; import java.util.ArrayList; import java.util.List;   import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory;   import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler;   import cn.itcast.model.Person;   public class SAXPersonService {    public List<Person> getPersons(InputStream inStream) throws Throwable    {        SAXParserFactory factory = SAXParserFactory.newInstance();//工廠模式還是單例模式?        SAXParser parser =factory.newSAXParser();        PersonParse personParser =new PersonParse();        parser.parse(inStream, personParser);        inStream.close();        return personParser.getPerson();    }    private final class PersonParse extends DefaultHandler    {              private List<Person> list = null;     Person person =null;     private String tag=null;          public List<Person> getPerson() {         return list;     }     @Override     public void startDocument() throws SAXException {         list =new ArrayList<Person>();     }       @Override     public void startElement(String uri, String localName, String qName,             Attributes attributes) throws SAXException {         if("person".equals(localName))         {             //xml元素節點開始時觸發,是“person”             person = new Person();             person.setId(new Integer(attributes.getValue(0)));         }         tag =localName;//保存元素節點名稱     }     @Override     public void endElement(String uri, String localName, String qName)             throws SAXException {         //元素節點結束時觸發,是“person”         if("person".equals(localName))         {             list.add(person);             person=null;         }         tag =null;//結束時,需要清空tag         }     @Override     public void characters(char[] ch, int start, int length)             throws SAXException {         if(tag!=null)         {             String data = new String(ch,start,length);            if("name".equals(tag))            {                person.setName(data);                            }else if("age".equals(tag))            {                person.setAge(new Integer(data));            }         }     }                                  }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved