如果在当前的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());
-
}
-
}