Skip to content

Commit d89a048

Browse files
committed
updated android -tips
1 parent 58a4aa2 commit d89a048

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

README.md

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1006,7 +1006,54 @@ LocalePicker.updateLocale(locale);
10061006
2.Android5.0以后,通过使用量统计功能来实现,只能得到应用包名;</br>
10071007
3.通过辅助服务来实现,可以得到包名和Activity;</br>
10081008
4.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

Comments
 (0)