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. Python -- 标准库 文件管理 (部分os包,shutil包)

    在操作系统下,用户可以通过操作系统的命令来管理文件,参考linux文件管理相关命令.Python标准库则允许我们从Python内部管理文件.相同的目的,我们有了两条途径.尽管在Python调用标准库的 ...

  2. C#:复选框操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  3. django.db.utils.OperationalError: no such table: auth_user

    关于使用django 首次创建超级管理员时,出现     django.db.utils.OperationalError: no such table: auth_user   错误 1.首先使用命 ...

  4. [Jobdu] 题目1384:二维数组中的查找

    题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 输入: 输入可能包含 ...

  5. Java中path,-classpath,-Djava.library.path的功能和区别

    1. path path是个系统环境变量,声明命令的搜索路径,让操作系统找到指定的工具程序. D:\Program Files\Java\jdk1.8.0_111\bin指定JDK工具路径,例如jav ...

  6. 信号处理函数(2)-sigismember()

    定义: int sigismember(const sigset_t *set,int signum);   表头文件: #include<signal.h>   说明: sigismem ...

  7. jquery 获取绑定事件

    在1.8.0版本之前,我们要想获取某个DOM绑定的事件处理程序可以这样: 1 $.data(domObj,'events');//或者$('selector').data('events') 而从1. ...

  8. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 作者: 字体:[增加 减小] 类型:转载 时间:2006-09-08我要评论 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Ja ...

  9. imx6 socketcan 发送问题

    参考cansend 的方法进行发送can 数据. cansend 的生成,请查考:http://www.cnblogs.com/chenfulin5/p/6797756.html cansend 代码 ...

  10. SpringBoot DataSource 配置说明

    DataSource 配置说明 属性 说明 spring.dao.exceptiontranslation.enabled 是否开启PersistenceExceptionTranslationPos ...