2014-05-15 23 views
2

詳細信息:我想添加一個代碼繪製線(就像用canvas/paint繪製)並將其顯示在其他應用程序上。如何在其他應用程序上顯示代碼繪製線?

我目前有一個應用程序,允許我在其他應用程序上顯示圖像。查看我的代碼Stackoverflow answer。我已經實現了這樣做的權限:

android.permission.SYSTEM_ALERT_WINDOW 

我試圖添加畫布/繪製到WindowManager沒有錯誤,但我的應用程序崩潰。我試過尋找答案,但已經空了。

如果有人能幫我弄清楚這一點,您將不勝感激!

澄清:我希望能夠在其他應用程序中使用它,並且我仍然可以與其他應用程序進行交互。此外,我添加了一個按鈕功能,我使用WindowManager addView和WindowManager removeView關閉/關閉視圖,但每次添加視圖時都會覆蓋整個區域,我無法再單擊該按鈕以刪除視圖。

+0

只需使用透明的活動。谷歌在如何做到這一點。 –

+0

對不起,我應該澄清。我希望這可以在活動中繪製,當我關閉活動時,該行仍然可見。然後,我可以與其他應用程序進行交互,並執行任何我想要執行的操作。我將在我原來的問題上加上這個澄清。 – CodeMonkey

+0

我剛剛找到我的答案並添加了它。 – CodeMonkey

回答

2

我找到了一種方法,並會在這裏分享。如果你想要更多的代碼,使用鏈接到我的Stackoverflow answer,我也鏈接了我的問題。

我想我現在還沒有設置正確的代碼或者至少是所有的代碼。

DrawView.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); 
    } 
} 

這將引起一個跨屏幕上

MainService.java

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); 
    } 
} 

如果您添加到現有的代碼,它應該工作得很好。

相關問題