MainActivity如下:

package cc.teststatusbarheight;import java.lang.reflect.Field;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.app.Activity;import android.content.Context;/** * Demo描述: * 利用反射获取状态栏StatusBar的高度 *  * 反射基础: * http://blog.csdn.net/lfdfhl/article/details/10311505 *  * 参考资料: * http://blog.csdn.net/lilu_leo/article/details/10211327 * http://blog.csdn.net/dany1202/article/details/6571010 * Thank you very much */public class MainActivity extends Activity {    private Button mButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init(){mButton=(Button) findViewById(R.id.button);mButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {getStatusBarHeight(MainActivity.this);}});}private void getStatusBarHeight(Context context){int statusBarHeight=0;try {Class clazz=Class.forName("com.android.internal.R$dimen");Object object=clazz.newInstance();Field field=clazz.getField("status_bar_height");//反射出该对象中status_bar_height字段所对应的在R文件的id值//该id值由系统工具自动生成,文档描述如下://The desired resource identifier, as generated by the aapt tool.int id = Integer.parseInt(field.get(object).toString());  System.out.println("id="+id);//依据id值获取到状态栏的高度,单位为像素statusBarHeight = context.getResources().getDimensionPixelSize(id); System.out.println("statusBarHeight="+statusBarHeight+"pixel");} catch (Exception e) {// TODO: handle exception}}}


main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    >        <Button        android:id="@+id/button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button"         android:layout_centerHorizontal="true"        android:layout_marginTop="100dip"        />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="利用反射获取状态栏StatusBar的高度"        android:layout_centerInParent="true"        /></RelativeLayout>


更多相关文章

  1. Android(安卓)调用其他应用-QQ音乐
  2. Android(安卓)获取手机信息
  3. Android中Bitmap、Drawable、byte[…
  4. android获取短信所有内容
  5. Android获取SD卡视频音频文件
  6. android 获取手机通讯录信息
  7. android的全屏和屏幕高宽的获取
  8. Android获取屏幕宽和高
  9. Google用户登录界面 Android实现

随机推荐

  1. java基础---一致性hash算法
  2. Java面向对象三大特性
  3. Java,从数组中查找Kth最大值[重复]
  4. Java源码的理解
  5. 我可以在测试运行时跳过JUnit测试吗?
  6. 为什么40亿次迭代的Java循环只需要2毫秒?
  7. [java混淆器问题] 如何让web项目的class
  8. JSP访问类实例
  9. eclipse写javaweb工程时文件目录为WebCon
  10. 启动非java虚拟机方式下运行matlab