1、配置 maven 本地依赖:
allprojects {
repositories {
google()
mavenCentral()
maven {
url uri("file:///" + rootDir.absolutePath + "\\maven")
}
}
}
使用场景:某些依赖在当前环境的工程下由于网络问题找不到,但是在服务器的网络环境下可以使用,就可以将服务器环境下的 maven 依赖缓存拷贝到本地项目根目录下的 maven 文件夹,按照如上的配置,即可进行本地 maven 依赖。
2、快速打开 APN 设置界面
try {
Intent intent = new Intent("android.intent.action.MAIN");
intent.setClassName("com.android.settings",
"com.android.settings.Settings$ApnSettingsActivity");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
int subId = SubscriptionManager.getDefaultDataSubscriptionId();
Log.e(TAG, "SubscriptionManager getSubId : " + subId);
intent.putExtra(SUBSCRIPTION_KEY, subId);
startActivity(intent);
} catch (Exception e) {
Log.e(TAG, "startActivity failed : " + Log.getStackTraceString(e));
}
注意如果是使用一个 Activity 运行上述代码,并且该 Activity 启动后立即结束,可以将该 Activity 主题属性设置为 android:theme="@android:style/Theme.Wallpaper.NoTitleBar" ,表示使用透明主题,否则界面跳转会出现空白界面。
3、修改Android Studio的缓存依赖到指定目录
重新sync项目,即可将 gradle 缓存依赖下载到指定目录。这样修改打开新的项目时默认的依赖位置也是在C盘下,可以设置系统环境变量GRADLE_USER_HOME为指定目录,这样新打开的所有项目默认依赖都会下载到该目录,要注意需要关闭所有android studio窗口,重启后才可生效。
4、遍历Android View树
public void onCreate() {
View rootView = getWindow().getDecorView().getRootView();
rootView.postDelayed(()->{
traverse(rootView, 0);
}, 1000);
}
public void traverse(View view, int level) {
String indent = "";
for (int j=0;j<level;j++) {
indent += "----";
}
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int i=0; i<viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
Log.i(TAG, indent+level+"|-"+child);
Log.i(TAG, indent+level+"|-getVisibility:"+child.getVisibility());
Log.i(TAG, indent+level+"|-width:"+child.getWidth()+" height:"+child.getHeight());
Log.i(TAG, indent+level+"|-getLeft:"+child.getLeft()+" X:"+child.getTranslationX());
Log.i(TAG, indent+level+"|-getRight:"+child.getRight());
Log.i(TAG, indent+level+"|-getTop:"+child.getTop()+" Y:"+child.getTranslationY());
Log.i(TAG, indent+level+"|-getBottom:"+child.getBottom());
traverse(child, level+1);
}
} else {
Log.i(TAG, indent+level+"|-"+view);
Log.i(TAG, indent+level+"|-getVisibility:"+view.getVisibility());
Log.i(TAG, indent+level+"|-width:"+view.getWidth()+" height:"+view.getHeight());
Log.i(TAG, indent+level+"|-getLeft:"+view.getLeft()+" X:"+view.getTranslationX());
Log.i(TAG, indent+level+"|-getRight:"+view.getRight());
Log.i(TAG, indent+level+"|-getTop:"+view.getTop()+" Y:"+view.getTranslationY());
Log.i(TAG, indent+level+"|-getBottom:"+view.getBottom());
}
}