2017-06-15 1 views
0

Ich baue eine App mit einem Hintergrunddienst, der eine Broadcast-Nachricht sendet, wenn bestimmte Standort- und Zeitkriterien erfüllt sind, und einem Broadcast-Empfänger, der in diesem Fall eine neue Aktivität öffnet. Die Aktivität deckt dann jedoch den gesamten Bildschirm ab, und das ist nicht das, was ich wirklich tun möchte.Pop-up, das nur einen Teil des Bildschirms abdeckt

Stattdessen mag ich den Hörer Sendung eine Art von Pop-up auslösen, die nur einen Teil des Bildschirms einnimmt und Blätter, was andere Anwendungen ausgeführt wurden (zB Telefonanruf, Video, Web-Browser etc.) noch sichtbar auf dem Rest des Bildschirms.

Es ist egal, was das Pop-up ist. Dies kann eine Snackbar, ein Dialogfeld oder einfach ein Aktivitätslayout sein, das nur einen Teil des Bildschirms abdeckt. Das einzige Kriterium ist, dass es in der Lage sein muss, Text anzuzeigen, und dass es möglich sein muss, OK- und CANCEL-Tasten zu verwenden.

Ich habe verschiedene Vorschläge aus früheren Fragen versucht, kann aber nichts zur Arbeit bekommen. Kann jemand einen Weg vorschlagen, dies zu tun?

ich erfolgreich reduziert die Größe der Aktivität Layout als der Bildschirm mit dem folgenden Code kleiner zu sein:

WindowManager.LayoutParams params = getWindow().getAttributes(); 
params.x = -100; 
params.height = 200; 
params.width = 1000; 
params.y = -50; 
this.getWindow().setAttributes(params); 

aber die umgebende Siebfläche ist nur schwarz. Ich denke, was ich hier gemacht habe, ist die Größe der Anzeige für alles kleiner als der Bildschirm, und das ist nicht was ich will. Ich möchte nur die Größe der einen Aktivität reduzieren, mit dem App-Layout, das darunter angezeigt wird, um es in voller Bildschirmgröße anzuzeigen.

+0

Geben Sie den Code ein, den Sie ausprobiert haben. –

+0

Prerak - vielen Dank für die Antwort. Ich habe es versucht: –

+0

Hoppla, tut mir leid, drückte die falsche Taste !! Ich bin in der Ferne, ich habe den genauen Code nicht mehr und kann nicht mehr darauf zurückkommen. Ich habe versucht, Vorschläge von hier https://stackoverflow.com/questions/6421036/how-to-make-activity-not-covering-full-screen und hier http://cases.azoft.com/android-tutorial-floating- Aktivität/aber entweder konnte ich sie nicht zur Arbeit bringen (ich bin ziemlich neu zu Android) oder sie taten nicht, was ich wollte. –

Antwort

0

könnten Sie einen heads-up notification

  PendingIntent pendingIntent_OK = PendingIntent.getService(this, 0, new Intent(this, NotifHandler.class), PendingIntent.FLAG_UPDATE_CURRENT); 
      PendingIntent pendingIntent_cancel = PendingIntent.getService(this, 0, new Intent(this, OtherHandler.class), PendingIntent.FLAG_UPDATE_CURRENT); 
      final Notification.Builder notif = new Notification.Builder(getApplicationContext()) 
        .setContentTitle(getString(R.string.title)) 
        .setContentText(getString(R.string.text)) 
        .setColor(Color.parseColor(getString(R.color.yellow))) //ok 
        .setSmallIcon(R.drawable.ic_small) 
        .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)) 
        .addAction(R.drawable.icon1, "OK", pendingIntent_OK) 
        .addAction(R.drawable.icon2, "Cancel", pendingIntent_cancel) 
        .setDefaults(Notification.DEFAULT_VIBRATE) 
        .setPriority(Notification.PRIORITY_MAX); 

      mNotificationManager.notify(NOTIFICATION_ID, notif.build()); 

erstellen Die pendingIntents ein Dienst nennen könnte und ermöglicht es Ihnen, die verschiedenen Eingänge zu behandeln. Sie könnten auch ein Extra zu den new Absichten hinzufügen und beide Eingänge in derselben Klasse behandeln.

0

Nach mehr Forschung auf stackoverflow beantwortete ich meine eigene Frage! Ich habe eine Aktivität (TestActivity) erstellt, die eine Snackbar enthält, die meine Popup-Nachricht enthält. Ich habe dann ein transparentes Thema in Werten erstellt/styles.xml wie folgt:

<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar"> 
     <item name="android:background">#00000000</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:windowBackground">@android:color/transparent</item> 
     <item name="android:colorBackgroundCacheHint">@null</item> 
     <item name="android:windowIsTranslucent">true</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation</item> 
    </style> 

und hinzugefügt, um den Stil der TestActivity Attribute in meinem Manifest, wie folgt:

<activity 
      android:name=".TestActivity" 
      android:theme="@style/Theme.AppCompat.Translucent" /> 

Als ich die snackbar Aktivität nennen erscheint es vor dem, was bereits auf dem Bildschirm ist.

Verwandte Themen