我想动态更改Activity的背景为透明。
在API-21之上,convertToTranslucent
方法很有用。
但它在API-21下面无效。
这是我的主叫代码:
public static void convertActivityToTranslucentBeforeL(Activity activity) {
try {
Class<?>[] classes = Activity.class.getDeclaredClasses();
Class<?> translucentConversionListenerClazz = null;
for (Class clazz : classes) {
if (clazz.getSimpleName().contains("TranslucentConversionListener")) {
translucentConversionListenerClazz = clazz;
}
}
Method method = Activity.class.getDeclaredMethod("convertToTranslucent",
translucentConversionListenerClazz);
method.setAccessible(true);
method.invoke(activity, new Object[] {
null
});
} catch (Throwable t) {
t.printStackTrace();
}
}
活动的convertToTranslucent方法
public void convertToTranslucent(TranslucentConversionListener callback) {
try {
mTranslucentCallback = callback;
mChangeCanvasToTranslucent =
ActivityManagerNative.getDefault().convertToTranslucent(mToken);
} catch (RemoteException e) {
// pass
}
}
我发现调用后mChangeCanvasToTranslucent的值为false
答案 0 :(得分:0)
看起来你正在使用一些内部Android功能,这在以前的版本中是不存在的。你永远不应该使用内部功能。 一个简单的解决方法是将您的活动设置为始终半透明,并将您的布局背景设置为实体。然后动态更改布局背景不透明度。