Android 开发笔记 一

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超短的判断IE javascript代码

首先说明该代码只能在IE 6~8中有效&#xff0c;再高级的IE已经修复这个BUG <script type’text/javascript’> var ie !-[1,]; alert(ie); //如果是ie&#xff0c;弹出true </script> 原因&#xff1a; 首先[1,]是个数组&#xff0c;由于有个逗号&#xff…

mysql命令导出数据库_MYSQL 数据库导入导出命令

在不同操作系统或MySQL版本情况下&#xff0c;直接拷贝文件的方法可能会有不兼容的情况发生。所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。MySQL命令行导出数据库1&#xff0c;进入MySQL目录下的bin文件夹&#xff1a;cd MySQL中到bin文件夹的目录如我输入的命令行&…

linux vmware 安装后无法桥接到物理网卡的解决办法

在linux下安装完vmware后&#xff0c;因为需要必须使用桥接网络&#xff0c;交接物理网卡总是显示could not connect /dev/vmnet0, 网上搜索了很多办法都无法解决&#xff0c;下面这个据说能解决&#xff0c;但还是不行&#xff0c;贴下来供大家参考&#xff1a;我安装了一下&a…

HDU2201

水&#xff5e; 分析&#xff1a;n&#xff0c;m。对于第一个人不抽到m号座位概率为&#xff08;n-1&#xff09;/n&#xff0c;第二个人为&#xff08;n-2&#xff09;/&#xff08;n-1&#xff09;.。。。第m个人为1/&#xff08;n-m1&#xff09;.。。。 相乘之后则为 1/n V…

字符设备驱动基础1——简单的驱动源代码分析

以下内容源于朱有鹏嵌入式课程的学习&#xff0c;如有侵权请告知删除。 参考博客&#xff1a;linux驱动开发&#xff08;一&#xff09; - biaohc - 博客园 一、驱动源代码示例 /********module_test.c代码*********/#include <linux/module.h> // module_init module…

mysql 数据检查_mysql数据一致性检查及修复

percona-toolkit-2.2.20-1.noarchmysql 5.6.29-logmaster:192.168.166.129slave:192.168.166.131一、创建数据库校验存放库CREATE DATABASE IF NOT EXISTS percona CHARACTER SET utf8;二、建立数据校验用户GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO checksu…

字符设备驱动基础3——使用register_chrdev()函数注册字符设备

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、系统工作原理 1、工作流程 系统的整体工作流程是&#xff1a;应用层—>API—>设备驱动—>硬件。 操作系统提供的API包括open、read、write、close等函数&#xff0c;它们只是一种操作逻…

win7在未关闭vmware情况下直接关机,导致虚拟机无法克隆

今天有点小激动啊&#xff0c;着急关机&#xff0c;结果发现重启之后的虚拟机不能进行克隆操作。系统提示如下&#xff1a;the Specific Virtual Disk Needs Repair .查询“度娘”&#xff0c;突然看到一篇文章说&#xff0c;删除这啊&#xff0c;修改那的....特别复杂&#xf…

hdu 1159(最长公共子序列)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1159 思路&#xff1a;dp[i][j]表示s1从0~i-1,s2从0~j-1的最长公共子序列&#xff1b; 递推方程为&#xff1a;dp[i][j](s1[i-1]s2[j-1])?d[i-1][j-1]1:max(dp[i-1][j],dp[i][j-1]); View Code 1 #include<…

mysql applier_MySQL推出Applier,可实时复制数据到Hadoop-阿里云开发者社区

http://labs.mysql.comMySQL复制操作可以将数据从一个MySQL服务器(主)复制到其他的一个或多个MySQL服务器(从)。试想一下&#xff0c;如果从服务器不再局限为一个MySQL服务器&#xff0c;而是其他任何数据库服务器或平台&#xff0c;并且复制事件要求实时进行&#xff0c;是否可…

字符设备驱动基础4——读写接口的操作实践

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、细节提要 1、与用户与内核数据交换有关的函数 &#xff08;1&#xff09;copy_from_user()函数 该将数据从用户空间复制到内核空间。 如果成功复制则返回0&#xff0c;如果不成功复制则返回尚未…

从 Google Code 迁移代码到 GitHub 上

从Google Code迁移代码到github上的步骤: 首先访问 https://github.com/nirvdrum/svn2git 安装svn2git工具。创建一个空白目录&#xff0c;进入该目录执行 svn2git http://xxxxx.googlecode.com/svn , 注意&#xff0c;以svn结尾&#xff0c;不要加/trunk导出完毕后&#xff0c…

LAMP架构,纯文本作品

&#xff08;一&#xff09;Apache服务的编译安装1. 查找软件包位置[rootlocalhost ~]#cd /soft/LNS/chapter05[rootlocalhost ~]#ls2.解压包到指定位置[rootlocalhost ~]#tar zxf httpd-2.2.17.tar.gz -C /usr/src/3.编译安装Apache[rootlocalhost ~]#cd /usr/src/httpd-2.2.1…

ef sqlserver切换到mysql_可以为MySql和SqlServer使用EF上下文吗?

我有两个实体框架上下文,一个用于MySql,一个用于sql.如果我运行该应用程序,则会出现以下错误The default DbConfiguration instance was used by the Entity Framework before the MySqlEFConfiguration type was discovered.但是,如果我确实通过给应用程序指定Database.SetIni…

字符设备驱动高级篇1——注册字符设备驱动的新接口

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、注册字符设备驱动的老接口 在《字符设备驱动基础》里&#xff0c;注册字符设备驱动使用的函数是register_chrdev()函数。 该函数的介绍&#xff0c;见博客字符设备驱动基础3——使用register_ch…

ural 1129 (求数据)

先记下来。在test 7wa了。如果谁有数据希望可以指点下。thx. 1 // File Name: 1129.cpp2 // Author: Missa3 // Created Time: 2013/3/12 星期二 17:31:534 5 #include<iostream>6 #include<cstdio>7 #include<cstring>8 #include<algorithm>9 #includ…

码农提高工作效率

原文链接http://www.cnblogs.com/huang0925/p/3612741.html 俗话说&#xff0c;天下武功&#xff0c;唯快不破。也就是说要练成天下高手的话&#xff0c;出招速度一定要快&#xff0c;这样才能在江湖上立足&#xff0c;不至于掉了脑袋。而程序员要在IT界混出个名堂&#xff0c;…

mysql分区表mycat_MySQL 中间件之Mycat垂直分表配置

垂直分表就是将一个库下的多个表拆分到多个MySQL实例&#xff0c;实现库压力分流。通过GTID模式复制&#xff0c;db01与db02之间不进行任何连接与复制当前环境&#xff1a;mycat --> db01与db02db01 --> db03db02 --> db04当前垂直分表架构&#xff1a;后端数据库创建…

Oracle Stream配置详细步骤

Oracle Stream配置详细步骤 作者: 杨宝秋,  出处:IT168 1 引言 Oracle Stream功能是为提高数据库的高可用性而设计的&#xff0c;在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle Stream利用高级队列技术&#xff0c;通过解析归档日志&#xff0c;将归档日…

字符设备驱动高级篇2——注册字符设备驱动的函数代码分析

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、旧接口register_chrdev()函数 上文说到&#xff0c;旧接口register_chrdev()函数内部同时完成了设备号的分配与驱动的注册&#xff0c;现在我们来分析是否真的如此。 1、函数的调用层次关系 …