精华内容
下载资源
问答
  • 主要为大家详细介绍了Android获取点击屏幕的位置坐标,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 实现原理:创建一个背景透明的Activity, 点击屏幕获取坐标信息并显示。在悬浮窗中调用该Activity,可以获取所有界面的坐标信息。 package sc.tool.screen; import sc.tool.component.ActivityComponent; ...

    工具下载:


    实现原理:创建一个背景透明的Activity, 点击屏幕时获取坐标信息并显示。在悬浮窗中调用该Activity,可以获取所有界面的坐标信息。

    
    package sc.tool.screen;
    
    import sc.tool.component.ActivityComponent;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Looper;
    import android.view.MotionEvent;
    import android.view.View;
    
    
    /** 获取屏幕点击处的坐标 */
    public class GetClickPostion extends ActivityComponent
    {
    	/** 显示当前Activity */
    	public static void Show(Context context)
    	{
    //		context.finish();	// 关闭context对应的Activity
    		
    //		final Class cls = GetClickPostion.class;
    //		new Handler(Looper.getMainLooper()).post(new Runnable()
    //		{
    //			@Override
    //			public void run()
    //			{
    //				
    //			}
    //		});
    		
    		Intent intent = new Intent(context, GetClickPostion.class);
    		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    		context.startActivity(intent);
    		
    		
    		// context.startActivityForResult(intent, CODE_ClickPostion);
    	}
    	
    	// ----------------
    	
    	@Override
    	public void Init(Bundle savedInstanceState)
    	{
    		this.setContentView("screen_postion");
    		Click("buttonReset");
    	}
    	
    	@Override
    	public void Click(String viewId)
    	{
    		if (viewId.equals("buttonReset"))
    		{
    			this.LinearLayout("linear1").setVisibility(View.INVISIBLE);
    			this.LinearLayout("linear2").setVisibility(View.INVISIBLE);
    			isSet = false;
    		}
    		else if (viewId.equals("buttonFinish"))
    		{
    			Intent data = new Intent();
    			data.putExtra("x", x + "");
    			data.putExtra("y", y + "");
    			this.setResult(CODE_ClickPostion, data);	// 返回选取的坐标
    			this.finish();
    		}
    	}
    	
    	public boolean dispatchTouchEvent(MotionEvent event)
    	{
    		switch (event.getAction())
    		{
    			case MotionEvent.ACTION_DOWN:
    				setPosition((int) event.getX(), (int) event.getY());
    				break;
    			
    			case MotionEvent.ACTION_UP:
    				break;
    		}
    		return super.dispatchTouchEvent(event);
    		
    	}
    	
    	boolean isSet = false;
    	int x;
    	int y;
    	public static final int CODE_ClickPostion = 50001;
    	
    	public void setPosition(int x, int y)
    	{
    		if (!isSet)
    		{
    			isSet = true;
    			LinearLayout("linear1").setVisibility(View.VISIBLE);
    			LinearLayout("linear2").setVisibility(View.VISIBLE);
    			this.EditText("editText1").setText("" + x + ", " + y);
    		}
    	}
    	
    }
    

    AndroidManifest.xml添加配置:

    <activity
                android:name="sc.tool.screen.GetClickPostion"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:theme="@style/AppTheme2" />

    styles.xml配置:

    <resources>
    
        <style name="AppTheme2" parent="android:Theme.Translucent.NoTitleBar.Fullscreen">
            <item name="android:windowFullscreen">false</item>
        </style>
        
    </resources>

    完整源码下载

    展开全文
  • 主要介绍了android获得当前view在屏幕坐标的方法,涉及Android针对view坐标相关属性的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 屏幕坐标获取工具

    2017-11-30 10:52:04
    双击该exe文件,鼠标滑到屏幕的哪里,该工具就会显示该坐标位置的X轴和Y轴,对网页开发元素大小的设置有一定的帮助。
  • 点击Android屏幕坐标,在相应的点击位置生成一个用OpenGL ES绘制的三角形,
  • public boolean onTouchEvent(MotionEvent event) {int action = event。getAction();//Log.i("TouchPaint", "Intermediate pointer #" + i);drawPoint(event。getHistoricalX(i), event。getHistoricalY(i),event。...

    public boolean onTouchEvent(MotionEvent event) {

    int action = event。getAction();

    //Log.i("TouchPaint", "Intermediate pointer #" + i);

    drawPoint(event。getHistoricalX(i), event。getHistoricalY(i),

    event。getHistoricalPressure(i),

    event。getHistoricalSize(i));

    }

    drawPoint(event。getX(), event。getY(), event。getPressure(),

    event。getSize());

    return true;

    }

    private void drawPoint(float x, float y, float pressure, float size) {

    //Log.i("TouchPaint", "Drawing: " + x + "x" + y + " p="

    // + pressure + " s=" + size);

    mCurX = (int)x;

    mCurY = (int)y;

    mCurPressure = pressure;

    mCurSize = size;

    mCurWidth = (int)(mCurSize*(getWidth()/3));

    if (mCurWidth < 1) mCurWidth = 1;

    if (mCurDown && mBitmap != null) {

    int pressureLevel = (int)(mCurPressure*255);

    mPaint.setARGB(pressureLevel, 255, 255, 255);

    mCanvas.drawCircle(mCurX, mCurY, mCurWidth, mPaint);

    mRect.set(mCurX-mCurWidth-2, mCurY-mCurWidth-2,

    mCurX+mCurWidth+2, mCurY+mCurWidth+2);

    invalidate(mRect);

    }

    mFadeSteps = 0;

    }

    展开全文
  • 屏幕坐标获取

    2019-04-26 11:53:52
    此软件课用于获取桌面的实时坐标,方便定点抓取坐标信息。
  • Android 获取屏幕指定坐标的颜色

    万次阅读 2017-12-24 13:04:19
    用到的API ...原理:利用Android系统提供的投影功能把屏幕投影到ImageReader中,通过ImageReader获取到Bitmap,调用Bitmap的getPixel(x, y)方法获取到指定坐标的颜色。代码创建虚拟显示器 private static f

    用到的API

    • MediaProjectionManager
    • MediaProjection
    • VirtualDisplay
    • ImageReader

    原理:利用Android系统提供的投影功能把屏幕投影到ImageReader中,通过ImageReader获取到Bitmap,调用BitmapgetPixel(x, y)方法获取到指定坐标的颜色。

    代码

    创建虚拟显示器

        private static final int REQUEST_MEDIA_PROJECTION = 1;
        private MediaProjectionManager mMediaProjectionManager;
        private MediaProjection mMediaProjection;
        private VirtualDisplay mVirtualDisplay;   
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mMediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
    
            assert mMediaProjectionManager != null;
            startActivityForResult(
                    mMediaProjectionManager.createScreenCaptureIntent(),
                    REQUEST_MEDIA_PROJECTION);
        }
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == REQUEST_MEDIA_PROJECTION) {
                if (resultCode != Activity.RESULT_OK) {
                    Log.i(TAG, "User cancelled");
                    Toast.makeText(this, "User cancelled!", Toast.LENGTH_SHORT).show();
                    return;
                }
    
                Log.i(TAG, "Starting screen capture");
    
                mMediaProjection = mMediaProjectionManager.getMediaProjection(resultCode, data);
                setUpVirtualDisplay();
            }
        }
    
        private void setUpVirtualDisplay() {
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getRealMetrics(dm);
            ImageReader imageReader = ImageReader.newInstance(dm.widthPixels, dm.heightPixels, PixelFormat.RGBA_8888, 1);
            mMediaProjection.createVirtualDisplay("ScreenCapture",
                dm.widthPixels, dm.heightPixels, dm.densityDpi,
                DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
                imageReader.getSurface(), null, null);
            GBData.reader = imageReader;
        }
    

    获取指定坐标的颜色

    public class GBData {
        private static final String TAG = "GBData";
        static ImageReader reader;
        private static Bitmap bitmap;
    
        public static int getColor(int x, int y) {
            if (reader == null) {
                Log.w(TAG, "getColor: reader is null");
                return -1;
            }
    
            Image image = reader.acquireLatestImage();
    
            if (image == null) {
                if (bitmap == null) {
                    Log.w(TAG, "getColor: image is null");
                    return -1;
                }
                return bitmap.getPixel(x, y);
            }
            int width = image.getWidth();
            int height = image.getHeight();
            final Image.Plane[] planes = image.getPlanes();
            final ByteBuffer buffer = planes[0].getBuffer();
            int pixelStride = planes[0].getPixelStride();
            int rowStride = planes[0].getRowStride();
            int rowPadding = rowStride - pixelStride * width;
            if (bitmap == null) {
                bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
            }
            bitmap.copyPixelsFromBuffer(buffer);
            image.close();
    
            return bitmap.getPixel(x, y);
        }
    }
    
    

    在代码中使用

    int color = GBData.getColor(x,y)
    

    参考

    展开全文
  • 主要为大家详细介绍了Android GPS获取当前经纬度坐标,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 获取点击手机屏幕的xy坐标值简单代码demo。代码简单易懂,可以取得手指点击手机时得到的xy坐标值,方便开发和写脚本
  • 屏幕坐标获取想(x,y) getLocationOnScreen  计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度)//获取在当前屏幕内的绝对坐标  getLocationInWindow  计算...

    屏幕坐标获取想(x,y)

    getLocationOnScreen 
    计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度)//获取在当前屏幕内的绝对坐标 
    getLocationInWindow 
    计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标

    getLeft , getTop, getBottom, getRight, 
    这一组是获取相对在它父亲里的坐标
    int[] location = new  int[2] ;
    view.getLocationInWindow(location); 
    //获取在当前窗口内的绝对坐标,当前activity显示的大小
    view.getLocationOnScreen(location);
    //获取在整个屏幕内的绝对坐标,包括通知栏
    location [0]--->x坐标,location [1]--->y坐标

    我相信看了下面的图,你就会更加清楚的理解了。



    涉及到的方法一共有下面几个:


    view获取自身坐标:getLeft(),getTop(),getRight(),getBottom()    相对于父控件的距离


    view获取自身宽高:getHeight(),getWidth()         高度=getbottom-gettop      宽度=getright - getLeft()


    motionEvent获取坐标:getX(),getY(),   相对于父控件的坐标         getRawX(),getRawY() 相对于屏幕的坐标


    首先是view的几个方法:


    获取自身的宽高的这两个方法很清楚,不用多说,获取坐标的这几个就有点混乱了。


    根据上面的图应该会比较容易明白,图中屏幕上放了一个ViewGroup布局,里面有个View控件


    getTop:获取到的,是view自身的顶边到其父布局顶边的距离


    getLeft:获取到的,是view自身的左边到其父布局左边的距离


    getRight:获取到的,是view自身的右边到其父布局左边的距离


    getBottom:获取到的,是view自身的底边到其父布局顶边的距离


     


    然后是motionEvent的方法:


    getX():获取点击事件相对控件左边的x轴坐标,即点击事件距离控件左边的距离


    getY():获取点击事件相对控件顶边的y轴坐标,即点击事件距离控件顶边的距离


    getRawX():获取点击事件相对整个屏幕左边的x轴坐标,即点击事件距离整个屏幕左边的距离


    getRawY():获取点击事件相对整个屏幕顶边的y轴坐标,即点击事件距离整个屏幕顶边的距离


    展开全文
  • 获取屏幕像素坐标工具,用于研究其他应用,调试程序
  • Android 获取View的坐标位置

    千次阅读 2019-10-25 09:34:12
    获取 View 坐标Android 开发中非常常见。今天carson将详细给大家讲解 获取 View 坐标常用6种方式: getLeft()、getTop()、getRight()、getBottom() getX()、getY()、getRawX()、getRawY() getLocationOnScreen...
  • android控件获取屏幕坐标

    千次阅读 2015-12-03 14:01:51
    android中,得到目标控件或者点击位置坐标总结: 在motionevent获取到的点击位置  final float eventX = event.getX();//相对于父控件  final float eventY = event.getY();  final float eventrowX = ...
  • android view获取屏幕上的绝对坐标

    万次阅读 2018-11-26 07:21:46
    int[] location = newint[2] ; view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标 ...//获取在整个屏幕内的绝对坐标 location [0]--->x坐标,location [1]--->y坐标 getLocationOnScree...
  • 屏幕坐标工具v1.5,非常好用,自带放大镜,用过的最好的工具。
  • 原理:借助Android系统提供的ImageReader读取当前屏幕,然后转化为Bitmap对象,Bitmap像素宽高正好和当前屏幕一致,然后调用Bitmap中的getPixel(x, y)方法获取目标点的坐标 创建屏幕扫描器 public class ...
  • 获取屏幕宽高: (1).WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight();(2). ...
  • android 获取控件在屏幕中的坐标

    千次阅读 2018-04-13 08:44:12
    今天,简单讲讲android如何获取控件在屏幕中的坐标。 这个其实也很简单,但是昨天做一个功能时,需要功能控件的坐标做一些逻辑操作时,居然不知道怎么做。所以在网上查找了资料后,解决了这个问题。这里记录...
  • 1.uiautomatorviewer.bat,在SDK目录下C:\Users\Administrator\AppData\Local\Android\Sdk\tools\bin 2.HierarchyViewer,在SDK的monitor.bat中 双加打开后,进行如下步骤: 然后点击,显示手机当前屏幕...
  • View中获取坐标的方法: getTop:获取view自身的顶边到其父布局顶边的距离 getLeft:获取view自身的左边到其父布局左边的距离 getRight:获取view自身右边到其父布局左边的距离 getBottom:获取view自身底边到其父...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,416
精华内容 12,966
关键字:

安卓获取屏幕坐标