参考 : 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"/>

如果你的系统里有服务的话, 需要将服务注册

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

5. Handler 与Thread 的个人理解的区别

Thread 是传统的另开一个线程. 并将 一个 run() 方法 在这个线程中运行. 如果这个 run()方法结束. 那么这个 线程也将销毁.

Handler 可以绑在一个HandlerThread 的线程上. HandlerThread 只是一个里面有 MessageQueue 及Looper的Thread. 也就是这个线程可以循环的处理接收到的消息,及提交上来的Runnable.  这样. 就可以随时使用 Handler 去Post 一个耗时方法过去.让它去执行,而不影响UI线程. 就相当于一个 主线程的一个助手一样. 耗时费力的活儿 都由它(HandlerThread) 去做了. 主线程只负责处理 UI上面的一些操作.   这是个非常好的设计.  因为 传统的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 显示 文件内内的命令是 : cat xxx.txt

7. 生成一个 XML Document 

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

得到 根结点 : doc.getDocumentElement();

要使用 Document 来 创建ELement,  Element el = doc.CreateElement("elementName");

通过元素名得到 结点列表 NodeList nodList = Element.getElementsByTagName(tagName);

得到节点的属性 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));

    // 通过子节点名得到子节点的 Inner Text (Inner Text 也算为结点  .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)

构造函数 :

context   : 关联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 需要的数据 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的图标文件, 但大多数时我们要从网络或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里的 外部数据了.

10, 全屏及 隐藏标题栏状态栏 (这些设置 要在 setContentView() 方法前设置)

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

// 隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);

// 隐藏状态栏 (如果设定了全屏的话, 就已经隐藏了状态栏了)
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NO_STATUS_BAR, WindowManager.LayoutParams.FLAG_NO_STATUS_BAR);

转载于:https://www.cnblogs.com/easyfrog/archive/2013/03/09/2951912.html

Android 开发笔记 一相关推荐

  1. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述

    1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...

  2. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步...

    1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...

  3. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据编辑...

    1.前言 在上一篇我们已经实现了离线地理数据库的下载,这一篇我们着重介绍离线数据库的加载与编辑. 由于ArcGIS Runtime SDK for Android 10.2.X版本并没提供要素绘制功能 ...

  4. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据下载...

    1.前言 1.1.环境准备: ArcGIS for Desktop 10.4.1(10.2.1以上版本即可) ArcGIS for Server 10.4.1 (10.2.1以上版本即可) Postg ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用...

    1.前言 学习ArcGIS Runtime SDK开发,其实最推荐的学习方式是直接看官方的教程.示例代码和帮助文档,因为官方的示例一般来说都是目前技术最新,也是最详尽的.对于ArcGIS Runtim ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》

    开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>--(1).And ...

  7. Android开发笔记(序)写在前面的目录

    知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...

  8. Android开发笔记(一百七十九)避免方法数过多的问题

    一个大规模的App工程,往往引入了数量繁多的第三方开发库,其中既有官方的Jetpack库,也有第三方厂商的开源包.有时候运行这种App会报错"Cannot fit requested cla ...

  9. Android开发笔记(一百七十八)更安全的数据仓库DataStore

    虽然SharedPreferences用起来比较方便,但是在一些特殊场景会产生问题.比如共享参数保存的数据较多时,初始化共享参数会把整个文件加载进内存,加载耗时可能导致主线程堵塞.又如调用apply方 ...

  10. Android开发笔记(一百七十七)借助FileProvider安装应用

    除了发送彩信需要文件提供器,安装应用也需要FileProvider.不单单彩信的附件图片能到媒体库中查询,应用的APK安装包也可在媒体库找到.查找安装包依然借助于内容解析器,具体的实现过程和查询图片类 ...

最新文章

  1. 买得嗨更要聊得嗨 阿里通免费电话惠战双11
  2. 基于shiro的改造集成真正支持restful请求
  3. SAP WebIDE里的JavaScript代码检查code check
  4. 《零基础看得懂的C++入门教程 》——(8)搞定二维数组与循环嵌套
  5. 断电,软件崩溃,系统中毒,未点击保存,就关闭导致资料丢失,以word文件文件为例,如何找回
  6. 在centos 下安装和使用MySQL
  7. DMA流程简介--CPU/内存/网卡之间的交互
  8. 使用Python爬取mobi格式电纸书
  9. Mysql连接报错:1130-host ... is not allowed to connect to this MySql server
  10. CSS-四种引入方式
  11. load和loads的区别
  12. 快解析助力服装企业实现ERP远程外网访问
  13. MagicDraw-IBD图
  14. 数字图像处理锐化的原理_数字图像锐化的工作原理以及为什么要使用它
  15. 各种模拟器端口号及模拟器连接方式
  16. kindle如何设置不闪屏_kindle闪屏怎么解决
  17. 程序员必备注释模板——“佛祖保佑 永无bug“
  18. echo相关参数 -e -n
  19. 国产化操作系统的参考
  20. C 语言吧 · 问题资料大全

热门文章

  1. mysql 多条记录选择一套_2020-11-09-Mysql(练习题第一套)
  2. java 对象克隆_JAVA对象克隆
  3. Maven+Tomcat的热部署方案
  4. Linux实验四:编译和调试工具的使用
  5. 百度校招历年经典面试题汇总:Java开发岗
  6. leetcode453. 最小操作次数使数组元素相等(贼难的简单题)
  7. (多线程)leetcode1114. 按序打印 认识AtomicInteger
  8. 《Python Cookbook 3rd》笔记(1.6):字典中的键映射多个值
  9. C语言 项目练习-家庭收支软件
  10. Java命令:jstat — 查看JVM的GC信息