Appengine | Sign in

云在千峰


修改 EditText 中的光标位置

Android 的 EditText 控件默认获取焦点的时候, 插入光标是在第一个位置的,如果EditText中设置了文本, 这个时候光标是在文本的最前面, 而不是文本的最后. 为了方便用户使用, 需要把光标移动到文本最后, 但是EditText 没有提供 setCursor 函数. 经查看其文档 发现 setSelection 函数可以完成该功能. 如下:
| no comments | 标签: at

Logcat 输出中文乱码问题

在用Eclipse开发Android程序的时候, Logcat打印出来的中文内容为乱码, 以前没有很好的解决方式,现在使用最新的ADT (9.0.0-Pre3) 插件可以解决该问题
插件下载 http://goodev.googlecode.com/files/ADT-9.0.0-preview3.zip
插件更新页面: http://tools.android.com/download/ 需翻墙
| no comments | 标签: android, at

Android: convert view to bitmap

数在Bitmap上绘制出来就可以了. 但是如果该View还没有在界面上显示(也就是还没有绑定到一个窗口上,View的parent为null)的情况下,draw出来的Bitmap是没有内容的, 这是因为该View还没有初始化,View所占用的宽度和高度都没有确定, 无法绘制. 这中情况下要绘制View到Bitmap就必需先告诉该View的尺寸,然后在draw. 代码如下:
| no comments | 标签: at

Android App 也开始分级了

从今天(12月1号)开始Google 正式启用Android App 分级制度,现在新加入的应用都必须指定对应的等级,App一共有4个等级 All(所有),Pre-teen(9 岁至 13 岁),teen(青少年)和Mature(成年人). 对于你以前发布的应用 今天可以修改应用的分级了,如果你没有修改 则Google 默认的等级为 成年人. 下面是关于App如何判定等级的指导规则,根据下面的规则可以看出 只要您的App包含了 访问位置的权限 则就不能使用"All"分级了. 在Android Market控制台中 如果您的app包含了该权限则App分级的All选项被服务器禁用了.
| no comments | 标签: android, at

Android: 保持屏幕不变黑(不锁屏)

特殊的App可能需要保持屏幕不变黑 以方便用户查询信息 而不用每隔一段时间去触摸一下手机. 例如: nexus one手机插入底座的时候 会显示Clock界面 并保持屏幕不锁屏. 在用户使用炒股软件查看行情的时候 也可以保持屏幕不变黑 这样用户就可以随时查看行情信息了. 通过PowerManager可以很容易的实现该功能
| no comments | 标签: at

Android 定时器

对于一个Java开发者来说,想到定时器(计时器,倒计时)的应用 一般都会想到使用 java.util.Timer 和 java.util.TimerTask , 在Android中使用这2个类也可以实现计时的功能 但是使用起来还是有点麻烦的, 特别是在UI界面需要更新的时候, 例如 实现一个倒计时的界面, 在一个TextView中显示当前剩余的时间, 如果在TimerTask中计时,则无法更新TextView显示的剩余时间(在非UI线程中 不能访问UI组件),可以通过runOnUiThread函数来实现 但是多少有点烦琐.
| no comments | 标签: android, at

Android 资源别名

资源别名的常用场景:
例如 程序支持多国家和多语言,在不同的国家和语言使用不同的应用程序图标(icon.png),但是在

English-Canadian 和French-Canadian 情况下要使用相同的图标, 简单的方式就是创建对应的资源目

录 res/drawable-en-rCA/ 和 res/drawable-fr-rCA/ 然后把图标分别放到每个目录下. 这样有个缺

点 就是有2个一样的资源图标. 使用资源别名可以避免这种问题.
| no comments | 标签: at, android

Autowire: 自动从xml中绑定Activity中的view

Autowire 是一个Android小工具,把在layout xml中声明的View自动绑定到对应的Activity中. 如果 Activity中有几十个View,现在您再也不用手工编写几十行findViewById代码了, 只需要使用一行代码 Wire.me(this, R.id.class), 就帮您搞定了! \(o)/~
| no comments | 标签: android, at

WebView显示非拉丁字符乱码的解决方式

Android 中的WebView在显示非拉丁字符的时候 经常出现乱码, 可用的解决方案如下:

1. 使用这种方式可以解决:

 webView.loadDataWithBaseURL(null, html, "text/html", "utf-8",null);
2. 使用如下方式也可以解决:

          webView.getSettings().setDefaultTextEncodingName("utf-8");
          webView.loadData(URLEncoder.encode(html,"utf-8").replaceAll("\\+"," "), "text/html", "utf-8");

 

| no comments | 标签: at, android

判断Android使用的联网网络

判断手机的联网类型:

 

    public static void checkNetworkType(Context ctx) {
    	ConnectivityManager connectivity = 
        (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
    	if (connectivity == null) {
            Log.e(Constants.TAG, "获取网络类型失败");
            return;
        }
| no comments | 标签: at

MiniType类型以及扩展名

下面是从Android代码中导出的MiniType类型以及对应的扩展名.

private void loadEntry(String mimeType, String extension,  boolean textType) ;           

            sMimeTypeMap.loadEntry("application/andrew-inset", "ez", false);

            sMimeTypeMap.loadEntry("application/dsptype", "tsp", false);
            sMimeTypeMap.loadEntry("application/futuresplash", "spl", false);
            sMimeTypeMap.loadEntry("application/hta", "hta", false);
            sMimeTypeMap.loadEntry("application/mac-binhex40", "hqx", false);
| no comments | 标签: at, web

Android Service不可轻易用

最近在做谷嘀壁纸程序自动更换壁纸功能的时候,如果使用Service来实现自动切换 好像是不错的选择. 后来仔细研究了下, 发现Service不是这么用的也不该这么用嘀. 如果使用PrecossManager结束掉程序 那么该程序的Service也就死了 没法继续执行了. Service在Android中定位于在后台执行某些任务(例如: 在后台下载一个50M的文件) 一旦该任务完成 Service也就完成其任务 该结束了. 对于定时切换壁纸的功能 如果使用Service来做的话,则该Service就要在后台一直运行, 这样的话就会一直占用系统资源和消耗手机宝贵的电池能量.
| no comments | 标签: android, at

OPhone PreferenceScreen 的最佳使用方式

经过多次测试发现PreferenceScreen 在OPhone(1.0 和 1.5版本)系统中显示是有问题的. 安装大多数Android程序到OPhone手机中都可以看到设置页面(PreferenceScreen )是单个选项为黑色背景(即使设置主题为Theme.Light 在OPhone中看到的选项还是黑色),如果设置为Light主题则设置页面的整个背景是白色的,这也就是为什么在OPhone中设置页面上面黑 下面留有一片白色的原因. 看起来很不和谐哦.
| no comments | 标签: at, ophone

Android PreferenceScreen背景 在2.1 2.2系统上的Bug

今日测试程序发现在Android 2.1 ,2.2 系统中PreferenceScreen具有一个Bug, 在Preference中设置使用Theme.Light主题,则打开Preference为白色主题, 当Preference中内嵌有其他PreferenceScreen的时候, 打开内嵌的PreferenceScreen则屏幕背景为黑色的.
解决方式:在打开内嵌PreferenceScreen的时候设置其背景色.
| no comments | 标签: at, android

显示 应用程序信息(AppDetails)

以前(0.9)版本的Android系统可以通过PackageStats来获取应用的信息,包含应用大小 数据大小 等信息. 但是在1.0版本后这个API就给隐藏了. 现在要看应用的信息只有到 管理应用程序里面的 应用程序信息 页面查看了. 可以通过如下的方式直接显示 应用程序信息. (在程序菜单中提供一个菜单 直接打开应用程序信息 这样用户就不用到管理应用程序里面去查看应用信息了)
| no comments | 标签: at

Drawable Bitmap byte[]

Android系统中Drawable Bitmap 和byte[] 直接的转换. 在BitmapFactory中有多种decodeBitmap的方法,可以从文件、资源、二进制流、输入流等多种方法获取Bitmap。详细情况可以参考BitmapFactory的java doc。
| no comments | 标签: at

如何把下载的多媒体文件保存到系统媒体库中

Android媒体文件(图片 视频 音频 等文件)需要扫描到媒体库中才能通过相关的程序来查看. 比如 编写一个程序从互联网上下载一个图片保存到SDCard中,退出程序打开系统图片程序并看不到刚刚下载的图片. 这就是因为图片没有在系统媒体库注册的原因. 在系统启动的时候(或者SDCard从新载入的时候)系统会扫描媒体文件,并注册新发现的文件. 下面的示例就是如何通过代码来注册新的媒体文件.
| no comments | 标签: at

程序多语言设置

Android UI设计理念是 程序的UI应该和系统UI语言系统统一, 所以Android在此基础上设计了很好的国际化支持特性, 根据不同的区域设置对应的资源文件, 这样当用户更改系统Locale的时候就自动更新程序的UI显示。 但是在有些应用中,用户可能想提供多语言供最终用户自己选择, 虽然用户的系统设置的是英语,但是在某些应用或者某些场合下 用户还是有可能希望运行中文环境的程序的。 如果是这种情况下如何在程序中实现呢?
| no comments | 标签: at

自定义Toast显示

Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是, Toast是没有焦点的,而且Toast显示的时间有限, 过一定的时间就会自动消失,但是这并不意味这Toast就只能显示文字, Toast一样可以自定义内容以及显示方式.
| no comments | 标签: at

如何默认显示软键盘

如果一个页面上有个EditText,当页面显示的时候,系统默认情况下不会打开软键盘,需要用户点击下EditText才会弹出软键盘, 在有些情况下你可能希望,用户打开页面的时候就自动显示软键盘,这样就减少了用户点击的次数(例如在用户点击新建短信打开的页面中).
要实现该功能是很简单的,只要在中的Activity标签中使用windowSoftInputMode就可以了
| no comments | 标签: at

在Android 1.6版本中的bug

在Android 1.6版本中不能正常使用,查看Logcat信息发现是解析XML文件的问题.其实这是在由于1.6版本中DialogPreference为抽象类,无法初始化造成的,要使用需要自己再实现一个
| no comments | 标签: at

使Android程序应用到更多的设备上去

随着当前Android 设备的增加,如何使自己开发的程序能够运行在更多的设备上成为广大开发者所关心的问题.在<a target="_blank" href="http://androidappdocs-staging.appspot.com/sdk/android-1.6.html">Android 1.6</a>版本中提供了一些方式可以让开发者指定程序所支持的设备和特性.通过Android 1.6提供的特性可以在程序中声明程序需要使用的硬件功能和支持的硬件设备.例如将来要发布的<a target="_blank" href="http://www.goog...

| no comments | 标签: at

addStatesFromChildren 和跑马灯

在Android中要显示跑马灯是比较容易的,只要设置2个属性就可以了:<br>android:singleLine="true"<br>android:ellipsize="marquee"<br><br>但是要显示跑马灯该View必需是可以取得焦点的,只有在取得焦点的情况下跑马灯才会出现.<br>如果是组合View的情况下就有问题了, 如下一个组合View:<br><br><div class="syntaxhighlighter " id="highlighter_376902"><...

| no comments | 标签: at

设置桌面快捷方式

如何在程序中设置桌面快捷方式(home screen shortcut):<br><pre class="brush: java;"> /**<br> *创建桌面图标(Home Screen Shortcut)<br> *<br> * @param context the context<br> * @param clz 快捷方式启动的Activity <br> */<br> <br> public static void makeShortcut(Context c...

| no comments | 标签: at

设置主页Activity

程序一般都有一个主页,当用户导航到其他页面后为了让用户快速返回主页一般都会提供一个返回主页的菜单.在Android中由系统维护Activity堆栈,一般而言用户返回到主页后其他Activity还存在系统堆栈中. <br>场景举例:<br><br>用户通过主屏启动程序后进入主页 HomeActivity;在HomeActivity用户点击按钮进入Activity B;在Activity B中用户点击按钮进入Activity C; 在Activity C中用户点击返回主页按钮返回HomeActivity;这个时候用户点击手机的返回按键则返回到Activit...

| no comments | 标签: at

保存文件为铃声

如何把从网络上下载的声音文件保存为铃声。<br>默认情况下,保存到sdcard中的音频文件需要经过Android系统的扫描才能使用。如何在程序中执行这个过程,而不用每次都通过系统来扫描呢? <br>如下是示例代码 <pre class="brush: java;"><br> //从网络上下载的文件保存到如下位置<br> String filePath="/sdcard/ringtones/hello.wav";<br> File f = new File(filePath);<br> /...

| no comments | 标签: at

音量控制键控制的音频流(setVolumeControlStream)

当开发多媒体应用或者游戏应用的时候,需要使用音量控制键来设置程序的音量大小。在Android系统中有多中音频流,通过Activity中的函数setVolumeControlStream(int streamType)可以设置该Activity中音量控制键控制的音频流,一般在onCreate函数中设置。<br><br>Android中有如下几种音频流:<br><ul>
<li>AudioManager.STREAM_MUSIC&nbsp; /** The audio stream for music playba...

| no comments | 标签: at

Android程序横竖屏切换

关于Android中Activity的横竖屏切换问题可以通过<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Simsun; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: non...

| no comments | 标签: at

如何判断Android系统的版本

随着Android版本的增多,在不同的版本中使用不同的设计是必须的,根据程序运行的版本来提供不同的功能。这涉及到如何在程序中判断Android系统的版本。<br><br>在Android api中的android.os.Build和android.os.Build.VERSION类中包含了Android版本信息。<br><br>可以使用该信息来判断设备的系统版本:<br><br><div class="Section0"><p class="p0" style="margin-bottom: 0pt...

| 2 comments | 标签: at

OPhone 1.5 通过程序开启网络

OPhone系统对android的网络层做了修改,在OPhone的“数据链接”设置中可以设置是否“开机时连接”。如果用户没有选择这项设置,则程序是不能访问网络的。这个时候可以通过程序来开启网络。<br><br>首先检测是否有网络可用:<br><p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="color: rgb(0, 0, 0); font-size: 10.5pt; font-family: 'Courier New';"> <...

| no comments | 标签: android, at

解决使用ant打包apk的错误

在android开发做CI部署的时候,发现一个使用ant打包会报错:<br><br>[exec] Unable to access jarfile ..\framework\apkbuilder.jar<br><br>解决方式如下:<br>1.在 set prog=%~f0 一行后面添加代码 set progdir=%~dp0<br>2.修改set frameworkdir=&nbsp; set libdir= 2行内容为:<br>set frameworkdir=%progdir%lib\<...

| no comments | 标签: at

如何获取设备屏幕的宽度和高度(分辨率)

在某些场所下可能需要获取手机屏幕的宽度和高度,可以通过如下代码获取:<br><div><div><span class="Apple-tab-span" style="white-space: pre;"> </span>DisplayMetrics dm = new DisplayMetrics();&nbsp;</div><div><span class="Apple-tab-span" style="white-space: pre;"> </span>getWi...

| no comments | 标签: at

关于Android Tips

在android开发中,会用到各种小技巧(提示)例如 如何设置activity是否自动切换屏幕;如何获取设备屏幕高度、宽度等。 在该系列中会记录各种小技巧,以方便以后使用! 要查看所有小技巧(包含android开发和系统使用)访问<a href="http://www.chengyunfeng.com/tag/at" title="android tips">这里</a>。

...
| 4 comments | 标签: at