2016-10-12 4 views
0

Ich habe Chathead erstellt, der auf dem Bildschirm schwebt, aber wie man die Ansicht von ihm aufruft. Habe schon lange danach gesucht. want to make a view like thisIch möchte eine Ansicht erstellen, die eine Gestenüberlagerung enthält, und diese Ansicht kann überall außerhalb einer App aufgerufen werden.

Dies ist die Ansicht, die ich versucht habe zu machen. es hat Geste Overlay in es Gesture Magic diese App verwendet diese Ansicht

+0

@VivekMishra verwende ich Ansicht durch Window-Manager versucht haben, rufen aber diese Ansicht doesnot Gestenüberlagerung erkennen wie man dies für die Verwendung von Gestenoverlay macht? – UserDev

Antwort

1

Das Konzept ist einfach, Sie müssen im Grunde einen Service erstellen, der Ihre Ansicht dynamisch verwalten wird, indem Sie es zum Fenstermanager hinzufügen/entfernen.

public class StandOutViewService extends Service { 

    private WindowManager mWindowManager; 
    private View mStandOutView; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 

     mStandOutView = new View(this); 

     WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
      PixelFormat.TRANSLUCENT); 

     params.gravity = Gravity.TOP | Gravity.LEFT; 
     params.x = 100; 
     params.y = 500; 

     mWindowManager.addView(mStandOutView, params); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 

    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

} 

Sie können diese Bibliothek überprüfen einen Ausgangspunkt zu erhalten: https://github.com/pingpongboss/StandOut

Bitte beachten Sie, dass Sie Berechtigungen handhaben müssen unter Verwendung von:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

und für Android 6 und höher Möglicherweise müssen Sie Ihre Benutzer über das Menü für Eingabehilfeneinstellungen anweisen, Ihren Dienst zu aktivieren.

+0

Wie man Gesture OverLay mit Windowmanager verwendet, wird diese Konzeptansicht erstellt, aber die Gesteoverlay funktioniert nicht ??? Irgendeine Hilfe – UserDev

0

fand ich die Antwort und dachte, mit euch zu teilen hoffe, es

 final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.MATCH_PARENT, 
      900, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 


      PixelFormat.TRANSLUCENT); 
    params.x=0; 
    if (FloatDirections.y>700){ 
    params.y=FloatDirections.y-700;} 
    else { 
     params.y=0; 
    } 
    params.gravity= Gravity.TOP|Gravity.CENTER; 
    serviceRunning=true; 
    Toast.makeText(getApplicationContext(),String.valueOf(FloatDirections.x)+" "+String.valueOf(FloatDirections.y),Toast.LENGTH_SHORT).show(); 
    wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
    myView = inflater.inflate(R.layout.gesture_recognition, null); 
    b11=(Button)myView.findViewById(R.id.newbtn); 
    GestureOverlayView ov = (GestureOverlayView)myView.findViewById(R.id.gestures_overlay_float); 
    ov.addOnGesturePerformedListener(this); 

helfen und dann OnGesturePerformed

@Override 
public void onGesturePerformed(GestureOverlayView gestureOverlayView, Gesture gesture) { 
    // Toast.makeText(getApplicationContext(),"hi",Toast.LENGTH_SHORT).show(); 
    mydatabase.execSQL("CREATE TABLE IF NOT EXISTS PackageName(GestureName VARCHAR,PackName VARCHAR,Action VARCHAR);"); 
    cursor=mydatabase.rawQuery("select * from PackageName",null); 

    ArrayList<Prediction> predictions = store.recognize(gesture); 
Verwandte Themen