弹出窗口仅覆盖部分屏幕

时间:2017-06-15 15:40:37

标签: android popup

我正在构建一个应用程序,它具有后台服务,在满足特定位置和时间标准时发送广播消息,以及在发生这种情况时打开新活动的广播接收器。然而,活动然后覆盖了整个屏幕,而这不是我真正想做的事情。

相反,我希望广播接收器触发某种弹出窗口,这种弹出窗口只占用屏幕的一部分并留下其他任何正在运行的应用程序(例如电话,视频,网络浏览器等),其余部分仍然可见屏幕。

弹出窗口是什么并不重要。它可以是一个小吃吧,一个对话框,或者只是一个仅覆盖部分屏幕的活动布局。唯一的标准是它必须能够显示文本,并且必须能够包括OK和CANCEL按钮。

我已经尝试过早期问题的各种建议,但无法解决任何问题。任何人都可以提出这样做​​的方法吗?

我使用以下代码成功地将活动布局的大小缩小为小于屏幕:

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

但周围的屏幕区域只是黑色。我想我在这里做的是缩小显示器的尺寸,使一切都小于屏幕,这不是我想要的。我只希望减少一个活动的大小,其下方的任何应用程序布局都以全屏大小显示。

2 个答案:

答案 0 :(得分:0)

您可以创建heads-up notification

$allowedGroups = 'group1', 'group2', 'group3'
$AssignedValue = Get-ChildItem -path "C:\Users\user\Desktop\ExampleComputer\*.txt" 
ForEach ($file in $AssignedValue) {
    $contents = Get-Content $file | select -skip 6
    $notAllowedGroups = $contents  | where {$allowedGroups -notcontains $_} 
    if ($notAllowedGroups.Count -gt 0) {
        $reportForFile = $file.Name + ": " + ($notAllowedGroups -join ',')
        $reportForFile | Out-file  -FilePath 'C:\Users\user\Desktop\listofcomputers.txt' -Append
    }
}

pendingIntents可以调用服务,并允许您处理不同的输入。您还可以为 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()); 意图添加额外内容,并处理同一类中的两个输入。

答案 1 :(得分:0)

经过对stackoverflow的更多研究后,我回答了自己的问题!我创建了一个活动(TestActivity),其中包含一个快餐栏,提供我的弹出消息。然后我在values / styles.xml中创建了一个透明主题,如下所示:

<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>

并将样式添加到清单中的TestActivity属性,如下所示:

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

当我拨打小吃店活动时,它会弹出屏幕上已有的任何内容。