android 如何在代码的任意位置为当前的Activity添加view

如果在当前的Activity添加View就很简单 我们可以在布局xml中或者拿到当前的根View去添加一个View就行,如果是在代码的任意位置添加View,我相信不是每个人都会的,这一般有二种做法,第一种做法是使用WindowManager 第二种做法是监听每个Activity然后添加,今天主要讲的是第二种做法,

我们知道Activity有addContentView()方法可以添加一个view,但是Activity并没有removeView()方法,如果我们有阅读过view的加载过程源码发现在我们的activity显示的内容会有一个view它的id就是android.R.id.content,我们可以利用这个去做


 
 
  1. public class ActivitySelfManager implements Application.ActivityLifecycleCallbacks {
  2. private ViewGroup contentView;
  3. private TextView textView;
  4. @Override
  5. public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
  6. }
  7. @Override
  8. public void onActivityStarted(Activity activity) {
  9. }
  10. @Override
  11. public void onActivityResumed(Activity activity) {
  12. contentView = activity.findViewById(android.R.id.content);
  13. textView = new TextView(activity);
  14. textView.setTextColor(Color.RED);
  15. textView.setText(activity.getClass().getSimpleName());
  16. ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams( 300, 400);
  17. addView(textView,layoutParams);
  18. }
  19. @Override
  20. public void onActivityPaused(Activity activity) {
  21. }
  22. @Override
  23. public void onActivityStopped(Activity activity) {
  24. }
  25. @Override
  26. public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
  27. }
  28. @Override
  29. public void onActivityDestroyed(Activity activity) {
  30. removeContentView(textView);
  31. }
  32. public void addView(View view, ViewGroup.LayoutParams layoutParams){
  33. if( null==view){
  34. return;
  35. }
  36. contentView.addView(view,layoutParams);
  37. }
  38. public void removeContentView(View view){
  39. contentView.removeView(view);
  40. }
  41. }

然后记得在Application中去注册下


 
 
  1. public class MyApp extends Application {
  2. @Override
  3. public void onCreate() {
  4. super.onCreate();
  5. init();
  6. }
  7. private void init() {
  8. registerActivityLifecycleCallbacks( new ActivitySelfManager());
  9. }
  10. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值