bcoder

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
3月 122013
 

 

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地址和端口号,在工具栏上会多一个图标按钮用于快速连接

2月 192013
 

1. Java中Byte数组与int类型的转换

1) 方法一

 

 

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时为其他组件获得焦点此组件失去焦点时触发。

1月 172013
 

注意:
1. 使用WM_SYSCOMMAND时,鼠标的一些消息可能会受到影响,比如不能响应MouseUp事件,可以在窗口中捕获WM_SYSCOMMAND消息,并判断消息的CommandType来判断消息执行完毕的情况

SC_CLOSE 关闭窗口
SC_HOTKEY Activate the window associated with the application-specified hot key.
SC_HSCROLL Scroll horizontally.
SC_KEYMENU Retrieve a menu through a keystroke.
SC_MAXIMIZE 最大化窗口
SC_MINIMIZE 最小化窗口.
SC_MOUSEMENU Retrieve a menu through a mouse click.
SC_MOVE Move the window.
SC_NEXTWINDOW Move to the next window.
SC_PREVWINDOW Move to the previous window.
SC_RESTORE Save the previous coordinates (checkpoint).
SC_SCREENSAVE 激活屏幕保护程序.
SC_SIZE Size the window.
SC_TASKLIST 激活开始菜单.
SC_VSCROLL Scroll vertically.
SC_MONITORPOWER 关闭显示器(LPARAM为非0参数)
SC_SEPARATOR
SC_CONTEXTHELP 显示帮助
SC_DEFAULT

SC_SIZE = $F000
SC_MOVE = $F010
SC_MINIMIZE = $F020
SC_MAXIMIZE = $F030
SC_NEXTWINDOW = $F040
SC_PREVWINDOW = $F050
SC_CLOSE = $F060
SC_VSCROLL = $F070
SC_HSCROLL = $F080
SC_MOUSEMENU = $F090
SC_KEYMENU = $F100
SC_ARRANGE = $F110
SC_RESTORE = $F120
SC_TASKLIST = $F130
SC_SCREENSAVE = $F140
SC_HOTKEY = $F150
SC_DEFAULT = $F160
SC_MONITORPOWER = $F170
SC_CONTEXTHELP = $F180
SC_SEPARATOR = $F00F
有的时候我们看到一些这里没有的命令,比如用鼠标拖动控件时用的panel1.Perform(WM_SYSCOMMAND, $F012, 0);这个$F012这个命令在定义里没有,其实它是SC_MOVE or 2的结果,微软的文档中提到WM_SYSCOMMAND命令中wParam的值的低4位值是保留的。
举例说明:
在Form的MouseDown事件里写如下代码
ReleaseCapture;
Perform(WM_SYSCOMMAND, SC_SIZE OR 1, 0); // Left
Perform(WM_SYSCOMMAND, SC_SIZE OR 2, 0); // Right
Perform(WM_SYSCOMMAND, SC_SIZE OR 3, 0); // Top
Perform(WM_SYSCOMMAND, SC_SIZE OR 4, 0); // left-top
Perform(WM_SYSCOMMAND, SC_SIZE OR 5, 0); // Right-top
Perform(WM_SYSCOMMAND, SC_SIZE OR 6, 0); // bottom
Perform(WM_SYSCOMMAND, SC_SIZE OR 7, 0); // left-bottom
Perform(WM_SYSCOMMAND, SC_SIZE OR 8, 0); // right-bottom

Listview实现移动功能

 分类:Other 阅读 (2,406)  No Responses »
1月 122013
 

在Delphi的ListView中实现向上移动或者向下移动某行的功能,代码如下:

 

在Android中使用TabHost

 分类:Android 阅读 (1,944)  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属性为要设置的属性的值,节点中的内容为要设置的值。