2016-07-24 8 views
0

Ich möchte den Hintergrund der Aktivität für transparent dynamisch ändern.Unter Android API-21, ConvertToTransucent Methode der Aktivität ist ungültig?

Oben API-21, convertToTranslucent Methode ist nützlich.

Aber es ist ungültig unter API-21.

Dies ist meine Berufung Code:

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 Methode der Aktivität

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

Und ich fand, dass der Wert des mChangeCanvasToTranslucent nach dem Aufruf falsch war

Antwort

0

Sieht aus wie Sie sind mit einigen internen Android-Funktionen, die in früheren Versionen nicht vorhanden waren. Sie sollten niemals interne Funktionen verwenden. Eine einfache Umgehung wäre, Ihre Aktivität als immer durchscheinend zu definieren und Ihren Layout-Hintergrund auf solide zu setzen. Ändern Sie dann dynamisch die Deckkraft des Layout-Hintergrunds.

Verwandte Themen