`
venus585625
  • 浏览: 254780 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 设置View

阅读更多
回去window属性
WindowManager.LayoutParams l = r.window.getAttributes();

Decor 为PhoneWindow.DecorView  这个View其实是一个Activity 的最底层View
wm.addView(decor, l);


调用PhoneWindow的LocalWindowManager 中的addView

        public final void addView(View view, ViewGroup.LayoutParams params) {
            // Let this throw an exception on a bad params.
            WindowManager.LayoutParams wp = (WindowManager.LayoutParams)params;
            CharSequence curTitle = wp.getTitle();
            if (wp.type >= WindowManager.LayoutParams.FIRST_SUB_WINDOW &&
                wp.type <= WindowManager.LayoutParams.LAST_SUB_WINDOW) {
                if (wp.token == null) {
                    View decor = peekDecorView();
                    if (decor != null) {
                        wp.token = decor.getWindowToken();
                    }
                }
                if (curTitle == null || curTitle.length() == 0) {
                    String title;
                    if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA) {
                        title="Media";
                    } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY) {
                        title="MediaOvr";
                    } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_PANEL) {
                        title="Panel";
                    } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL) {
                        title="SubPanel";
                    } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG) {
                        title="AtchDlg";
                    } else {
                        title=Integer.toString(wp.type);
                    }
                    if (mAppName != null) {
                        title += ":" + mAppName;
                    }
                    wp.setTitle(title);
                }
            } else {
                if (wp.token == null) {
                    wp.token = mContainer == null ? mAppToken : mContainer.mAppToken;
                }
                if ((curTitle == null || curTitle.length() == 0)
                        && mAppName != null) {
                    wp.setTitle(mAppName);
                }
           }
            if (wp.packageName == null) {
                wp.packageName = mContext.getPackageName();
            }
            mWindowManager.addView(view, params);
        }

调用 WindowManagerImpl 的addView
进一步调用如下方法:
final WindowManager.LayoutParams wparams
                = (WindowManager.LayoutParams)params;
root.setView(view, wparams, panelParentView);



ViewRoot里面也有一个Window  Attribute变量mWindowAttributes  ---Window
attrs 为Window的Attribute  mWindowAttributes.copyFrom(attrs);--ViewRoot
这是两个不同的对象,有时间内容相同。 具体看代码。
分享到:
评论

相关推荐

    动态设置View的宽高(设置ViewPager的高度)

    动态设置View的宽高(设置ViewPager的高度) 利用ViewPager显示banner的时候,一些人会直接写死ViewPager高度,比如在xml布局里面直接写成180dp。 本例在代码中动态设置ViewPager的高度,让他的高度始终和高度呈...

    Android 自定义View实现水平温度计

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。本项目"Android 自定义View实现水平温度计"就是这样一个实例,它通过自定义View来展示一个水平方向的温度计,...

    Android中父View和子view的点击事件

    1. 子View设置`android:clickable="true"`或`android:focusable="true"`,使得子View能够捕获并处理点击事件。 2. 父View在`onInterceptTouchEvent()`方法中拦截事件,不将事件传递给子View。 3. 在父View的`...

    Android自定义View(验证码)

    在Android开发中,自定义View是一项重要的技能,它允许开发者扩展Android系统提供的基本视图组件,以满足项目中独特的需求。本篇文章将深入探讨如何基于鸿洋大神的博客内容,创建一个自定义的验证码View。 验证码的...

    android view的旋转

    在Android开发中,View的旋转是一项常见的操作,用于实现各种动态效果或用户交互。本文将深入探讨Android View的旋转机制,包括源码分析、旋转方式以及如何在实际应用中实现。 首先,Android中的View旋转主要通过`...

    Android自定义View实现转盘旋转的效果

    Android 自定义 View 实现转盘旋转的效果 Android 的自定义 View 为开发者定义和使用个性化的 View 提供了很好的支持,想要使用自己定义的 View,需要继承 View 类,并重写构造函数和 onDraw() 函数。onDraw 函数...

    android 自定义view比较综合的例子

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。这个“android 自定义view比较综合的例子”显然涵盖了多个高级话题,旨在帮助有一定基础的开发者提升自定义...

    android中动态更改View背景

    每个View都有自己的背景,可以通过设置`android:background`属性来定义。背景可以是颜色、图片、形状等,通常在XML布局文件中设定。 动态更改View背景的方法主要有以下几种: 1. **使用Drawable资源**:Android...

    Android代码-快速自定义 View 的 Selector

    Android-SpeedyViewSelector This is a change Background Or TextColor Selector support library, with which you can directly specify the Background to be displayed in different states or TextColor Layout...

    Android 设置一个底部控件view随着软键盘的弹出而上移

    有一些开源库,如`android-useful-dialogs`和`android-keyboard-aware-scroll-view`,已经实现了键盘弹出时底部视图上移的功能。可以直接集成这些库,简化开发过程。 在"Android 底部控件随软键盘弹出demo"这个...

    在android里面通过view画线

    在Android开发中,View是构建用户界面的基本元素。利用View,开发者可以自定义各种复杂的UI组件,其中之一就是画线。本篇文章将详细讲解如何在Android的View中实现画线功能,以此来创建一个简单的画线练习作品。 ...

    Android自定义View,View中的原点坐标相关问题

    例如,`measure()`方法是如何计算出View的尺寸,`layout()`方法又是如何根据尺寸和父容器设置View的位置。 工具方面,Android Studio提供了强大的布局编辑器和调试工具。布局编辑器可以在设计视图中预览View的布局...

    Android中View绘制流程

    在Android开发中,View是构建用户界面的基本元素,它的绘制流程是开发者理解并优化UI性能的关键。本篇文章将深入探讨Android中View的绘制流程,以及如何通过自定义ViewGroup进行更复杂的布局管理。 首先,我们要...

    BookPage-Android自定义View实现翻页效果,并附带实现教程.zip

    仿真书籍翻页效果BookPageView简介:实现了仿真翻页效果,教程完整地描述了翻页原理分析到性能优化的过程教程博客:Android自定义View——从零开始实现书籍翻页效果(一) Android自定义View——从零开始实现书籍...

    android 自定义View 实例

    `onMeasure()`方法需要设置View的宽度和高度,确保其在布局中正确显示。例如: ```java @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthSize = MeasureSpec.get...

    android项目下对图片高斯模糊毛玻璃自定义view

    本项目旨在教你如何在Android项目中创建一个自定义View,用于实现高斯模糊和毛玻璃效果,并且允许开发者自定义模糊程度。以下是关于这个主题的详细讲解。 一、高斯模糊原理 高斯模糊是一种图像处理技术,通过对图像...

    Android中View(视图)绘制不同状态背景图片

    Android中View(视图)绘制不同状态背景图片原理深入分析Android中View(视图)绘制不同状态背景图片原理深入分析Android中View(视图)绘制不同状态背景图片原理深入分析Android中View(视图)绘制不同状态背景图片原理深入...

    android-pdfview

    android-pdfview是一个Android类库,提供一个快速读取显示Android PDF文件的组件——PDFView,该组件支持手势、动画和缩放。并且基于Google的VuDroid类库解码PDF文件。可以通过手势滑动PDF文件、对PDF文件进行放大...

    Android自定义view实现水印效果

    在Android开发中,自定义View是一种常见的需求,用于实现特定的视觉效果或功能。本教程将探讨如何通过自定义View来实现水印效果,让应用能够在屏幕上动态地展示自定义的文字水印。水印通常用于保护版权或者增加信息...

    android的view遍历以及多重查找

    ViewGroup root = (ViewGroup) findViewById(android.R.id.content); LayoutTraverser.build(new LayoutTraverser.Processor() { @Override public void process(View view) { // do stuff with the view } })....

Global site tag (gtag.js) - Google Analytics