Android 开发自定义View

【附:——自定义View常处理的回调函数

onFinishInflate() 当View中所有的子控件均被映射成xml后触发
onMeasure(int, int) 确定所有子元素的大小
onLayout(boolean, int, int, int, int) 当View分配所有的子元素的大小和位置时触发
onSizeChanged(int, int, int, int) 当view的大小发生变化时触发
onDraw(Canvas) view渲染内容的细节
onKeyDown(int, KeyEvent) 有按键按下后触发
onKeyUp(int, KeyEvent) 有按键按下后弹起时触发
onTrackballEvent(MotionEvent) 轨迹球事件
onTouchEvent(MotionEvent) 触屏事件
onFocusChanged(boolean, int, Rect) 当View获取或失去焦点时触发 
onWindowFocusChanged(boolean) 当窗口包含的view获取或失去焦点时触发
onAttachedToWindow() 当view被附着到一个窗口时触发
onDetachedFromWindow() 当view离开附着的窗口时触发,该方法和  onAttachedToWindow() 是相反。
onWindowVisibilityChanged(int) 当窗口中包含的可见的view发生变化时触发】


1、继承View类,重载父类方法(根据自己的需要进行重载)

  1. package sn.dolp.view;  
  2.   
  3. import android.content.Context;  
  4. import android.graphics.Canvas;  
  5. import android.graphics.Color;  
  6. import android.graphics.Paint;  
  7. import android.util.AttributeSet;  
  8. import android.view.MotionEvent;  
  9. import android.view.View;  
  10.   
  11. public class XmlView extends View {  
  12.     public float cx = 40;  
  13.     public float cy = 50;  
  14.     Paint paint = new Paint();  
  15.   
  16.     public XmlView(Context context) {  
  17.         super(context);  
  18.         // TODO Auto-generated constructor stub  
  19.     }  
  20.   
  21.     public XmlView(Context context, AttributeSet attrs) {  
  22.         super(context, attrs);  
  23.         // TODO Auto-generated constructor stub  
  24.     }  
  25.   
  26.     public XmlView(Context context, AttributeSet attrs, int defStyle) {  
  27.         super(context, attrs, defStyle);  
  28.         // TODO Auto-generated constructor stub  
  29.     }  
  30.     @Override  
  31.     public void onDraw(Canvas canvas)  
  32.     {  
  33.         super.onDraw(canvas);  
  34.         paint.setColor(Color.RED);  
  35.         canvas.drawCircle(cx, cy, 15, paint);  
  36.     }  
  37.     @Override  
  38.     public boolean onTouchEvent(MotionEvent event)  
  39.     {  
  40.         cx = event.getX();  
  41.         cy = event.getY();  
  42.         invalidate();  
  43.           
  44.         return true;  
  45.     }  
  46. }  

2、修改XML布局

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingBottom="@dimen/activity_vertical_margin"  
  6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  7.     android:paddingRight="@dimen/activity_horizontal_margin"  
  8.     android:paddingTop="@dimen/activity_vertical_margin"  
  9.     tools:context="sn.dolp.view.MainActivity" >  
  10.     <!-- 插入自制View界面 -->  
  11. <sn.dolp.view.XmlView   
  12.     android:layout_width="match_parent"  
  13.     android:layout_height="match_parent"  
  14.     />  
  15. </RelativeLayout>  
原文地址:http://blog.csdn.net/qingdujun/article/details/41551151
参考文献:UUTON的文章,http://www.uuton.com/post/3f493_24c2c7,2014年11月27日19:12:49

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值