package com.example.myview;import android.content.Context;import android.graphics.Canvas;import android.util.Log;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;/** * 当开发者需要开发自定义View时,首先定义一个继承View基类的子类,然后重写View类的一个或多个方法,下面的类列出了通常可以被用户重写的方法 * 重写构造器是定制View的最基本方式,当java代码创建一个View实例,或者根据XML布局文件加载并构造界面时将需要调用该方法 */public class MyView extends View {public static final String TAG = "MyView"; public MyView(Context context) {super(context);}/** * 这是一个回调方法,当应从XML布局文件加载该组件并利用它来构建界面之后,该方法将会被回调 */@Overrideprotected void onFinishInflate() {super.onFinishInflate();Log.d(TAG, ">>>>>>>调用onFinishInflate()方法");}/** * 调用该方法来检测View组件及它所包含的所有子组件的大小 */@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);Log.d(TAG, ">>>>>>>调用onMeasure(int,int)方法");}/** * 当该组件需要分配其子组件的位置、大小时,该方法就会被回调 */@Overrideprotected void onLayout(boolean changed, int left, int top, int right,int bottom) {super.onLayout(changed, left, top, right, bottom);Log.d(TAG, ">>>>>>>调用onLayout(boolean,int,int,int,int)方法");}/** * 当该组件的大小被改变时回调该方法 */@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);Log.d(TAG, ">>>>>>>调用onSizeChanged(int,int,int,int)方法");}/** * 当该组件将要绘制它的内容时回调该方法进行绘制 */@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Log.d(TAG, ">>>>>>>调用onDraw(Canvas)方法");}/** * 当某个键被按下时触发该方法 */@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {Log.d(TAG, ">>>>>>>调用onKeyDown(int,KeyEvent)方法");return super.onKeyDown(keyCode, event);}/** * 当松开某个键时触发该方法 */@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {Log.d(TAG, ">>>>>>>调用onKeyUp(int,KeyEvent)方法");return super.onKeyUp(keyCode, event);}/** * 当发生轨迹球事件时触发该方法 */@Overridepublic boolean onTrackballEvent(MotionEvent event) {Log.d(TAG, ">>>>>>>调用onTrackballEvent(MotionEvent)方法");return super.onTrackballEvent(event);}/** * 当发生轨触摸屏事件时触发该方法 */@Overridepublic boolean onTouchEvent(MotionEvent event) {Log.d(TAG, ">>>>>>>调用onTouchEvent(MotionEvent)方法");return super.onTouchEvent(event);}/** * 当该组件得到、失去焦点时触发该方法 */@Overridepublic void onWindowFocusChanged(boolean hasWindowFocus) {Log.d(TAG, ">>>>>>>调用onWindowFocusChanged(boolean)方法");super.onWindowFocusChanged(hasWindowFocus);}/** * 当把该组件放入某个窗口时触发该方法 */@Overrideprotected void onAttachedToWindow() {super.onAttachedToWindow();Log.d(TAG, ">>>>>>>调用onAttachedToWindow()方法");}/** * 当把该组件从某个窗口上分离时触发该方法 */@Overrideprotected void onDetachedFromWindow() {super.onDetachedFromWindow();Log.d(TAG, ">>>>>>>调用onDetachedFromWindow()方法");}/** * 当包含该组件的窗口的可见性发生改变时触发该方法 */@Overrideprotected void onWindowVisibilityChanged(int visibility) {super.onWindowVisibilityChanged(visibility);Log.d(TAG, ">>>>>>>调用onWindowVisibilityChanged(int)方法");}}

 

/** * 当组件通过XML被加载的时候,会调用这个构造方法进行实例化 * 如果通过XML加载时 需要添加这个构造方法 否则会android.view.inflateexception异常 * @param context * @param atts */public MyView(Context context,AttributeSet atts){super(context,atts);}



 

更多相关文章

  1. android关于getLayoutParams()方法源码译文(部分)
  2. Android--DatePickerDialog日期控件
  3. Android--第一行代码笔记(2)
  4. android studio 编译的时候出现的错误和解决方法
  5. Android重要控件概览(中)
  6. Android启动过程
  7. 关于android的广播机制里面的网络状态监听 (Fragment实现)
  8. Hive中的case when 的写法
  9. Android(安卓)Button字母自动全部大写的问题

随机推荐

  1. 用ListView实现GridView
  2. Android(安卓)可拖动的悬浮按钮
  3. Android(安卓)系统移植与调试(一)Android编
  4. Android(安卓)root 原理
  5. 又议android中的manifest清单文件
  6. 关于Android中工作者线程的思考
  7. Android(安卓)版本适配6.0到9.0
  8. 認識 高煥堂老師
  9. Handler android~~
  10. Android(安卓)获取应用的安装时间及更新