获取手机屏幕中心坐标

Posted

技术标签:

【中文标题】获取手机屏幕中心坐标【英文标题】:Get the center coordinates of phone screen 【发布时间】:2016-10-09 01:37:39 【问题描述】:

谁能给我一个如何获取当前显示屏幕的中心坐标的例子?我希望我的对象始终相对于活动视图的中心坐标。

【问题讨论】:

你要坐标还是不能用重心? @cricket_007 我愿意接受任何建议,我是安卓应用程序开发的新手。我有一个 ios 应用可以做到这一点,但我对 android 最简单的等价物感兴趣。 假设您只想将视图居中,请参阅此处***.com/questions/1499258/… @cricket_007 我真的想要坐标。我正在围绕 x 轴移动一个对象;所以我想将它保持在屏幕中心 x 坐标的某个范围 +/-[某个值] 内。 Get the screen dimensions 除以 2,然后呢? 【参考方案1】:

您可以尝试使用DisplayMetrics 来实现您的解决方案

int mWidth= this.getResources().getDisplayMetrics().widthPixels;
int mHeight= this.getResources().getDisplayMetrics().heightPixels;

【讨论】:

如果键盘打开,这可能不会给你完整的高度。 @Gupta ,一个简单的解决方案是设置活动从不使用键盘调整大小(在清单中)【参考方案2】:

这是我解决问题的方法。作为背景,我有一个按钮,一旦用户将地图移动到所需位置(显示地图中心的十字线),他们可以点击该按钮,并且地图中心会出现一个标记。

findViewById(R.id.addMarker).setOnClickListener(
            new View.OnClickListener()
                @Override
                public  void onClick(View view) 
                    if(myMap != null)
                        double myLat = myMap.getCameraPosition().target.latitude;
                        double myLng = myMap.getCameraPosition().target.longitude;
                        LatLng markerPoint = new LatLng(myLat, myLng);
                        myMap.addMarker(new MarkerOptions().position(markerPoint)).setTitle("new marker");
                    
                
            
    );

【讨论】:

【参考方案3】:

int cx =screenHeight = displaymetrics.heightPixels; int cy = screenWidth = displaymetrics.widthPixels; float finalRadius = (float) Math.sqrt(cx * cx + cy * cy);

float 是对象的中心

【讨论】:

以上是关于获取手机屏幕中心坐标的主要内容,如果未能解决你的问题,请参考以下文章

如何获取div相对于屏幕的坐标?

android 开发中 怎么用js获取手机屏幕高度

RN正确获取安卓屏幕高度

VC++6.0 如何获取窗口客户区域在屏幕中的位置

屏幕摔坏了,手机换屏幕,会丢失数据吗?

Unity UGUI怎么样获得UI在屏幕上的位置坐标