Android 获取屏幕的信息和button布局的一些笔记

来源:互联网 发布:unity3d海底场景demo 编辑:程序博客网 时间:2024/05/16 18:00

获取手机屏幕的信息

float density;

density = getResources().getDisplayMetrics().density;

  // 获取屏幕密度(方法2)    DisplayMetrics dm = new DisplayMetrics();    dm = getResources().getDisplayMetrics();        float density  = dm.density;// 屏幕密度(像素比例:0.75/1.0/1.5/2.0)    int densityDPI = dm.densityDpi;// 屏幕密度(每寸像素:120/160/240/320)    float xdpi = dm.xdpi;    float ydpi = dm.ydpi;        Log.e(TAG + "  DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);    Log.e(TAG + "  DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);        screenWidth  = dm.widthPixels;// 屏幕宽(像素,如:480px)    screenHeight = dm.heightPixels;// 屏幕高(像素,如:800px)        Log.e(TAG + "  DisplayMetrics(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);                // 获取屏幕密度(方法3)    dm = new DisplayMetrics();    getWindowManager().getDefaultDisplay().getMetrics(dm);        density  = dm.density;// 屏幕密度(像素比例:0.75/1.0/1.5/2.0)    densityDPI = dm.densityDpi;// 屏幕密度(每寸像素:120/160/240/320)    xdpi = dm.xdpi;    ydpi = dm.ydpi;        Log.e(TAG + "  DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);    Log.e(TAG + "  DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);        int screenWidthDip = dm.widthPixels;// 屏幕宽(dip,如:320dip)    int screenHeightDip = dm.heightPixels;// 屏幕宽(dip,如:533dip)    Log.e(TAG + "  DisplayMetrics(222)", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip);        screenWidth  = (int)(dm.widthPixels * density + 0.5f);// 屏幕宽(px,如:480px)    screenHeight = (int)(dm.heightPixels * density + 0.5f);// 屏幕高(px,如:800px)        Log.e(TAG + "  DisplayMetrics(222)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);


Button

是否觉得默认的宽度太大?          android:layout_width="wrap_content"          android:layout_height="wrap_content"可以加上这个属性:android:minHeight="40dp"Java代码动态生成的话不太管用,还不知道原因:button2.setMinHeight(40);button2.setMinimumHeight((int) (40*density));


怎么使用Java 代码 给Button 设置Margin ?

 LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  llp.setMargins(10, 5, 10, 0); // llp.setMargins(left, top, right, bottom);  button2.setLayoutParams(llp);    


Java 代码中 在LinearLayout 中怎么设置Button的长和宽. 效果不好,不建议 

ViewGroup.LayoutParams b1param=new ViewGroup.LayoutParams(w,h);b1param.height = h;b1param.width =  w;


怎么让Button获取焦点

button2.setFocusable(true);//(只加这个没有用,同样无法获得焦点)button2.setFocusableInTouchMode(true);//(这个必须加,获得焦点和TouchMode有关)