Android开发经验汇总

文章分类:公司动态 发布时间:2013-08-09 原文作者:tbkj 阅读( )

1. 默认情况用户按下Back键是不会销毁当前Activity的,Activity依旧存在于内存中,如果想要彻底kill掉这个程序可以在代码中做如下处理:
1
@Override<br>   public boolean onKeyDown(int keyCode, KeyEvent event) {<br><br>     if (keyCode == KeyEvent.KEYCODE_BACK) {<br>         /* <br>          * If you want to kill the process.<br>          * Or maybe you can alert a dialog to make user choose. <br>             */<br>         finish();<br>       }<br><br>       return super.onKeyDown(keyCode, event);<br><br> }<br><br>   @Override<br>   protected void onDestroy() {<br><br>        System.exit(0);<br>     //Or.<br>       //android.os.Process.killProcess(android.os.Process.myPid());<br><br>   }<br>
?
2. 在Manifest.xml里可以给Activity指定一个模板,从而让Activity更加灵活的满足我们的需求.比如android:theme="@android:style/Theme.Dialog"可以让窗口变成像Dialog那样的悬浮的弹出窗体. 如果在代码中, 可以使用Activity类的setTheme(int resid)函数.
 
3. 你能想象我之前一直在用Windows开发Android程序吗?(我是一个MS fans =。=)但是最近涉及到Launcher开发,编译的时候还是在Linux下进行方便。今早像往常一样打开Eclipse,只不过是在Linux下,习惯性的启动模拟器,打开adb工具。。。wait!"adb shell"命令不起作用!!? google了一下发现在Linux下和在windows下启动adb的方式不一样。。好吧我承认我小白了。。。记录以下:
 Windows : adb shell
 Linux : ./adb shell
注意 ./和adb之间没有空格哦 >o<
 
4. 编译Launcher2时候经常遇到的一个问题,编译时报错:
?
1
2
3
4
5
6
7
<div class="cnblogs_Highlighter"><pre class="brush:csharp">packages/apps/Browser/src/com/android/browser/R.java:10: duplicate class: <br>com.android.browser.R <br>public final class R { <br>^ <br>Note: Some input files use or override a deprecated API. <br>Note: Recompile with -Xlint:deprecation for details. <br>Note: Some input files use unchecked or unsafe operations. <br>Note: Recompile with -Xlint:unchecked for details. <br>2 errors <br>make: *** [out/target/common/obj/APPS/Browser_intermediates/classes.jar] <br>Error 41<br></pre>
</div>
<div>duplicate class。。。
</div>
<div>后来发现是因为我用eclipse打开了Launcher的源码,eclipse自动生成了R文件,然后在编译的时候又会生成一次R文件,所以产生了冲突,在编译之前把gen文件夹里的东西删掉就好了。</div>
<div>再跑一遍,it works!</div>
<div> </div>
5. 有时候我们会需要对模拟器设备进行截图,截图方法给大家分享一下:
下载Android SDK以后有一个tools工具包,这个包里包含如一个工具ddms.bat。如下图:
 
启动这个工具以后看到如下界面:
点击菜单栏里的Device,选择Screen Capture。或者用快捷键Ctrl+S,就可以弹出截图窗口,可以copy也可以save,还提供了一个简单的旋转角度功能。
大家看到这个ddms工具还有一些功能,但是如果你用eclipse开发的话可能用不到他们了。。。
 
6. Android获得和设置桌面图片的方法:
在Activity中,WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);可以拿到桌面管理器,然后:
wallpaperManager.getDrawable(); //获得桌面图片
wallpaperManager.setBitmap(bitmap); //设置桌面图片。
 
7. Android判断系统语言:
Locale l = Locale.getDefault();  可以拿到一个Locale对象,通过这个locale对象我们可以拿到很多信息,比如l.getLanguage(), l.getCountry(); enjoy it...
 
8. 判断系统是12小时制还是24小时制:
ContentResolver cv = this.getContentResolver();           
String strTimeFormat = android.provider.Settings.System.getString(cv,android.provider.Settings.System.TIME_12_24);  
拿到的这个str可能是Null,12,24.
 
9. 在跟sdcard交互的时候不要手写绝对路径,因为不同版本的Android系统sdcard路径可能不一样。
通过android.os.Environment.getExternalStorageDirectory()可以拿到当前系统的sdcard路径。
判断sdcard是否存在的方法是:if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
 
原文来自:tbkj