Android屏幕和尺寸
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屏幕和尺寸的更多相关文章
- Android屏幕图标尺寸规范
http://blog.csdn.net/dyllove98/article/details/9174229 . 程序启动图标:ldpi (120 dpi)小屏mdpi (160 dpi)中屏hdpi ...
- Android应用如何支持屏幕多尺寸多分辨率问题
作为Android应用程序开发者都知道android是一个“碎片化”的世界.多种系统版本.多种尺寸.多种分辨率.多种机型,还有不同的厂商定制的不同ROM,你开发的应用会在不可预期的手机上报错.这给开发 ...
- android 屏幕尺寸的理解
对android设备屏幕尺寸单位的理解 一.android移动设备(手机和平板)常用的关于屏幕的一些单位: 1.px:像素点,应该是一个统一的单位,与我们国际单位米(M)应该是一回事,它应该是屏幕尺寸 ...
- Android之获取屏幕的尺寸像素及获取状态栏标题栏高度
在Android的实际开发中,会经常用到获取屏幕的尺寸的问题,以便设置一些布局在屏幕上的固定位置,从而适配各个屏幕的设备. 今天我就来讲一下怎么得到当前设备的屏幕像素吧: 一.在Activity中: ...
- 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...
- Android应用程序支持不同屏幕(尺寸、密度)
how to build a user interface using Android layouts for all types of devices 使用Android布局设计的UI接口用于不同的 ...
- Android界面设计适配不同屏幕的尺寸和密度解读
Android是运行在各种提供不同的屏幕尺寸和密度的设备.Android系统提供跨设备的统一开发环境和处理大部分的工作,以调整每个应用程序的用户界面,以在其上显示的画面. 同时,该系统提供了API,允 ...
- Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...
- 获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度
1.获取Android屏幕尺寸 我们能够通过getSize()方法获得屏幕的尺寸 Display display = getWindowManager().getDefaultDisplay(); P ...
随机推荐
- sqlserver学习笔记(四)—— 创建table表
1.新建数据库TestDB 2.为TestDB数据库新建表UserInfo 创建名为UserInfo的表,包括以上字段,其中ID为主键并设置标识规范,Nation设置默认值“中国”. 为表格添加一些数 ...
- react native window下的环境搭建和调试方案
这几天使用react native开发app,遇到一些坑,先记录下来,以后再继续补充 环境搭建 打开react native中文网,发现环境搭建特么也太复杂了,安装各种插件/软件,对于我们 编辑器+浏 ...
- HDU 4927 Series 1 ( 组合+高精度)
pid=4927">Series 1 大意: 题意不好翻译,英文看懂也不是非常麻烦,就不翻译了. Problem Description Let A be an integral se ...
- 百度地图 驾车/公交查询Demo(支持多起点多终点)
效果图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- 使用jvisualvm进行远程监控
1. 描述 jvisualvm是JDK自带的监控工具,位于JDK bin目录下面. 默认jvisualvm不能监控远程的JVM进程,需要进行一些配置. 2. 单独在应用上配置JVM启动参数 在Java ...
- 3、Cocos2dx 3.0游戏开发找小三之搭建开发环境
尊重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27107295 搭建开发环境 使用 Cocos2d- ...
- 167. Add Two Numbers【easy】
You have two numbers represented by a linked list, where each node contains a single digit. The digi ...
- Vs code 通用插件
Vs code 通用插件 转自:https://segmentfault.com/a/1190000006697219 HTML Snippets 超级实用且初级的 H5代码片段以及提示 HTML C ...
- [linux]signal函数不起作用
#include "apue.h" #include <sys/wait.h> static void sig_int(int); /* our signal-catc ...
- python walk函数
os.walk方法 import os for i in os.walk(r'C:\Users\jack\Desktop\test\3_语文语文版七年级上册\1_一单元'): print(i[0]) ...