求助手机按键精灵坐标横竖屏坐标怎么换算

1254人阅读
Android基础(46)
比起IOS开发总共不过区区几种设备型号,作为Android开发者,面对成千上万的机型,屏幕适配的工作就显得尤为重要。
官方中关于屏幕适配的几点建议:
拉伸和压缩你的布局,以适应各种不同的高度和宽度。在更大的设备上,可以利用额外的屏幕。结合多个视图 创建复合控件来显示更多内容和轻松导航。为不同的屏幕密度(DPI)设备提供多套资源,以确保应用程序在任何设备上看起来不错。
1.px , dp,sp的定义
px(pixels)像素,意思是屏幕上的点。在设计领域中,像素是用来计算数码影像的最小单位。如 800*400。
dpi&是Dots Per Inch的缩写, 每英寸点数,即每英寸包含像素个数。比如320X480分辨率的手机,宽2英寸,高3英寸, 每英寸包含的像素点的数量为320/2=160dpi(横向)或480/3=160dpi(纵向),160就是这部手机的dpi,横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。手机dpi越大也就是俗称分辨率也高。
dp&也即dip,设备独立像素,device independent pixels的缩写,Android特有的单位,在屏幕密度dpi = 160屏幕上,1dp = 1px。android为了支持LDPI (120dpi), MDPI (160dpi), HDPI(240dpi),
XHDPI (320dpi), and XXHDPI(480dpi) 使用这个,而不依赖像素单位。在定义布局width/height值,推荐使用dp作单位。 dx和dp的换算:dx=dp*density
sp&scaled pixels(比例放大像素). 主要用于字体显示best for textsize,sp是为了保证相同字号的字在不同PPI屏幕上显示的物理高度一致。
2.单位的换算,设备屏幕信息
1)、获取设备的屏幕信息
* 获取设备的屏幕信息
public static void getWindowInfo(Context context) {
// DisplayMetrics类用于屏幕的描述信息
DisplayMetrics displayMetrics = context.getResources()
.getDisplayMetrics();
// 获取屏幕密度,在dpi=160的设备上density=1; density=dpi/160
float density = displayMetrics.
// 获取屏幕dpi,即每英寸包含像素个数
int dpi = displayMetrics.densityD
// 获取屏幕像素宽度 px
int width = displayMetrics.widthP
// 获取屏幕像素高度 px
int height = displayMetrics.heightP
Log.i(TAG, &屏幕密度:& + density + &\t dpi=& + dpi + &\t width=& + width
+ &\t height=& + height);
2)、单位的换算,px和dp的相互换算
* 把px 转化为dip
* @param context
* @param px
public static int px2dip(Context context, float px) {
float density = context.getResources().getDisplayMetrics().// 密度
int dip = (int) (px / density + 0.5f);
* 把dip转化为px
* @param context
* @param dp
public static float dip2px(Context context, float dp) {
float density = context.getResources().getDisplayMetrics().// 密度
float px = dp *
3)、屏幕坐标的获取
Android的屏幕坐标是从 左上角(0,0)起始,右下角结束。以手机为例,屏幕坐标如下图,单位为PX
view.getLocationOnScreen(pos);&// 获取在当前窗口内的绝对坐标
view.getLocationInWindow(pos);&// 得到view在整个屏幕内上的位置
注意:该方法在oncreate中执行返回值为(0,0),因为该控件还未在activity中生成,建议在&onWindowFocusChanged(boolean hasFocus) 方法中调用
* 获取指定控件的坐标[只能再oncreate之后的生命周期中执行,否则返回(0,0)]
* @param view
* @return 长度为2的int数组pos,X=pos[0] ,Y=pos[1]
public static int[] getPosition(View view) {
int pos[] = new int[2];
// 获取在当前窗口内的绝对坐标
// view.getLocationOnScreen(pos);
// 得到view在整个屏幕内上的位置
view.getLocationInWindow(pos);
Log.i(TAG, pos[0] + &---& + pos[1]);
4)、获取Android手机顶部状态栏高度,底部虚拟键盘位置的获取
实际开发中会遇到获取顶部状态栏的高度的情况,如设置全屏PopupWindow需要设置
popupWindow的高度= 屏幕高度- 状态栏高度
虚拟按键的情况,针对一些特殊型号的手机,如魅族系列等在屏幕底部时手机的虚拟按键,此时就有必要针对此类型号手机计算虚拟按键的位置或高度,全屏PopupWindow需要设置popupWindow的高度= 屏幕高度- 状态栏高度-底部虚拟键盘高度。
public static int getStatusBarHeight(Activity activity) {
Rect rect = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect. // 状态栏高度
int bottomHeight = rect.// 底部虚拟键盘的
Log.i(TAG, &statusBarHeight=& + statusBarHeight + &---bottomHeight=&
+ bottomHeight);
return statusBarH
如果该方法获取值0,解决办法可以参看我的另外一篇文章
.9.png图片的使用与制作
.9.png是Google发明用于android设备,可可以定义拉伸范围(包含图片边界)作为背景图片拉伸不失真的一种图片,同一图片可适用于多种设备
.9.png真可谓是解决屏幕适配的利器,可惜公司美工只给提供普通png格式图片,其实自己做也是非常简单。
.9图的制作通过使用ADT自带的编辑器,把普通的png图片编辑成.9.png的图片, 作图工具如下:
关于.9.png的几个参数,只要看一下这张图您就懂了
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:124264次
积分:1933
积分:1933
排名:第19131名
原创:64篇
转载:42篇
评论:19条
(1)(2)(1)(1)(1)(6)(4)(3)(3)(6)(1)(1)(8)(4)(2)(7)(2)(6)(5)(6)(4)(6)(2)(7)(1)(12)(4)关于横屏游戏坐标转换 _ 按键精灵手机版 - 按键精灵论坛
腾讯微博:
软件版本:2014.05软件大小:76.8M更新时间:2-21
软件版本:3.2.5软件大小:62.5M更新时间:06-06
软件版本:1.2.7软件大小:29.2M更新时间:06-9
软件版本:1.1.0软件大小:12.3M更新时间:12-29
查看: 6036|回复: 327
[源码分享]
按键精灵开发者5级可通过提升认证等级来升级勋章:
玩游戏有人习惯向左转,有人喜欢向右转。我喜欢左转下、右转下(躺床上翻个身)。写脚本的时候怎么避免像我一样的玩家呢?转换坐标吧!写脚本只取游戏界面坐标,然后转换。随你怎么转手机,脚本不出错。dim xyxy=转换(100,600)tap xy(0),xy(1)***** 该内容需您才可浏览 *****
按键精灵开发者5级可通过提升认证等级来升级勋章:学有所成学有所成勋章,新手步入按键学堂的第一枚勋章爱心大使积极帮助新手(可向管理员进行申请)按键图书勋章尊贵的按键图书用户按键14周年庆纪念勋章按键14周年庆纪念勋章(360天)月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
承接各类脚本定制,有意可加QQ: →→
抗战胜利70周年勋章抗战胜利70周年活动的专属勋章小红帽对论坛提出良好建议(可向管理员申请)
有项目 写脚本
合作共赢 QQ: 999-8968-0
学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者2级可通过提升认证等级来升级勋章:骨灰级按键用户3年以上的按键论坛用户按键图书勋章尊贵的按键图书用户黄瓜勋章(永久)体验商业小精灵活动的奖励鹰眼勋章鹰眼注册用户专属勋章羊年勋章(360天)羊年纪念勋章(360天)按键14周年庆纪念勋章按键14周年庆纪念勋章(360天)单身汪勋章单身贵族的专属勋章双十一绝版纪念勋章双十一绝版纪念勋章按键15周年庆纪念勋章按键15周年庆纪念勋章(365天)
看看学习下!
nicoletin234
3qqqqqqqqqqqqqq
按键精灵开发者1级可通过提升认证等级来升级勋章:
如果您要查看本帖隐藏内容请回复
剑侠勋章剑侠世界公测活动勋章按键精灵开发者2级可通过提升认证等级来升级勋章:按键会员(月)按键会员绑定账号后自动赠送小红帽对论坛提出良好建议(可向管理员申请)
悟空,看看。。。。。。。。。。。
吾爱按键!
大伟可啵肥哦
貌似不转换吧~
我是小白前来膜拜大神
微博达人(90天)完成新浪微博加V的奖励,结合活动不定期开放申请。黄瓜勋章(永久)体验商业小精灵活动的奖励鹰眼勋章鹰眼注册用户专属勋章认证考霸(90天)参加考霸活动,对认证考了十次以上用户的鼓励按键精灵开发者4级可通过提升认证等级来升级勋章:按键会员(季)按键会员绑定账号后自动赠送马年勋章(360天) 马年纪念勋章(360天)骨灰级按键用户3年以上的按键论坛用户
按键精灵开发者1级可通过提升认证等级来升级勋章:
哥哥公愤愤愤愤愤愤
我爱按键经了
查看下,学习了!嘿嘿
我爱按键经了
貌似不能转换找色功能
若相依、莫相离
f这个必须有。
按键精灵开发者4级可通过提升认证等级来升级勋章:横竖屏切换时界面整体会往home键方向平移解决思路 - Iphone当前位置:& &&&横竖屏切换时界面整体会往home键方向平移解决思路横竖屏切换时界面整体会往home键方向平移解决思路&&网友分享于:&&浏览:13次横竖屏切换时界面整体会往home键方向平移如题,横竖屏切换后界面往home键方向平移了大概10个像素,哪位知道是为什么?------解决方案--------------------
怀疑是在旋转的delegate函数中你自己set位置导致的
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有君,已阅读到文档的结尾了呢~~
MyCollege策划书
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于云服务器的虚拟现实校园类网络游戏
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 按键精灵抓抓坐标不对 的文章

 

随机推荐