5月 082013
 

  如何使用:在Eclipse中,打开项目下的res\values目录,在values上右键,新建->Other->Android XML File,Resource Type那选择Values,输入文件的名字,如:mycolors,点“确定”,把下面表格中的文字复制到新建的文件中。在设计界面静态调用时为@color/blue,在java代码中为getResources().getColor(R.color.hotpink)

  因为页面复制过去的xml包含中文特殊字符,大家可以点击这里下载此xml文件 mycolors.xml

<?xml version=”1.0″ encoding=”utf-8″ ?>  
<resources>  
<color name=”white”>#ffffff</color><!–白色 –>  
<color name=”ivory”>#fffff0</color><!–象牙色 –>  
<color name=”lightyellow”>#ffffe0</color><!–亮黄色 –>  
<color name=”yellow”>#ffff00</color><!–黄色 –>  
<color name=”snow”>#fffafa</color><!–雪白色 –>  
<color name=”floralwhite”>#fffaf0</color><!–花白色 –>  
<color name=”lemonchiffon”>#fffacd</color><!–柠檬绸色 –>  
<color name=”cornsilk”>#fff8dc</color><!–米绸色 –>  
<color name=”seaShell”>#fff5ee</color><!–海贝色 –>  
<color name=”lavenderblush”>#fff0f5</color><!–淡紫红 –>  
<color name=”papayawhip”>#ffefd5</color><!–番木色 –>  
<color name=”blanchedalmond”>#ffebcd</color><!–白杏色 –>  
<color name=”mistyrose”>#ffe4e1</color><!–浅玫瑰色 –>  
<color name=”bisque”>#ffe4c4</color><!–桔黄色 –>  
<color name=”moccasin”>#ffe4b5</color><!–鹿皮色 –>  
<color name=”navajowhite”>#ffdead</color><!–纳瓦白 –>  
<color name=”peachpuff”>#ffdab9</color><!–桃色 –>  
<color name=”gold”>#ffd700</color><!–金色 –>  
<color name=”pink”>#ffc0cb</color><!–粉红色 –>  
<color name=”lightpink”>#ffb6c1</color><!–亮粉红色 –>  
<color name=”orange”>#ffa500</color><!–橙色 –>  
<color name=”lightsalmon”>#ffa07a</color><!–亮肉色 –>  
<color name=”darkorange”>#ff8c00</color><!–暗桔黄色 –>  
<color name=”coral”>#ff7f50</color><!–珊瑚色 –>  
<color name=”hotpink”>#ff69b4</color><!–热粉红色 –>  
<color name=”tomato”>#ff6347</color><!–西红柿色 –>  
<color name=”orangered”>#ff4500</color><!–红橙色 –>  
<color name=”deeppink”>#ff1493</color><!–深粉红色 –>  
<color name=”fuchsia”>#ff00ff</color><!–紫红色 –>  
<color name=”magenta”>#ff00ff</color><!–红紫色 –>  
<color name=”red”>#ff0000</color><!–红色 –>  
<color name=”oldlace”>#fdf5e6</color><!–老花色 –>  
<color name=”lightgoldenrodyellow”>#fafad2</color><!–亮金黄色 –>  
<color name=”linen”>#faf0e6</color><!–亚麻色 –>  
<color name=”antiquewhite”>#faebd7</color><!–古董白 –>  
<color name=”salmon”>#fa8072</color><!–鲜肉色 –>  
<color name=”ghostwhite”>#f8f8ff</color><!–幽灵白 –>  
<color name=”mintcream”>#f5fffa</color><!–薄荷色 –>  
<color name=”whitesmoke”>#f5f5f5</color><!–烟白色 –>  
<color name=”beige”>#f5f5dc</color><!–米色 –>  
<color name=”wheat”>#f5deb3</color><!–浅黄色 –>  
<color name=”sandybrown”>#f4a460</color><!–沙褐色 –>  
<color name=”azure”>#f0ffff</color><!–天蓝色 –>  
<color name=”honeydew”>#f0fff0</color><!–蜜色 –>  
<color name=”aliceblue”>#f0f8ff</color><!–艾利斯兰 –>  
<color name=”khaki”>#f0e68c</color><!–黄褐色 –>  
<color name=”lightcoral”>#f08080</color><!–亮珊瑚色 –>  
<color name=”palegoldenrod”>#eee8aa</color><!–苍麒麟色 –>  
<color name=”violet”>#ee82ee</color><!–紫罗兰色 –>  
<color name=”darksalmon”>#e9967a</color><!–暗肉色 –>  
<color name=”lavender”>#e6e6fa</color><!–淡紫色 –>  
<color name=”lightcyan”>#e0ffff</color><!–亮青色 –>  
<color name=”burlywood”>#deb887</color><!–实木色 –>  
<color name=”plum”>#dda0dd</color><!–洋李色 –>  
<color name=”gainsboro”>#dcdcdc</color><!–淡灰色 –>  
<color name=”crimson”>#dc143c</color><!–暗深红色 –>  
<color name=”palevioletred”>#db7093</color><!–苍紫罗兰色 –>  
<color name=”goldenrod”>#daa520</color><!–金麒麟色 –>  
<color name=”orchid”>#da70d6</color><!–淡紫色 –>  
<color name=”thistle”>#d8bfd8</color><!–蓟色 –>  
<color name=”lightgray”>#d3d3d3</color><!–亮灰色 –>  
<color name=”lightgrey”>#d3d3d3</color><!–亮灰色 –>  
<color name=”tan”>#d2b48c</color><!–茶色 –>  
<color name=”chocolate”>#d2691e</color><!–巧可力色 –>  
<color name=”peru”>#cd853f</color><!–秘鲁色 –>  
<color name=”indianred”>#cd5c5c</color><!–印第安红 –>  
<color name=”mediumvioletred”>#c71585</color><!–中紫罗兰色 –>  
<color name=”silver”>#c0c0c0</color><!–银色 –>  
<color name=”darkkhaki”>#bdb76b</color><!–暗黄褐色 –>  
<color name=”rosybrown”>#bc8f8f</color><!–褐玫瑰红 –>  
<color name=”mediumorchid”>#ba55d3</color><!–中粉紫色 –>  
<color name=”darkgoldenrod”>#b8860b</color><!–暗金黄色 –>  
<color name=”firebrick”>#b22222</color><!–火砖色 –>  
<color name=”powderblue”>#b0e0e6</color><!–粉蓝色 –>  
<color name=”lightsteelblue”>#b0c4de</color><!–亮钢兰色 –>  
<color name=”paleturquoise”>#afeeee</color><!–苍宝石绿 –>  
<color name=”greenyellow”>#adff2f</color><!–黄绿色 –>  
<color name=”lightblue”>#add8e6</color><!–亮蓝色 –>  
<color name=”darkgray”>#a9a9a9</color><!–暗灰色 –>  
<color name=”darkgrey”>#a9a9a9</color><!–暗灰色 –>  
<color name=”brown”>#a52a2a</color><!–褐色 –>  
<color name=”sienna”>#a0522d</color><!–赭色 –>  
<color name=”darkorchid”>#9932cc</color><!–暗紫色 –>  
<color name=”palegreen”>#98fb98</color><!–苍绿色 –>  
<color name=”darkviolet”>#9400d3</color><!–暗紫罗兰色 –>  
<color name=”mediumpurple”>#9370db</color><!–中紫色 –>  
<color name=”lightgreen”>#90ee90</color><!–亮绿色 –>  
<color name=”darkseagreen”>#8fbc8f</color><!–暗海兰色 –>  
<color name=”saddlebrown”>#8b4513</color><!–重褐色 –>  
<color name=”darkmagenta”>#8b008b</color><!–暗洋红 –>  
<color name=”darkred”>#8b0000</color><!–暗红色 –>  
<color name=”blueviolet”>#8a2be2</color><!–紫罗兰蓝色 –>  
<color name=”lightskyblue”>#87cefa</color><!–亮天蓝色 –>  
<color name=”skyblue”>#87ceeb</color><!–天蓝色 –>  
<color name=”gray”>#808080</color><!–灰色 –>  
<color name=”grey”>#808080</color><!–灰色 –>  
<color name=”olive”>#808000</color><!–橄榄色 –>  
<color name=”purple”>#800080</color><!–紫色 –>  
<color name=”maroon”>#800000</color><!–粟色 –>  
<color name=”aquamarine”>#7fffd4</color><!–碧绿色 –>  
<color name=”chartreuse”>#7fff00</color><!–黄绿色 –>  
<color name=”lawngreen”>#7cfc00</color><!–草绿色 –>  
<color name=”mediumslateblue”>#7b68ee</color><!–中暗蓝色 –>  
<color name=”lightslategray”>#778899</color><!–亮蓝灰 –>  
<color name=”lightslategrey”>#778899</color><!–亮蓝灰 –>  
<color name=”slategray”>#708090</color><!–灰石色 –>  
<color name=”slategrey”>#708090</color><!–灰石色 –>  
<color name=”olivedrab”>#6b8e23</color><!–深绿褐色 –>  
<color name=”slateblue”>#6a5acd</color><!–石蓝色 –>  
<color name=”dimgray”>#696969</color><!–暗灰色 –>  
<color name=”dimgrey”>#696969</color><!–暗灰色 –>  
<color name=”mediumaquamarine”>#66cdaa</color><!–中绿色 –>  
<color name=”cornflowerblue”>#6495ed</color><!–菊兰色 –>  
<color name=”cadetblue”>#5f9ea0</color><!–军兰色 –>  
<color name=”darkolivegreen”>#556b2f</color><!–暗橄榄绿 –>  
<color name=”indigo”>#4b0082</color><!–靛青色 –>  
<color name=”mediumturquoise”>#48d1cc</color><!–中绿宝石 –>  
<color name=”darkslateblue”>#483d8b</color><!–暗灰蓝色 –>  
<color name=”steelblue”>#4682b4</color><!–钢兰色 –>  
<color name=”royalblue”>#4169e1</color><!–皇家蓝 –>  
<color name=”turquoise”>#40e0d0</color><!–青绿色 –>  
<color name=”mediumseagreen”>#3cb371</color><!–中海蓝 –>  
<color name=”limegreen”>#32cd32</color><!–橙绿色 –>  
<color name=”darkslategray”>#2f4f4f</color><!–暗瓦灰色 –>  
<color name=”darkslategrey”>#2f4f4f</color><!–暗瓦灰色 –>  
<color name=”seagreen”>#2e8b57</color><!–海绿色 –>  
<color name=”forestgreen”>#228b22</color><!–森林绿 –>  
<color name=”lightseagreen”>#20b2aa</color><!–亮海蓝色 –>  
<color name=”dodgerblue”>#1e90ff</color><!–闪兰色 –>  
<color name=”midnightblue”>#191970</color><!–中灰兰色 –>  
<color name=”aqua”>#00ffff</color><!–浅绿色 –>  
<color name=”cyan”>#00ffff</color><!–青色 –>  
<color name=”springgreen”>#00ff7f</color><!–春绿色 –>  
<color name=”lime”>#00ff00</color><!–酸橙色 –>  
<color name=”mediumspringgreen”>#00fa9a</color><!–中春绿色 –>  
<color name=”darkturquoise”>#00ced1</color><!–暗宝石绿 –>  
<color name=”deepskyblue”>#00bfff</color><!–深天蓝色 –>  
<color name=”darkcyan”>#008b8b</color><!–暗青色 –>  
<color name=”teal”>#008080</color><!–水鸭色 –>  
<color name=”green”>#008000</color><!–绿色 –>  
<color name=”darkgreen”>#006400</color><!–暗绿色 –>  
<color name=”blue”>#0000ff</color><!–蓝色 –>  
<color name=”mediumblue”>#0000cd</color><!–中兰色 –>  
<color name=”darkblue”>#00008b</color><!–暗蓝色 –>  
<color name=”navy”>#000080</color><!–海军色 –>  
<color name=”black”>#000000</color><!–黑色 –>  
</resources>  
4月 172013
 

 

其他注意事项:

1、如何设置自己的Dialogfragment没有标题栏?
可以通过两种方法来设置 ,一种是使用dialogfragment的setStyle函数,另外就是使用getDialog().getWindow().requestFeature方法,具体代码如下

使用getDialog的方法

2. The method show(FragmentManager, String) in the type DialogFragment is not applicable for the arguments (FragmentManager, String)

此问题常是由于你所自定义的DialogFragment子类继承自android.app.dialogfragment,而非继承自android.support.v4.app.DialogFragment,解决办法就是将你的自定义的DialogFragment子类继承自android.support.v4.app.DialogFragment。如下所示:

 

3月 222013
 

When we begin to run a android application, eclipse sometimes gives an “The connection to adb is down” error, just like below message.

[2013-03-22 22:08:02 – testapp] The connection to adb is down, and a severe error has occured.
[2013-03-22 22:08:02 – testapp] You must restart adb and Eclipse.
[2013-03-22 22:08:02 – testapp] Please ensure that adb is correctly located at ‘E:android-sdkplatform-toolsadb.exe’ and can be executed.

At before, I restart computer to fix the problem. But now, I get a faster solution for this message, copy the adb path in error message, here is “E:android-sdkplatform-toolsadb.exe”, and paste in the address bar of an explorer or paste in the textbox of Run window(press WIN+R key to open it) and press enter button to run adb once. And then eclipse works well.

If this does not work, kill adb.exe process in task manager, and resatrt eclipse.

If the problem is still exist, you should restart your computer.

复制错误信息中adb的路径,在这里是E:android-sdkplatform-toolsadb.exe,然后粘贴到文件夹地址栏或者运行窗口中,执行adb.exe一次即可解决错误。

如果上面这样不行的话,在任务管理器中结束adb.exe,然后重新启动Eclipse.

如果还不行就只能重新启动你的系统了。

 Posted by on 2013-03-22
2月 242013
 

原来一直在想,既然手机都有了无线网络或者蓝牙技术,为什么调试的时候还需要用数据线来弄,来回插拔麻烦不说,还得一直拖着个数据线。前几天在网上搜罗了一下,终于找到可以省掉数据线而用Wifi来调试的方法了。

据说在手机或者平板没有root的情况下也可以实现Wifi调试,但是笔者试验未成功,但是还是把办法来讲一下吧。

测试环境:手机HTC EVO 3d(HTC g17),Android版本4.0.3

没有Root系统时进行wifi连接调试的办法:

1、需要先插上数据线
2、打开一个命令行窗口,将目录切换到android-sdkplatform-tools目录下,执行adb tcpip 5555,将adb的连接方式切换到wifi
3、假设你手机的ip地址为192.168.0.100,在命令行窗口中执行adb connect 192.168.0.100,如果后面不加”:portnumber”则默认端口号为5555,如果成功会显示connected to 192.168.0.100:5555
4、使用adb devices命令可以显示已连接的设备。192.168.0.100:5555      device表示连接成功,192.168.0.100:5555      offline表示连接有问题。
5、如果需要用usb进行调试则执行adb usb命令

本人用上述方法未能成功连上wifi调试,没办法只能把手机系统root

Root后进行wifi连接调试的办法:

1、在手机上下载adbWireless,打开并开启wifi调试
2、 打开一个命令行窗口,将目录切换到android-sdkplatform-tools目录下,执行adb tcpip 5555,将adb的连接方式切换到wifi
3、 假设你手机的ip地址为192.168.0.100,在命令行窗口中执行adb connect 192.168.0.100,如果后面不加”:portnumber”则默认端口号为5555,如果成功会显示connected to 192.168.0.100:5555
4、使用adb devices命令可以显示已连接的设备。192.168.0.100:5555      device表示连接成功,192.168.0.100:5555      offline表示连接有问题。
5、如果需要用usb进行调试则执行adb usb命令

Eclipse插件支持

有一个插件可以用在Eclipse中以快速连接wifi调试,插件地址为http://ppareit.github.com/AdbConnect/,安装方法为打开菜单“帮助-〉安装新软件”,输入http://ppareit.github.com/AdbConnect/做为更新站点,安装完毕后在菜单“窗口-〉首选项-〉Android-〉Adb Connect”中设置手机的ip地址和端口号,在工具栏上会多一个图标按钮用于快速连接

1月 212013
 

设计Android的界面的时候,一直看着列表框中有Custom & Library Views这么一项,知道这是用于放自己开发的组件库的地方,但是不知道是如何添加自己的组件的,今天稍研究了一下,原来还是挺简单的。简单说一下其中的步骤:

1. 首先建一个Android项目或者在你已经有的Android的项目中实现也行

2. 为了规范化代码,建议你先在项目下建立一个widget的package,这样自己开发的组件都放在这个目录下,便于管理

3. 新建一个类,此类要继承自某个已存在的View类,比如你要实现一个自己的Button类那么就继承自android.widget.Button,类创建好后就能看到Custom & Library Views中已经有你新建的组件了

4. 下面就该实现具体的组件代码了。

Android的组件往往功能提供的很多,但又不能完全达到用户的需求,而且实现的耦合性比较强,真正改写一个自己用的组件还是挺麻烦的事。

 Posted by on 2013-01-21
1月 212013
 

  我们有时会在开发中,使用按钮的focus选项来实现类似Tab标签页的效果,当用户按下某个按钮后,这个按钮就显示另外一种被按下的效果,以表示用户当前浏览的是哪种类型数据。允许组件有焦点效果首先要设置focusable属性为true,然后把android:focusableInTouchMode属性也设置为true。

  需要注意的是,当设置组件可以获得焦点的时候,这个组件就不能响应android:onClick事件了,如果你把实现功能的代码写到onClick事件里的话,是不能看到程序执行的。那么这时候我们就得用组件的setOnFocusChangeListener来设置一个事件来监听组件获得和失去焦点的状态,然后把相关的代码放到这个事件里。下面是一个代码片断:

 

  其中hasFocus为true时为组件获得焦点,被按下的状态,为false时为其他组件获得焦点此组件失去焦点时触发。

在Android中使用TabHost

 分类:Android 阅读 (1,073)  No Responses »
1月 032013
 

使用TabHost的注意事项:

  1. 在API13 Android3.2之后Android的SDK中提供了ActionBar,可以做出TabHost的效果,而且还有很多其他的功能,所以就不推荐使用TabHost了
  2. 使用TabHost的类必须继承自TabActivity,然后通过getTabHost()来获取界面上的TabHost组件
  3. TabHost在Layout.xml中,id属性必须定义为如下格式:android:id=”@android:id/tabhost”

 

12月 302012
 

有的时候我们需要为自己的程序提供几种不同的界面风格以供不同的用户根据喜好选择使用,在桌面程序中我们通常是使用xml或者ini配置文件来存储配置信息并将不同的皮肤相关图片文件放在不同的目录中实现,在web开中是使用不同的CSS文件来进行此类功能的实现,那么在Android中是如何来实现的呢。

Android中提供了类似css的机制,即Style和Theme。Theme是用于某个Activity或者整个程序中的,Style则是用于Activity中的某个View的。

Android中内置了几个主题比如Theme.Black, Theme.Light, Theme.Light.NoTitleBar, Theme.Holo等。

如何设置主题

我们可以通过在项目的AndroidManifest.xml中的Application或者Activity的节点中静态的设置它的主题,为该节点增加一个android:theme属性即可,具体看下面的例子

如果Activity和Application都设置了android:theme属性,则Activity的属性会把Application中的属性覆盖。如果是设置自定义主题则用如下语法

需要注意的是:对于有些系统内置的主题对sdk版本是有要求的,即android:minSdkVersion中设置的版本要大于等于主题对应的版本才可以使用。

添加自定义主题

系统中内置的主题毕竟很少,那么我们平时开发程序时需要定制自己的主题,以丰富程序的界面。我们可以通过在res/values下新建一个styles.xml来添加自己的主题。styles.xml的结构大致如下

根节点resources为固定的节点。style节点中name属性设置自定义主题的名称,parent属性设置该主题继承自哪个主题。item节点中的name属性为要设置的属性的值,节点中的内容为要设置的值。

 

 

12月 272012
 

Sax其实只是一个封装了对XML支持的字符串解析器,sax不像DOM方法要把文件全部加载到内存后再进行解析,而是一边读取文件内容一边对已读取的内容进行解析,它提供的一些方法比如startDocument, startElement等都是在读取到相关的内容后抛出的事件,以便我们可以在此时将数据存到自己的数据结构中。

因为解析XML的时候,要在一个继承自DefaultHandler的类中进行,所以最好对要解析的XML数据定义一个类,创建这个类的实例数组来接收数据。本例中要使用的XML文件如下:

所以,在实现解码前我先定义了一个类用于传递XML数据

与DOM解析类似,要使用Sax解析必须先创建一个SAXParserFactory,并在此对象中设置一此属性。

SAXParserFactory创建后使用此对象创建一个SAXParser

按说这时候我们该用saxP的Parse方法来解析XML了,但是我们还没负责解析的DefaultHanlder类,让我们转过头来创建一个解析某XML的DefaultHanlder类吧。

注意:在characters中,我们使用的是tmpUData.webSite = tmpUData.webSite.concat(str);,并不是将str直接赋给tmpUData.webSite, 这是因为character并不一定能将节点内的数据一次全部读取完毕,对于长数据是分块一点一点读进来的,所以如果是直接赋值可能造成只取到了最后一部分数据。

用于解析的DefaultHandler类创建好后,我们就可以继续来解析XML文件了,具体代码如下:

 

 

 

 Posted by on 2012-12-27
12月 252012
 

在Android开发中我们可以通过DOM、Sax、Pull这几种方法来操作XML。其中DOM是大家都比较熟悉的方法,如果使用过其他开发工具的人肯定也都用过相应的DOM方法来解析过XML。

要在Android中操作XML必须先要定义一个DocumentBuilderFactory实例,此实例用于设置一些解析时相关的属性,比如是否解析comment类型的节点、是否忽略xml文件内容中的空白字符等,另外比较重要的一点是,它的newDocumentBuilder函数是用来创建一个DocumentBuilder对象的。该类的实例由它本身的一个静态函数newInstance来创建。

创建了DocumentBuilderFactory并设置相关的属性(如果需要)后,我们就可以创建一个DocumentBuilder对象了。DocumentBuilder对象是用来从各种源(输入流、文件、URL、InputSource)中载入XML文档的类,并不负责操作XML中的各节点和属性。

有了DocumentBuilder我们就可以从不同的源中载入xml文档了,我们需要使用Parse函数。如:

如果是要从一个xml字符串中加载xml则可以使用如下方法

也许你是要创建一个全新的XML文档并在此基础上添加数据,那么你可以使用如下代码:

下面代码介绍如何读取XML中的内容,XML文件内容如下:

下面的代码读取XML内容并显示到一个EditText中

 

其中的几个常用的函数为:
getChildNodes(): 获取某节点下的所有子节点
getNodeName(): 获取节点的名称
getAttributes().getNamedItem(“ID”).getNodeValue(): 获取节点中属性名为ID的值
getFirstChild(): 获取某节点下的第一个子节点
getNextSibling(): 获取某个节点的紧邻的下一个节点
getNodeType(): 获取节点的类型,通过需要判断节点类型为Node.ELEMENT_NODE才继续解析,关于xml的节点类型请参考此文章
getTextContent(): 获取某节点中所包括的文本内容

向XML文件中添加数据的代码

 

其他问题:

1. 使用该方法解析xml时出现Unexpected token (position:TEXT @1:2 in java.io.StringReader@40e31480) 的错误,解决办法:因为要解析的xml文件使用的是UTF8带BOM的格式,所以在解析的时候出现错误,将xml的编码格式改为UTF8无BOM格式后问题解决。