@@ -1006,7 +1006,54 @@ LocalePicker.updateLocale(locale);
100610062.Android5.0以后,通过使用量统计功能来实现,只能得到应用包名;</br >
100710073.通过辅助服务来实现,可以得到包名和Activity;</br >
100810084.Android5.0以后,可以通过设备辅助应用程序来实现,能得到包名和Activity,不过这种方式必须用户主动触发(长按Home键)</br >
1009-
1009+ * AppCompatActivity设置透明主题
1010+ ```
1011+ <style name="MyTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
1012+ <item name="android:windowNoTitle">true</item>
1013+ <item name="android:windowBackground">@color/transparent</item>
1014+ <item name="android:windowIsTranslucent">true</item>
1015+ </style>
1016+ ```
1017+ * 通过反射方式设置系统语言
1018+ ```
1019+ private void updateLanguage(Locale locale) {
1020+ try {
1021+ Object objIActMag, objActMagNative;
1022+ Class clzIActMag = Class.forName("android.app.IActivityManager");
1023+ Class clzActMagNative = Class.forName("android.app.ActivityManagerNative");
1024+ Method mtdActMagNative$getDefault = clzActMagNative.getDeclaredMethod("getDefault");
1025+ // IActivityManager iActMag = ActivityManagerNative.getDefault();
1026+ objIActMag = mtdActMagNative$getDefault.invoke(clzActMagNative);
1027+ // Configuration config = iActMag.getConfiguration();
1028+ Method mtdIActMag$getConfiguration = clzIActMag.getDeclaredMethod("getConfiguration");
1029+ Configuration config = (Configuration) mtdIActMag$getConfiguration.invoke(objIActMag);
1030+ config.locale = locale;
1031+ // iActMag.updateConfiguration(config);
1032+ // 此处需要声明权限:android.permission.CHANGE_CONFIGURATION
1033+ // 会重新调用 onCreate();
1034+ Class[] clzParams = { Configuration.class };
1035+ Method mtdIActMag$updateConfiguration = clzIActMag.getDeclaredMethod(
1036+ "updateConfiguration", clzParams);
1037+ mtdIActMag$updateConfiguration.invoke(objIActMag, config);
1038+ } catch (Exception e) {
1039+ e.printStackTrace();
1040+ }
1041+ }
1042+ ```
1043+ * Android 中 %s %d %f占位符使用 [ 链接] ( https://blog.csdn.net/LosingCarryJie/article/details/77141974 )
1044+ ```
1045+ %s表示字符串类型占位符,%d表示整型占位符,%f表示浮点型占位符。
1046+ 实际使用的时候一般都会使用%n$s,这里的n表示索引,第几个要被替换的字符串,而且String.format这个方法也很给力,他可以计算出你的string.xml中有多少个占位符,就让你可以填充多少参数。
1047+ ```
1048+ * realm 主键不能自增长的处理 [ 链接] ( https://github.com/realm/realm-java/issues/469 )
1049+ * kotlin set方法。如果要用到变量,不能直接引用,需要用field字段来代表当前变量。
1050+ ```
1051+ var isOpen: Boolean = false
1052+ set(value) {
1053+ //field 代表当前变量
1054+ field = value
1055+ if (value) ....}
1056+ ```
10101057
10111058
10121059### Development tools
0 commit comments