我正在部署一個使用OverlayView創建遊標的應用程序。我可以在屏幕上和應用程序外(服務)移動它。使用OverlayView發送觸摸事件
但現在我想實現觸摸事件。我在一個服務中運行光標,所以我仍然可以在菜單或任何地方移動它。但我不知道如何點擊。
因此,如果此服務獲得點擊事件(以編程方式或遠程方式),我一旦出現在應用程序之外,我想在光標下的視圖上進行觸摸事件。
任何想法如何讓它下面的視圖或如何發送系統觸摸事件?
這是我如何控制並繪製光標:
class OverlayView extends ViewGroup {
private Paint mLoadPaint;
boolean mShowCursor;
Bitmap cursor;
public int x = 0,y = 0;
public void Update(int nx, int ny) {
x = nx; y = ny;
}
public void ShowCursor(boolean status) {
mShowCursor = status;
}
public boolean isCursorShown() {
return mShowCursor;
}
public OverlayView(Context context) {
super(context);
cursor = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
mLoadPaint = new Paint();
mLoadPaint.setAntiAlias(true);
mLoadPaint.setTextSize(10);
mLoadPaint.setARGB(255, 255, 0, 0);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//canvas.drawText("Hello World", 0, 0, mLoadPaint);
if (mShowCursor) canvas.drawBitmap(cursor,x,y,null);
}
@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return true;
}
謝謝
喜能否請您發佈更多的code..I'm試圖做同樣的事情 – Abhi
喜。這是我爲你的問題所做的。我通過改變服務中的座標並將其座標發送到一個方法來移動鼠標指針疊加層,該方法檢查佈局中的任何「視圖」座標是否與疊加層座標匹配,並使用button.performClick() '。這就是我所做的......你可以告訴我你是怎麼做到的 – Abhi
嗨,這是3年前,是我工作的公司,所以不幸我不記得我做了什麼,也沒有我的代碼。 我只記得我原生的,我修改了直接寫入內核的本地代碼的行爲。但那是因爲它是我們自己的設備。 – Marcel