如果在当前的Activity添加View就很简单 我们可以在布局xml中或者拿到当前的根View去添加一个View就行,如果是在代码的任意位置添加View,我相信不是每个人都会的,这一般有二种做法,第一种做法是使用WindowManager 第二种做法是监听每个Activity然后添加,今天主要讲的是第二种做法,
我们知道Activity有addContentView()方法可以添加一个view,但是Activity并没有removeView()方法,如果我们有阅读过view的加载过程源码发现在我们的activity显示的内容会有一个view它的id就是android.R.id.content,我们可以利用这个去做
public class ActivitySelfManager implements Application.ActivityLifecycleCallbacks {
private ViewGroup contentView;
private TextView textView;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
contentView = activity.findViewById(android.R.id.content);
textView = new TextView(activity);
textView.setTextColor(Color.RED);
textView.setText(activity.getClass().getSimpleName());
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(300,400);
addView(textView,layoutParams);
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
removeContentView(textView);
}
public void addView(View view, ViewGroup.LayoutParams layoutParams){
if(null==view){
return;
}
contentView.addView(view,layoutParams);
}
public void removeContentView(View view){
contentView.removeView(view);
}
}
然后记得在Application中去注册下
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
init();
}
private void init() {
registerActivityLifecycleCallbacks(new ActivitySelfManager());
}
}
大概思路就是这样了!