日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 开发笔记 一

發(fā)布時間:2023/12/18 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 开发笔记 一 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考 :?http://www.cnblogs.com/nightkidzxc/archive/2011/12/14/2379010.html

?

1.得到 SD 卡的目錄 :?

? String SDPATH = Environment.getExternalStorageDriectory() + "/";

2.Activity 相當于 From?

  Activity 以 Dialog形式顯示在 Manifest中設置 : ?android:theme="@android:style/Theme.Dialog"

  透明 Activity :Theme:android:style/Theme.Translucent

3.多線程改變UI :?

public MyThread extends Thread {

  public void run() {

    // 在這里做一些 耗時的操作

    ....

    // 更新主界面的UI

    // View.post(Runnable runnable)

    TextView.post(new Runnable() {

      public void run() {

        textView.setText(".... something update....");

      }

    });

  }

}

4. 讓程序可以向 SD 卡中寫入文件, 要在 manifest 中加入 (這兩個標簽 要寫在 application 標簽的前面)

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

如果你的系統(tǒng)里有服務的話, 需要將服務注冊?

<service android:name=".BroadcastService"/>

5. Handler 與Thread 的個人理解的區(qū)別

Thread 是傳統(tǒng)的另開一個線程. 并將 一個 run() 方法 在這個線程中運行. 如果這個 run()方法結(jié)束. 那么這個 線程也將銷毀.

Handler 可以綁在一個HandlerThread 的線程上. HandlerThread 只是一個里面有 MessageQueue 及Looper的Thread. 也就是這個線程可以循環(huán)的處理接收到的消息,及提交上來的Runnable. ?這樣. 就可以隨時使用 Handler 去Post 一個耗時方法過去.讓它去執(zhí)行,而不影響UI線程. 就相當于一個 主線程的一個助手一樣. 耗時費力的活兒 都由它(HandlerThread) 去做了. 主線程只負責處理 UI上面的一些操作. ? 這是個非常好的設計. ?因為 傳統(tǒng)的Thread 一般就是干完一個活就銷毀了, 如果過一段時間還有其它的耗時操作, 就又得重新去開一個新的線程. ?沒有這種. 只使用 一個 HandlerThread 線程. 想做什么的時候.直接將方法 (Runnable) Post 過去處理.來的聰明方便!

?

1 // Handler Thread 2 HandlerThread ht = new HandlerThread("Handler_Thread"); 3 // Handler 對像,并將 HandlerThread 的Looper傳進去,這樣工作就都在 Handler Thread 上進行了.要不然會自動的綁定到當前線程的Looper上 4 Handler handler = new Handler(ht.getLooper()); 5 6 protected void onCreate(Bundle saveInstanceState) { 7 super.onCreate(saveInstanceState); 8 context = this; 9 10 // 開啟 Handler Thread 線程 11 ht.start(); 12 // 向線程里 Post 任務 13 handler.post(new Runnable() { 14 15 @Override 16 public void run() { 17 // TODO Auto-generated method stub 18 19 } 20 }); 21 }

?

?

?

?

6. adb shell 顯示 文件內(nèi)內(nèi)的命令是 : cat xxx.txt

7. 生成一個 XML Document?

// xml Document
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();

得到 根結(jié)點 : doc.getDocumentElement();

要使用 Document 來 創(chuàng)建ELement, ?Element el = doc.CreateElement("elementName");

通過元素名得到 結(jié)點列表 NodeList nodList = Element.getElementsByTagName(tagName);

得到節(jié)點的屬性 String property = Element.getAttribute(propertyName);

遍歷NodeList :

  NodeList nl = ?myXml.getElementsByTagName("user");

  for (int i = 0; i < nl.getLength(); i++) {
    Element el = (Element)(nl.item(i));

    // 通過子節(jié)點名得到子節(jié)點的 Inner Text (Inner Text 也算為結(jié)點 ?.getFirstChild().getNodeValue())

    String innerText = el.getElementsByTagName("subTagName").item(0).getFirstChild().getNodeValue();

  }

?8. SAX 解釋?

  // MyXmlHandler 繼承 DefaultHandler.

  MyXmlHandler myhandler = new MyXmlHandler();

  SAXParserFactory.newInstance().newSAXParser().parse(new File("d:/kao.xml"), myhandler);

9. ListView 中使用 SimpleAdapter 的使用:

public?SimpleAdapter?(Context?context,?List<??extends?Map<String,??>> data, int resource,?String[]?from, int[] to)

? ?構(gòu)造函數(shù) :

? ? ? context ? : 關聯(lián)SimpleAdapter運行著的視圖的上下文。

  data ? ? ? : ?一個Map的列表。在列表中的每個條目對應列表中的一行,應該包含所有在from中指定的條目 ArrayList<HashMap<String,String>>().

  resource ? : 每個Item對就的 XML布局文件

  from ? ? ? ?: new String[] {"xx","xx"} ,是Map 里面的 Key 的名稱列表

  to ? ? ? ? ? : new int[] {R.id.xx,R.id.xx...} 是與上面from 相對應的, 每個Key對應控件的ID.?

我們在 解釋XML文檔后. 一般會得到一個 ArrayList<UserModel> 這樣的一個列表. 先要能過它來生成一個 List<Map<String,Object>>. 也就是SampleAdapter 需要的數(shù)據(jù) Data

ArrayList<UserModel> Users ;

List<Map<String,Object>> data = new List<Map<String,Object>>();

for(Iterator iter = Users.Iterator ; iter.hasNext()) {

  UserModel um = (UserModel)iter.next();

  Map<String,Object> map = new Map<String,Object>();

  map.put("NAME",um.getName());

  map.put("AGE",um.getAge());

  data.add(map);

}

?得到了 Data 后. 我就就可以生成一個 SampleAdapter了

SimpleAdaper sa = new SimepleAdaper(this,data,R.layout.mylistview,new String[] {"NAME","AGE"},new int[] {R.id.name,R.id.age});

最后. 將 這個SimpleAdapter 綁定 ListView控件上即可

ListView.setAdapter(sa);

//? 這種直接 綁定的 Data 需要是在 項目的 res 文件中 也就是有R.id.xx的圖標文件, 但大多數(shù)時我們要從網(wǎng)絡或SD卡中提取要顯示的 圖標. 就不能直接這么用了. 你需要給 SimpleAdapter 設置一個ViewBinder ?

sa.setViewBinder(new ViewBinder() {

?public boolean setViewValue(View view, Object data,String textRepresentation) {

? ? ?if ((view instanceof ImageView) && (data instanceof Bitmap)) {
? ? ? ? ?ImageView iv = (ImageView)view;
? ? ? ? ?Bitmap bm = (Bitmap)data;
? ? ? ? ?iv.setImageBitmap(bm);
? ? ? ? return true;
? ? }
? ? return false;

?

});

設置完 ViewBinder 后, 再為 ListView設置 這個SimlpeAdapter

ListView.setAdapter(sa);

這樣就可以綁定 非res里的 外部數(shù)據(jù)了.?

?

10, 全屏及 隱藏標題欄狀態(tài)欄 (這些設置 要在 setContentView() 方法前設置)

// 全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

// 隱藏標題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);

// 隱藏狀態(tài)欄 (如果設定了全屏的話, 就已經(jīng)隱藏了狀態(tài)欄了)
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NO_STATUS_BAR, WindowManager.LayoutParams.FLAG_NO_STATUS_BAR);

轉(zhuǎn)載于:https://www.cnblogs.com/easyfrog/archive/2013/03/09/2951912.html

總結(jié)

以上是生活随笔為你收集整理的Android 开发笔记 一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。