本文简单介绍一下 Activity 中setContentView 流程, 上图先
首先 Activity 中代码片段
public void setContentView(int layoutResID) {
getWindow().setContentView(layoutResID);
}
public Window getWindow() {
return mWindow;
}
final void attach {
mWindow = PolicyManager.makeNewWindow(this);
}
PoliceManager中代码片段
private static final String POLICY_IMPL_CLASS_NAME =
"com.android.internal.policy.impl.Policy";
public static Window makeNewWindow(Context context) {
return sPolicy.makeNewWindow(context);
}
再看Policy类中的代码
public PhoneWindow makeNewWindow(Context context) {
return new PhoneWindow(context);
}
从而可知 Activity中的setContentView 最终调用的是PhoneWindow类中的 setContentView.
PhoneWindow代码片段
public void setContentView(View view, ViewGroup.LayoutParams params) {
if (mContentParent == null) {
installDecor();
} else {
mContentParent.removeAllViews();
}
mContentParent.addView(view, params);
final Callback cb = getCallback();
if (cb != null) {
cb.onContentChanged();
}
}
其中callback 实在 activity 的attach方法中设置的
mWindow = PolicyManager.makeNewWindow(this);
mWindow.setCallback(this);
综上 最终所有的view都是add在了mContentParent之上, mContentParent是一个ViewGroup的对象。
- 大小: 14.1 KB
分享到:
相关推荐
android触屏事件之activity,view,viewgroup
上一篇文章已经介绍了单元测试的作用和简单示例,如果不了解的读者可以先阅读上一篇[ Android单元测试-作用以及简单示例](http://blog.csdn.net/double2hao/article/details/77159380)。 这篇文章主要介绍常见的...
该源代码演示Android中如何对View(如button)进行截图和如何对整个Activity截图。同时演示怎样在截图上写上水印,演示如何把截图保存成文件。
主要为大家详细介绍了Android利用Intent启动和关闭Activity的相关操作,感兴趣的小伙伴们可以参考一下
仿微信滑动销毁activity ,获取view绘制区域
LocalActivityManager类是管理activity的,然后通过startActivity(String id, Intent intent)这个方法获取Window获取当前Window对象,再然后调用getDecorView()方法获取当前activity对应的view,这样就可以使用...
Android自定义View之仿知乎滑动删除Activity
实现了获取界面部分view,生成bitmap图片,也就是view截图,获取指定view的截图,适用于分享截图等
创建全新的视图将满足我们独特的UI需求。 本文介绍在指南针开发中会用到的罗盘的界面UI,通过继承View类实现的自定义视图,以此来深刻了解自定义视图。
android编程 实现了layout的切换,activity之间数据的交换,以及一个利用自定义view实现的小游戏
LoadingAndRetryManager 无缝为Activity、Fragment、任何View设置加载、重试和无数据页面
要为应用程序创建用户界面,就需要继承Activity类来完成。并使用View来完成用户交互。
Activity启动时候获取View宽高的四种方法,因为Activity的生命周期回调和view的measure过程不是同步执行的,所以无法在activity的onCreate、onStart和onResume里面准确的获取view的宽和高,可以通过以下四个方法来...
一个viewpager中嵌套多个activity,每当滑动到当前activity时,加载当前activity中的数据,实现异步加载
参考了网上大虾们的例子,实现了tab 中的子Activity跳转,并且带有动画效果;这里没有抽取动画作为参数,也可以定制自己的跳转动画;tab bar 的外观可以自己定制,将自带的tab隐藏,控制自定义的view调用tab的动作就...
第3步:新建一个View命名为MainView.java就是我们Activity现实的View.代码如下: package com.tutor.application; import android.app.Activity; import android.content.Context; import android.util....
利用系统服务做到闹钟的功能 private Intent intent; private PendingIntent pendingIntent; private Calendar calendar; private AlarmManager alarmManager; @Override protected void onCreate(Bundle ...
Android view 的刷新方法比较以及用法总结
安卓Android源码——View中添加Animation.zip
Android Theme也主要是通过定义Style来实现的,实现的原理大家可以直接看Android Framework中的定义,今天给一种更简单,但相对灵活的方法,比如不要Theme.Dialog中的边框,下面就一起来看下自定义Activity 大小的...