android学习
上一篇 /
下一篇 2011-12-17 19:02:54
/ 个人分类:个人日志
看了网上很多关于音乐播放器的例子,对于新手的自己正好边学编练习,考虑的好久,决定先布局,然后弄代码
1.获取屏幕的宽和高:
Android中的DisplayMetrics 定义了屏幕的一些属性,可以通过 getMetrics 方法得到当前屏幕的DisplayMetrics 属性,从而取得屏幕的宽和高。
(1)
DisplayMetrics dm = new DisplayMetrics();
//取得窗口属性
getWindowManager().getDefaultDisplay().getMetrics(dm);
//窗口的宽度
int screenWidth = dm.widthPixels;
//窗口高度
int screenHeight = dm.heightPixels;
(2)
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
2.得到状态栏和标题栏的高度
(1)获取状态栏高度:
decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。 于是,我们就可以算出状态栏的高度了。
Rect frame. = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
(2)获取标题栏高度:
getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。
int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight
3.如果不做任何手机,当手机旋转时,界面就跟着手机旋转,以使文字总是正对着我们,但有时候界面一旋转就使布局不好看了,可以设置使界面固定横向或纵向。
设置方法:在AndroidManifest.xml中的Activity里加一个属性android:screenOrientation。例如设置该Activity为横向:
<activity android:name=".Login"
android:screenOrientation="landscape">
</activity>
screenOrientation的值有以下几种:
landscape:横向
portrait:纵向
unspecified:默认值,由系统判断状态自动切换
user:用户当前设置的orientation值.
behind:下一个要显示的Activity的orientation值.
sensor:传感器的方向
nosensor:不使用传感器,这个效果差不多等于unspecified
4.
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
补充一下创建锁时flag的值及意义:
int flags
各种锁的类型对CPU 、屏幕、键盘的影响:
PARTIAL_WAKE_LOCK :保持CPU 运转,屏幕和键盘灯有可能是关闭的。
SCREEN_DIM_WAKE_LOCK :保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
SCREEN_BRIGHT_WAKE_LOCK :保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
FULL_WAKE_LOCK :保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度
5.获取存储卡信息
/** 获取存储卡路径 */
File sdcardDir=Environment.getExternalStorageDirectory();
/** StatFs 看文件系统空间使用情况 */
StatFs statFs=new StatFs(sdcardDir.getPath());
/** Block 的 size*/
Long blockSize=statFs.getBlockSize();
/** 总 Block 数量 */
long totalBlocks=statFs.getBlockCount();
/** 已使用的 Block 数量 */
Long availableBlocks=statFs.getAvailableBlocks();
收藏
举报
TAG: