android上,实现直接在屏幕上显示点击位置,方便调试,可支持多点,效果图如下:



TestPointActivity.java

package com.ckl.TestPoint;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;public class TestPointActivity extends Activity {private PointView mPointView;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mPointView = new PointView(this);        mPointView.setImageResource(R.drawable.mj);        mPointView.setOnTouchListener(new MyListener());        setContentView(mPointView);    }        public class MyListener implements View.OnTouchListener {    public boolean onTouch(View v, MotionEvent event) {    testPoint(event);    return true;    }            private void testPoint(MotionEvent event) {        if (!debugOn) {        return;        }            ArrayList mXs = null;            ArrayList mYs = null;    if (mXs == null && mYs == null) {                mXs = new ArrayList();                mYs = new ArrayList();    }    mXs.clear();    mYs.clear();            final int N = event.getPointerCount();        float x, y;            for (int i = 0; i < N; i++) {        x = event.getX(event.getPointerId(i));        y = event.getY(event.getPointerId(i));        logd("x[" +i+ "],y[" +i+ "] = " + x + "," + y);        mXs.add(x);        mYs.add(y);        }            if (N > 0) mPointView.setPoints(mXs, mYs);        }            //调试    private final boolean debugOn = true;    private final String TAG = "MyListener";        private int logd(String msg) {        int retVal = 0;        if (debugOn) {        retVal = Log.i(TAG, msg);    }        return retVal;        }    }}


PointView.java

package com.ckl.TestPoint;import java.util.ArrayList;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.util.Log;import android.widget.ImageView;public class PointView extends ImageView {public PointView(Context context) {super(context);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);drawTouchPiont(canvas);}//绘制触摸点    ArrayList mXs = null, mYs = null;    private boolean mDrawn = true;    private Paint mPointPaint = null;    private Paint mRectPaint = null;    private Paint mTextPaint = null;    public void setPoints(ArrayList mXs, ArrayList mYs) {    if (debugOn) {        if (mPointPaint == null) {        mPointPaint = new Paint();        mPointPaint.setAntiAlias(false);        mPointPaint.setARGB(255, 0, 96, 255);                mRectPaint = new Paint();        mRectPaint.setARGB(0x88, 0x44, 0x44, 0x44);                mTextPaint = new Paint();        mTextPaint.setTextSize(15);        mTextPaint.setARGB(0xff, 0xff, 0xff, 0xff);                logd("init Paint");    }        this.mXs = mXs;        this.mYs = mYs;        mDrawn = false;        invalidate();}    }        private void drawTouchPiont(Canvas canvas) {    if (debugOn) {    if (!mDrawn) {    float x,y, rx, ry;    float dx = 80, dy = 80;    for (int i = 0; i < mXs.size(); i++) {    x = mXs.get(i);    y = mYs.get(i);            canvas.drawLine(x, y - dy, x, y + dy, mPointPaint);            canvas.drawLine(x - dx, y, x + dx, y, mPointPaint);                        rx = x;            ry = y - 40;            if (x + 75 > getRight())            rx = x - 76;            if (ry < getTop())            ry = y + 20;            canvas.drawRect(rx, ry, rx + 75, ry + 20, mRectPaint);            canvas.drawText("" + (int)x + "," + (int)y, rx, ry + 15, mTextPaint);}            mDrawn = true;}    }    }        //调试private final boolean debugOn = true;private final String TAG = "PointView";    private int logd(String msg) {    int retVal = 0;    if (debugOn) {    retVal = Log.i(TAG, msg);}    return retVal;    }}

工程代码: TestPoint.7z



更多相关文章

  1. Android(安卓)--- 图片的特效处理
  2. android studio 2.2 ndk jni 开发 调试 hello world
  3. android wpa_supplicant 调试
  4. Android(安卓)--- 图片的特效处理
  5. android View 绘制完成监听
  6. Android调试技术
  7. 用android:clipChildren来实现红心变大特效
  8. Android中View图形绘制基础
  9. Delphi在Android下通过WiFI进行调试

随机推荐

  1. 删除Listview中第一个项目顶部的行
  2. Android下usb host接口插入usb设备时,如何
  3. Android热修复实现
  4. Android自定义Toast带图片的
  5. android中一些能在国外使用的第三方地图
  6. 关于selenium android下的浏览器测试
  7. Android中的AlertDialog使用示例四(多项选
  8. 屏幕中央的TextView [重复]
  9. [置顶] Android 开发笔记
  10. android 利用广播实现程序的强制退出