• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android群英传笔记系列一view的介绍,android群英

Android群英传笔记系列一view的介绍,android群英

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android群英传,android群英传 pdf,android群英传下载,android群英传pdf下载,android群英传源码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android群英传笔记系列一view的介绍,android群英


  学习完第一行代码后,继续学习Android群英传,希望能坚持下去,好好学习完这本书,并及时做好相关笔记,巩固相关知识;

一. View的介绍:

1`.我们先来看下view树结构:

2.树结构内容:

a.viewparent是整棵树的核心,它统一调度和分配所有的交互管理事件。

b.控件分为viewgroup和view两种控件,viewgroup作为父控件可以包含多个vie       w控件。

c.我们知道在使用控件前都要通过findViewById的方法来实例化控件,那么在树结构中,实际上表现为通过树的深度优先遍历来查找到对应的元素。

3.UI界面构架图:

  

4.UI界面构架图内容:

a.实际上每个activity都包含一个window对象,而window对象是通过PhoneWindow来实现的。

b.PhoneWindow又将一个DecorView设置为整个应用窗口的根View。(简单的来说就是,我们所看到的整个手机屏幕内容就是整个的DecorView);

c.然后在我们手机应用中,一般含有两个view,一个是标题栏,即TitleView,另一个就是呈现内容的view,即ContentView.(当然,我们也可以通过一些办法隐藏,比如在setContentView()之前使用:

requestWindowFeature(Window.FEATURE_NO_TITLE)的方法即可。)

d.界面的显示过程:当程序在onCreate()方法中调用setContentView方法后,ActivityManagerService会回调onResume方法,系统便会将整个DecorView添加到PhoneWindow中。

二. View的测量:

1.测量的模式有三种:

EXACTLY模式:指的是精确值模式,比如我们设置layout_width=30dp,那么这种便属于精确值模式。

AT_MOST模式:指的是最大值模式,比如我们使用的wrap_content便是属于这种模式,允许随着内容的变化而变化,只要不超过父控件的所允许的最大尺寸即可。

UNSPECIFIED模式:这个是没有限制的模式,想要多大就可以多大,一般是在自定义view中使用。

2.关于重写onMeasure()方法:

a.为什么要重写onMeasure方法?

因为view类默认的onMeasure方法只支持EXACTLY模式,所以如果我们想要用指定wrap_content的大小的话,就必须要重写该方法。

b.重写onMeasure的过程:

(1)创建一个类继承至view:

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

我们会看到这样的一个初始的onMeasure函数,然后我们来看下super.OnMeasure的方法:

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),
            getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
}

所以在这里我们要重写setMeasuredDimension这个函数:我们再下面添加这样一句话

setMeasuredDimension(measureSize(200,widthMeasureSpec),measureSize(200,heightMeasureSpec));
我们来看下这句话的含义,实际上我们自定义了一个measureSize的函数,然后分别传入两个参数,第一个为默认值,第二个实际值。然后我们来看下这个自定义函数是如何实现的:
private int measureSize(int defaultSize,int measureSpec){
    int result=0;//定义result来作为返回值
    int specMode=MeasureSpec.getMode(measureSpec);//获取到测量的模式
    int specSize=MeasureSpec.getSize(measureSpec);//获取到测量值
    if (specMode==MeasureSpec.EXACTLY){//如果为精确测量,返回测量值即可
        result=specSize;
    }else{
        result=defaultSize;//如果为其他两种模式,设置为默认值
        if (specMode==MeasureSpec.AT_MOST){//如果为最大值模式,我们要获取到默认值和测量值中最小的值
            result=Math.min(result,specSize);
        }
    }
    return result;
}

最后我们在xml文件中引用这个自定义的view:

<main.view.com.view.viewTest
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ff0000"
 />

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android群英传笔记系列一view的介绍,android群英
  • Android群英传笔记系列二view的绘制(一),android群英

相关文章

  • 2017-05-26Android细笔记--ContentProvider,--contentprovider
  • 2017-05-26散列表的数学分析(精解)--通过链表法解决碰撞,数学分析精解
  • 2017-05-26Java的进化? Kotlin初探与集成Android项目
  • 2017-05-26Android5.0之Toobar的使用
  • 2017-05-26android开发之路04(初级android工程师必会,你懂得!),04android
  • 2017-05-26Android小知识汇总,android小知识
  • 2017-05-228.3.5 Paint API之—— Xfermode与PorterDuff详解(二)
  • 2017-05-26踩坑实录 Android studio中关于 No cached version of **** available for of处理办法,androidcached
  • 2017-05-26Android入门(1)--下载安装Android Studio,androidstudio
  • 2017-05-26Android之上下文context,androidcontext

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android UI:ListView,androiduilistview
    • 开源图表库MPAndroidChart使用介绍之饼状图&amp;折线图&amp;柱状图,图表mpandroidchart
    • 安卓开源项目周报0411,安卓开源项目0411
    • 产品原型图设计,产品原型图
    • 在Kotlin编写RecyclerView适配器(KAD 16),kotlinrecyclerview
    • Android GreenDAO3.0——介绍,androidgreendao3.0
    • 自定义控件详解(四):Paint 画笔路径效果,paint画笔
    • Android EditText只有下面有一条横线问题
    • 关于在R中无法引用自己的xml文件,引用xml文件
    • linux tun/tap设备的实现(kennel 3.10)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有