关于android activity设置为窗体样式总结

最新项目需要实现cordoa原生组件,组件都是以窗体dialog模式所以面临着问题已经解决方法贴下

我的样式:manifest activy中增加

android:theme="@style/DialogStyle"

style中增加:

<style name="DialogStyle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:backgroundDimAmount">0</item>
    <item name="android:windowCloseOnTouchOutside">false</item>
</style>

就会以窗体形式出现

1.窗体大小及位置控制.在activity中增加以下代码

@Override
public void onAttachedToWindow() {
    View view = getWindow().getDecorView();
    WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view
            .getLayoutParams();
    lp.width= LinearLayout.LayoutParams.MATCH_PARENT;
    lp.gravity = Gravity.LEFT | Gravity.TOP;
    lp.x = 0;

    lp.y = 0;
    getWindowManager().updateViewLayout(view, lp);
}

外部可以点击:在oncreate setContentView之前添加

WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;

多窗体共存时。如我一个页面初始化加载A插件,点击文本又添加B插件退出需要多次退出就需要activity管理器

public class ActivityCollector {
    public static LinkedList<Activity> activities = new LinkedList<Activity>();
    public static void addActivity(Activity activity)
    {
        /**
         * 如果是首页面不关闭
         */
        if(!activities.contains(activity)&& !activity.toString().contains("secondActivity") )
            activities.add(activity);
    }
    public static void removeActivity(Activity activity)
    {
        activities.remove(activity);
    }
    public static void finishAll()
    {
        for(Activity activity:activities)
        {
            if(!activity.isFinishing())
            {
                activity.finish();
            }
        }
    }

}

增加BaseActivy继承类.oncreate 添加.当退出时候finishALL()一次性解决退出问题

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值