android中window、view与activity的关系

通过讨论这个问题,我们能够见识到google是对面向对象模式的理解,能够理解android底层的一些调用。 这也是一道很常见的面试题。

我们这篇文章就来解决这四个问题:

Android  中view的显示视图么?

Activity,window,View的关系是什么?

LayOutInflater 填充是什么?

LayOutInflater 具体怎么做?

首先,我们从activity开始说起,说起activity我们都要知道setcontentview和attach方法。 setcontentview中的,主要用来填充相应的布局文件。而至于attach方法了,这个方法用的很少,但是很重要 。

我们跟踪java的源代码了,我们清晰的看到这个activity实际上是调用phonewindow的setcontentview中的 方法来进行界面的呈现。他的类图如下:

而phonewindow有初始化了一个ViewGroup对象,这个ViewGroup的子类,可以显示每个控件的视图,还有一 个LayoutInflator使xml文件能够填充为相应的视图。他们的类图又是如下:

时间: 2024-08-30 22:13:43

android中window、view与activity的关系的相关文章

详谈Android中onTouch与onClick事件的关系(必看)

这几天遇到点关于Android的触摸事件相关的,还跟onClick有关,暂且记下: LinearLayout分别设置了onTouchListener,onClickListener,onLongClickListener及onTouchEvent回调 1.在屏幕上触摸之后基本的执行流程如下: onTouch,action=0 onTouchEvent,action=0 onTouch,action=2 onTouchEvent,action=2 onTouch,action=2 onTouchE

Android 中 退出多个activity的经典方法_Android

1.使用List集合方式 用list保存activity实例,然后逐一干掉 import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.Application; import android.content.DialogInterface; import android.content.Inte

Android中自定义view实现侧滑效果_Android

效果图: 看网上的都是两个view拼接,默认右侧的不显示,水平移动的时候把右侧的view显示出来.但是看最新版QQ上的效果不是这样的,但给人的感觉却很好,所以献丑来一发比较高仿的. 知识点: 1.ViewDragHelper 的用法: 2.滑动冲突的解决: 3.自定义viewgroup. ViewDragHelper 出来已经比较久了 相信大家都比较熟悉,不熟悉的话google一大把这里主要简单用一下它的几个方法 1.tryCaptureView(View child, int pointerI

Android中Service实时向Activity传递数据实例分析

本文实例讲述了Android中Service实时向Activity传递数据的方法.分享给大家供大家参考.具体如下: 这里演示一个案例,需求如下: 在Service组件中创建一个线程,该线程用来生产数值,每隔1秒数值自动加1,然后把更新后的数值在界面上实时显示. 步骤如下: 1.新建一个android项目工程,取名为demo. 2.新建一个Service类,用来实时生产数值,供界面实时显示. package com.ljq.activity; import android.app.Service;

Android中自定义view实现侧滑效果

效果图: 看网上的都是两个view拼接,默认右侧的不显示,水平移动的时候把右侧的view显示出来.但是看最新版QQ上的效果不是这样的,但给人的感觉却很好,所以献丑来一发比较高仿的. 知识点: 1.ViewDragHelper 的用法: 2.滑动冲突的解决: 3.自定义viewgroup. ViewDragHelper 出来已经比较久了 相信大家都比较熟悉,不熟悉的话google一大把这里主要简单用一下它的几个方法 1.tryCaptureView(View child, int pointerI

Android 中 退出多个activity的经典方法

1.使用List集合方式 用list保存activity实例,然后逐一干掉 import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.Application; import android.content.DialogInterface; import android.content.Inte

android中只要View类及其子类有xml属性吗

问题描述 android中只要View类及其子类有xml属性吗 android中只要View类及其子类有xml属性吗,还有其他什么类有xml属性呢,它们的xml属性实际是它们的常量吗 解决方案 XML 在 Android 中用来布局控件的位置与属性,XML 做为标识语言也可以做其它用途的. 至于 Android 中是否有其它类也使用 XML 不太清楚,但至少也可以用的.XML 如果使用,做为变量是正常的.但为什么是常量呢? 解决方案二: 不知道理想表达的是什么意思,Android控件xml配置归

求教android中如何控制一个activity在内存中的实例个数

问题描述 求教android中如何控制一个activity在内存中的实例个数 项目中有个需求,一个activity中有个按钮可以打开自己的另一个实例,那么这样就会出现不停的点,不停的创建这个activity实例的情况出现,有没有方法可以控制这个activity实例的个数啊,比如只保留最近打开的三个这个activity实例,有没有方法可以实现的啊,求教大神们 解决方案 android 让自己的Activity只创建一个实例 解决方案二: 机器人的回答没有用啊,需要是保存3个实例,不是一个啊 解决方

android中给view添加一个按着才触发的事件 要一直按着 松开触发功能关闭事件

问题描述 android中给view添加一个按着才触发的事件 要一直按着 松开触发功能关闭事件 如题,android中给view添加一个按着才触发的事件 要一直按着 松开触发功能关闭事件 ,一个图片 按着可以开启录音功能 松开就关闭录音 这个事件怎么添加 解决方案 你需要按下图片的时候开始录音,松开的时候停止录音,可以监听图片的触摸事件,按下的时候开始,抬起的时候结束. 代码如下: view.setOnTouchListener(new OnTouchListener() { @Override

android中让view变大变小

问题描述 android中让view变大变小 像这种 四格画面播放视频的 小格子能变大占满的 要怎么弄 解决方案 变大变小可以用view.setScaleX和setScaleY,使用前分别设置轴心(setPivotX).要动画而不是直接突然变大的话用属性动画,属性动画改变scaleX和scaleY值.补间动画在这里不好用 不需要动画的话,这里可以用把其他View都gone掉更好,用线性布局和weight去1/4平分空间,gone掉别的view的时候这个就自然变大占满了 或者应该播放时上面蒙层一个