2016-07-24 43 views
0

我想動態改變Activity的背景爲透明。在Android API-21下面,Activity的convertToTranslucent方法無效嗎?

以上API-21,convertToTranslucent方法是有用的。

但它在API-21下無效。

這是我的調用代碼:活動

public void convertToTranslucent(TranslucentConversionListener callback) { 
    try { 
     mTranslucentCallback = callback; 
     mChangeCanvasToTranslucent = 
       ActivityManagerNative.getDefault().convertToTranslucent(mToken); 
    } catch (RemoteException e) { 
     // pass 
    } 
} 

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方法我發現mChangeCanvasToTranslucent的號召後的值是假的

回答

0

看起來,你是使用一些內部的Android功能,這在以前的版本中並不存在。你永遠不應該使用內部功能。 一個簡單的解決方法是將您的活動設置爲始終半透明,並將佈局背景設置爲固定。然後動態更改佈局背景不透明度。

相關問題