DisplayMetrics dm=new DisplayMetrics();
//获取的像素高度不包含虚拟键所占空间
((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
.getMetrics(dm);
int width=dm.widthPixels;//屏幕宽度(像素)
int height=dm.heightPixels;//屏幕高度(像素)
float density=dm.density;//dp缩放因子(0.75/1.0/1.5/3.0)
int densityDpi=dm.densityDpi;//广义密度(120/160/240/480)
float xdpi=dm.xdpi;//x轴方向的真实密度
float ydpi=dm.ydpi;//y轴方向的真实密度 - ::35.246 -/? I/UiUtils: getScreenWidthPixels: widthPixels=, heightPixels=
- ::35.246 -/? I/UiUtils: getScreenWidthPixels: density=3.0, densityDpi=
- ::35.246 -/? I/UiUtils: getScreenWidthPixels: xdpi=442.451, ydpi=443.345 getRealMetrics()和getMetrics()获取到的屏幕信息差别只在于widthPixels或heightPixels的值是否去除虚拟键所占用的像素,和是否全屏和沉浸模式无关。 来自 <http://xiaoyaozjl.iteye.com/blog/2178415> 使用getRealMetrics()
- ::45.793 -/? I/UiUtils: getScreenWidthPixels: widthPixels=, heightPixels=
- ::45.793 -/? I/UiUtils: getScreenWidthPixels: density=3.0, densityDpi=
- ::45.794 -/? I/UiUtils: getScreenWidthPixels: xdpi=442.451, ydpi=443.345

传递点击事件的同时拦截滑动事件

/*dispatch click event but intercept sliding event in the listView*/
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
LinearLayout linearLayout;
boolean mScrolling;
boolean mIsTouchInListView;
float touchDownx;
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { int x = (int) e.getRawX();
int y = (int) e.getRawY();
linearLayout = (LinearLayout) rv.findViewById(R.id.menu_layout);
mIsTouchInListView = !isTouchPointInView(linearLayout, x, y); switch(e.getAction()){
case MotionEvent.ACTION_DOWN:
touchDownx = e.getX();
mScrolling = false;
break;
case MotionEvent.ACTION_MOVE:
if(Math.abs(touchDownx -e.getX()) >= ViewConfiguration.get(mActivity).getScaledTouchSlop()){
mScrolling = true;
}else{
mScrolling = false;
}
break;
case MotionEvent.ACTION_UP:
mScrolling =false;
break;
} Log.i(TAG, "onInterceptTouchEvent: "+mIsTouchInListView+","+mScrolling); return (mIsTouchInListView && mScrolling);
} @Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
Log.i(TAG, "onTouchEvent: ");
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {}
});

全屏

      Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
window.setAttributes(params);
    Dialog弹出时避免退出全屏
    
     AlertDialog alertDialog = dialogBuilder.create();
alertDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
DialogViewManager.fullScreenImmersive(alertDialog.getWindow().getDecorView());
alertDialog.show();
alertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

Android锁屏状态启动Activity

   Window win = getWindow();
WindowManager.LayoutParams params = win.getAttributes();
params = win.getAttributes();
params.flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; params.flags |= WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;
PowerManager pm = ((PowerManager) getSystemService(POWER_SERVICE));
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
mWakeLock.acquire();
Log.d(TAG, "acquire wake lock");
win.setAttributes(params);

Android屏幕和尺寸的更多相关文章

  1. Android屏幕图标尺寸规范

    http://blog.csdn.net/dyllove98/article/details/9174229 . 程序启动图标:ldpi (120 dpi)小屏mdpi (160 dpi)中屏hdpi ...

  2. Android应用如何支持屏幕多尺寸多分辨率问题

    作为Android应用程序开发者都知道android是一个“碎片化”的世界.多种系统版本.多种尺寸.多种分辨率.多种机型,还有不同的厂商定制的不同ROM,你开发的应用会在不可预期的手机上报错.这给开发 ...

  3. android 屏幕尺寸的理解

    对android设备屏幕尺寸单位的理解 一.android移动设备(手机和平板)常用的关于屏幕的一些单位: 1.px:像素点,应该是一个统一的单位,与我们国际单位米(M)应该是一回事,它应该是屏幕尺寸 ...

  4. Android之获取屏幕的尺寸像素及获取状态栏标题栏高度

    在Android的实际开发中,会经常用到获取屏幕的尺寸的问题,以便设置一些布局在屏幕上的固定位置,从而适配各个屏幕的设备. 今天我就来讲一下怎么得到当前设备的屏幕像素吧: 一.在Activity中: ...

  5. 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...

  6. Android应用程序支持不同屏幕(尺寸、密度)

    how to build a user interface using Android layouts for all types of devices 使用Android布局设计的UI接口用于不同的 ...

  7. Android界面设计适配不同屏幕的尺寸和密度解读

    Android是运行在各种提供不同的屏幕尺寸和密度的设备.Android系统提供跨设备的统一开发环境和处理大部分的工作,以调整每个应用程序的用户界面,以在其上显示的画面. 同时,该系统提供了API,允 ...

  8. Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...

  9. 获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度

    1.获取Android屏幕尺寸 我们能够通过getSize()方法获得屏幕的尺寸 Display display = getWindowManager().getDefaultDisplay(); P ...

随机推荐

  1. Linux-软件包管理-yum在线安装rz、sz工具

    yum search lrzsz yum方式查询 rpm -q lrzsz rpm方式查询 yum -y install lrzsz 安装 rpm -q lrzsz rpm方式查询 sz下载 rz上传

  2. 自增长主键Id的设计

    http://www.cnblogs.com/lhking/p/3945865.html

  3. ASP.NET Web Forms 的 DI 應用範例

    跟 ASP.NET MVC 与 Web API 比起来,在 Web Forms 应用程式中使用 Dependency Injection 要来的麻烦些.这里用一个范例来说明如何注入相依物件至 Web ...

  4. storm trident merger

    import java.util.List; import backtype.storm.Config; import backtype.storm.LocalCluster; import back ...

  5. Informix 配置选项

    下表列出了用于改善数据库性能的附加选项.如果选择在 onconfig 配置文件中进行更改,则需要重新启动 Informix 通用服务器.可以在 Informix 服务器处于联机或脱机状态时编辑 onc ...

  6. Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理

    Android Lollipop 添加了Camera2 API,并将原来的Camera API标记为废弃了.相对原来的Camera API来说.Camera2是又一次定义的相机 API,也重构了相机 ...

  7. jq实现千分位的转换

    一.千分位转换位整数 var sum = '2,034,300';var x = sum.split(",");var plan_sum = parseFloat(x.join(& ...

  8. linux命令之fuser

    Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME... [ - ] [ -n SPACE ] [ -SIGN ...

  9. 几种在Linux下查询外网IP的办法。

    几种在Linux下查询外网IP的办法.   Curl 纯文本格式输出: curl icanhazip.com curl ifconfig.me curl curlmyip.com curl ip.ap ...

  10. Math - Uva 11300 Spreading the Wealth

    Spreading the Wealth Problem's Link ---------------------------------------------------------------- ...