1、自定义Android标题栏TitleBar布局
很多网友发现自己Android程序的标题栏TitleBar区域很单调,如果想个性化一些可以通过下面的方法来为自己软件的标题定制一个layout布局文件,比如浏览器的标题栏,它包含了网站的Favicon,自定义的进度条,和不确定的进度指示等等,实现的方法自己控制吧。下面代码在onCreate中使用,同时顺序不要改变,否则将无法生效:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main); //软件activity的布局
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar); //titlebar为自己标题栏的布局
2、Android全屏设置代码
如果你在开发游戏或一个主题风格很特别的应用可能需要全屏显示,在Android中全屏窗口的代码很简单,主要分为两个步骤和一个注意点:
requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //设置全屏
注意的是这些调用要放在SetContentView前面,否则无法生效或结果有出入。
3、获取Android屏幕方向及键盘状态
很多开发Android的网友可能需要判断当前的屏幕方向或键盘状态,下面的代码可以判断出横屏landscape和常规的portrait纵握方式,如果使用的是G1这样有QWERTY键盘硬件的,还可以判断屏幕方向以及键盘的拉出状态。
Configuration config = getResources().getConfiguration();
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE){
//横屏,比如 480x320
}else if(config.orientation == Configuration.ORIENTATION_PORTRAIT){
//竖屏 ,标准模式 320x480
}else if(config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_NO){
//横屏,Android123提示物理键盘滑出了
}else if(config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES){
//竖屏,键盘隐藏了
}
4、Android布局Java代码构造法
一般情况下对于Android程序布局我们往往使用XML文件来编写,这样可以提高开发效率,但是考虑到代码的安全性以及执行效率,可以通过Java代码执行创建,虽然Android编译过的xml是二进制的,但是加载xml解析器的效率对于资源占用还是比较大的,一般一个简单的TextView,比如
<TextView
android:id="@+id/textControl "
android:layout_width="100px"
android:layout_height="wrap_content" />
可以等价于下面的Java代码:
LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(100, LayoutParams.WRAP_CONTENT); //宽度为100px,高为自适应最小的高度
// setOrientation(VERTICAL); 设置布局为垂直
TextView textControl = new TextView(this);//如果从一个XXXLayout.,比如LinearLayout为View的基类时这里this应该换成为创建改类的Context
textControl.setText("Android开发网欢迎您");
addView( textControl, textParams );
当然Java处理效率比XML快得多,但是对于一个复杂界面的编写,可能需要一些套嵌考虑,如果你思维灵活的话,使用Java代码来布局你的Android应用程序是一个更好的方法。
5、让你的Android程序兼容多种分辨率
随着Android机型的不断增多,从默认HVGA 320x480 到 WVGA 480x800 、FWVGA 480x854 以及QVGA的240x320,如果要保证这些机型的正常显示,可能涉及到图片资源单独设计,虽然有朋友考虑使用9patch方法可以解决拉伸,但是我们要考虑如果一个主程序的背景图片,可能原来为480x800的Nexus One上正常运行,但是到了HTC Tattoo的240x320,可以想想是什么样子。Android开发网提示大家对于Android 2.0而言资源要单独考虑,不然无法正常被加载。如下图很多都加了v6的字样。
我们将对上面的文件夹命名方式做详细的解释: drawable-hdpi 这个hdpi代表high dpi,一般为 WVGA或 FWVGA分辨率的图片,如480x800,而mdpi 代表 mid dpi,一般为HVGA,如320x480。而 ldpi为 low dpi,一般为QVGA,如240x320。而下面layout中的land代表横屏时的布局。但是有些网友可能发现了 -v6的字样android123提示这是 Android 2.0开始出现一些bug的解决方法。 -v6是专门为2.0固件的机型设计的。 v6代表 API Level 6