2016-07-24 8 views
0

透明のためにActivityの背景を動的に変更したいと思います。Android API-21の下で、アクティビティの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の値がfalse

答えて

0

はあなたがのように見えることがわかりました以前のバージョンでは存在しなかった内部のAndroid機能を使用していました。あなたは決して内部関数を使うべきではありません。 単純な回避策は、アクティビティを常に半透明に設定し、レイアウトの背景を実線に設定することです。次に、レイアウト背景の不透明度を動的に変更します。

関連する問題