android 自定义组件中常用的方法
来源:互联网 发布:怎么申请软件专利 编辑:程序博客网 时间:2024/06/08 09:11
1.protected void onAttachedToWindow ()
这个方法是在组件附加到窗口时调用的,此时它有个界面然后会进行绘画。注意这个方法是确保在 onDraw() 方法前调用的。然而它也可以在第一次onDraw() 前的任意时间内被调用,包括在onMeasure() 方法调用之前。
利用这个特性,我们可以在这个方法里执行多线程来使我们自定义组件可动态。
public void start(){ if(running == false){ //这是一个模拟时钟转动的线程 running = true; Thread t = new Thread(new TimerTask()); t.start(); } }@Override protected void onAttachedToWindow() { super.onAttachedToWindow(); //在这个方法中启动,指针就会不停转动下去 start(); }
时钟线程的详细过程可翻看我另一篇博客:谈谈安卓自定义组件及其操控
2.protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
这个方法是用来测量视图和它的内容来决定测量宽度和高度,通过调用measure(int, int),并由子类来重写此方法来对内容提供精确高效的测量。
规约:当重写这个方法时,你必须在最后调用setMeasuredDimension(int, int)来保存测量的视图宽度和高度。如果它失败了就会触发 IllegalStateException,由measure(int, int)抛出异常。
基类实现测量默认是以背景大小的,除非一个更大的尺寸可允许MeasureSpec值。子类应该重写onMeasure(int, int) 方法来提供更好内容尺寸。
如果这个方法被重写,子类的义务是要确保测量的宽度和高度至少是视图的宽度和高度最小值。
@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = measureSpecResult(widthMeasureSpec,"width"); int height = measureSpecResult(heightMeasureSpec,"height"); setMeasuredDimension(width,height); }private int measureSpecResult(int measureValue,String measureStyle){ int result = 0; int specMode = MeasureSpec.getMode(measureValue); int specSize = MeasureSpec.getSize(measureValue); switch(measureStyle){ case "width": if((specMode == MeasureSpec.EXACTLY)||(specSize == MeasureSpec.AT_MOST)){ result = 3*specSize; }else{ result = 3*this.getResources().getDisplayMetrics().widthPixels; } break; case "height": if((specMode == MeasureSpec.EXACTLY)||(specSize == MeasureSpec.AT_MOST)){ result = specSize; }else{ result = 256; } } return result; }
更多重要方法会后续补充介绍。
0 0
- android 自定义组件中常用的方法
- android 中自定义组件
- android中自定义view常用方法
- android中自定义组件的规则
- Android 自定义组件 方法篇
- Android常用的TextView组件以及常用方法
- android自定义控件的常用方法
- Android中自定义AlertDialog组件
- List 中使用 MXML 自定义组件的数据项访问方法
- vue脚手架中自定义全局组件的方法
- Android中自定义组件及自定义属性
- Android中自定义组件及自定义属性
- Android中自定义组件及自定义属性
- Android中Dialog的常用方法汇总和自定义Dialog的步骤.txt
- flash中DataGrid组件常用的属性和方法
- Form开发中组件控制的几个常用方法
- Form开发中组件控制的几个常用方法 .
- orm开发中组件控制的几个常用方法
- QtQuick获取屏幕信息
- 如何成功制作可执行的Jar包
- hdoj 1872 稳定排序 【判断排序是否稳定】
- 实现performSelector 传递多个参数
- Scrapy+splash抓取js生成的数据
- android 自定义组件中常用的方法
- iOS: 如何在工程中设置 DEBUG 模式?
- 黑马程序员—学习笔记—多线程
- C语言类型限定修饰符(十八)const、(*)、
- Smobiler基于.NET框架开发移动应用内部系统(开发日志三)
- [SQL-码农]SQL Server 2000超过了每行的最大字节数(8060)的原因和解决办法
- 转载_OC消息机制(本质的实现方式)
- Firebug 查看输出创建的对象,并执行相关操作。
- 被误解的 MVC 和被神化的 MVVM