最新项目需要实现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()一次性解决退出问题