Android 如何在其他应用程序上显示代码线?
详细信息:我想添加一条代码绘制的线(就像您使用canvas/paint绘制)并将其显示在其他应用程序上 我目前有一个应用程序,允许我在其他应用程序上显示图像。查看我的代码。我已经实施了这样做的许可:Android 如何在其他应用程序上显示代码线?,android,drawing,android-service,android-windowmanager,Android,Drawing,Android Service,Android Windowmanager,详细信息:我想添加一条代码绘制的线(就像您使用canvas/paint绘制)并将其显示在其他应用程序上 我目前有一个应用程序,允许我在其他应用程序上显示图像。查看我的代码。我已经实施了这样做的许可: android.permission.SYSTEM_ALERT_WINDOW 我尝试将画布/绘画添加到WindowManager时没有出现错误,但我的应用程序崩溃。我试着寻找答案,但结果却是空的 如果有人能帮我解决这个问题,你将不胜感激 澄清一下:我希望这是我可以在其他应用程序上使用它,并且我仍然
android.permission.SYSTEM_ALERT_WINDOW
我尝试将画布/绘画添加到WindowManager时没有出现错误,但我的应用程序崩溃。我试着寻找答案,但结果却是空的
如果有人能帮我解决这个问题,你将不胜感激
澄清一下:我希望这是我可以在其他应用程序上使用它,并且我仍然可以与其他应用程序交互的地方。此外,我还添加了一个按钮功能,可以使用WindowManager addView和WindowManager removeView关闭/打开视图,但每次添加视图时,它都会覆盖整个区域,我无法再单击按钮删除视图。我找到了一种方法,将在此处共享。如果您想要更多的代码,请使用我在问题中也链接到的链接 我想我没有设置正确的代码,或者至少所有的代码,直到现在 DrawView.java 这将在屏幕上画一个十字 MainService.java
如果您将其添加到现有代码中,它应该可以正常工作。我找到了一种方法,将在这里与大家分享。如果您想要更多的代码,请使用我在问题中也链接到的链接 我想我没有设置正确的代码,或者至少所有的代码,直到现在 DrawView.java 这将在屏幕上画一个十字 MainService.java
如果将其添加到现有代码中,它应该可以正常工作。只需使用透明的活动即可。谷歌关于如何做到这一点。对不起,我应该澄清。我希望在活动中绘制此图,当我关闭活动时,该线仍然可见。然后,我可以与其他应用程序交互,做任何我想做的事情。我将把这个澄清添加到我的原始问题中。我刚刚找到了我的答案并添加了它。只需使用一个透明的活动。谷歌关于如何做到这一点。对不起,我应该澄清。我希望在活动中绘制此图,当我关闭活动时,该线仍然可见。然后,我可以与其他应用程序交互,做任何我想做的事情。我将在我原来的问题上补充这一澄清。我刚刚找到了我的答案并补充了它。
package com.example.floatingicon;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class DrawView extends View{
Paint paint = new Paint();
public DrawView(Context context){
super(context);
paint.setColor(Color.BLACK);
}
@Override
public void onDraw(Canvas canvas){
canvas.drawLine(240, 0, 240, 620, paint);
canvas.drawLine(0, 200, 480, 200, paint);
}
}
import com.example.floatingicon.DrawView;
public class MainService extends Service
{
private DrawView drawView;
@Override
public void onCreate()
{
drawView = new DrawView(this);
final WindowManager.LayoutParams paramsDraw = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
paramsDraw.gravity = Gravity.TOP | Gravity.LEFT;
paramsDraw.x=0;
paramsDraw.y=0;
winManager.addView(drawView, paramsDraw);
}
}