android之自定义控件一控件的呈现机制
来源:互联网 发布:淘宝48分店铺解封 编辑:程序博客网 时间:2024/04/28 21:04
自定义控件是Android开发中非常常用的技术,是初级程序员向高级程序员进阶的必经之路。弄清楚Android原生控件是如何做出来的,自己动手去实现我们自定义的控件是非常重要的,今天为大家讲解的是自定义控件的入门的知识,首先要我们弄明白,控件的一些基本知识,和重新认识我们的控件。
Android中控件分为两个部分,我们称之为2+1原则。一个是界面的呈现机制,一个是界面的事件机制。加一就是我们的ViewTree(界面的层级树)。第一种界面的呈现,我们分为两种方式。一个是XML布局我们通过inflate对象转化为类对象添加到我们的界面中。还有一种就是动态编码实现,动态布局,动态化控件。实际上我们的xml后期也是需要转化为类。(万物皆对象,对象都是类)。第二种Android的界面事件机制也分为两个知识点。一个是我们界面事件的分类,分为KeyEvent(按键事件),TouchEvent(手指触摸事件),和TrackballEvent(轨迹事件)。还有一个就是Android界面事件的触发及分发。下面附上一张ViewTree示意图。
下面的代码片段演示了动态编码如何使用一个图像类构建一个ImageView,并将其添加到布局。
package com.example.cdy.customview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.ViewGroup;import android.widget.Gallery;import android.widget.ImageView;import android.widget.LinearLayout;public class MainActivity extends AppCompatActivity { //声明布局,看上边的层技术,一个view必须在一个viewGroup中。 LinearLayout linearLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //创建一个添加ImageView的 LinearLayout linearLayout = new LinearLayout(this); //实例化一个ImageView并定义其属性 ImageView i = new ImageView(this); i.setImageResource(R.drawable.ershi); //设置该属性为真可以在 ImageView 调整边界时保持图片的纵横比例。(译者注:需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。) i.setAdjustViewBounds(true); //Gallery(画廊)扩展了LayoutParams i.setLayoutParams(new Gallery.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); linearLayout.addView(i); setContentView(linearLayout); }}运行图如何,和xml布局是一样的。
通过Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat。查看界面的布局。可以看到我们的界面并不像我们想象一样,实际上系统为我们生成了很多布局。
0 0
- android之自定义控件一控件的呈现机制
- 自定义控件(6)CompositeControl的呈现
- Android自定义控件之自定义View(一)
- Android自定义控件之自定义组合控件(一)
- Android绘图机制(六)自定义控件之组合控件
- 控件呈现的顺序
- Android 简单的自定义控件(一)之BaseTitle
- Android进阶之自定义控件一
- Android自定义控件(一)
- 自定义控件(一)【Android】
- android自定义控件(一)
- Android自定义控件(一)
- Android 自定义控件(一)
- Android小白进阶(一)--自定义控件之组合控件
- Android自定义控件(一) 自定义组合控件
- Android自定义控件(一) 自定义组合控件
- Android自定义控件(一) 自定义组合控件
- 热门搜索词汇的呈现的自定义控件
- 跨站请求伪造(CSRF)——常见网站攻击手段原理与防御
- 丢手帕问题(Josephus问题)
- jquery监听滚动条,实现“返回顶部”
- 中国人民保险车险理赔
- 模版快拍
- android之自定义控件一控件的呈现机制
- 二分插入排序(BinaryInsertSort)
- 内部类分类介绍JAVA224-225
- 环形队列
- 为AM335x移植 Linux内核dts ---fwqlzz love is for ever
- C#学习总结
- 【一天一道LeetCode】#14 Longest Common Prefix
- [LeetCode]128. Longest Consecutive Sequence
- 一个大四求职菜鸟的web前端之路(四)