当开发者打算派生自定义的 UI 组件时,首先定义一个继承 View 基类的子类,然后重写 View 类的一个或多个方法即可。
通常可以被用户重写的方法如下:
构造器 :重写构造器是定制 View 的最基本方式。当 Java 代码创建一个 View 实例,或根据 XML 布局文件加载并构造界面时将需要调用该构造器。
onFinishlnflate() :这是一个回调方法。当应用从 XML 布局文件加载该组件并利用它来构建界面之后,该方法将会被回调。
onMeasure(int, int) :调用该方法来检测 View 组件及它所包含的所有子组件的大小。
onLayout(boolean, int, int, int, int) :当该组件需要分配其子组件的位置、大小时,该方法就会被回调。
onSizeChanged(int, int, int, int) :当组件的大小被改变时回调该方法。
onDraw(Canvas) :当该组件将要绘制它的内容时回调该方法进行绘制。
onKeyDown(int, KeyEvent) :当某个键被按下时触发该方法。
onKeyUp(int, KeyEvent) :当松开某个键时触发该方法。
onTrackballEvent(MotionEvent) :当发生轨迹球事件时触发该方法。
onTouchEvent(MotionEvent) :当发生触摸屏事件时触发该方法。
onWindowFocusChanged(boolean) :当该组件得到或失去焦点时触发该方法。
onAttachedToWindow() :当把该组件放入某个窗口时触发该方法。
onDetachedFromWindow() :当把该组件从某个窗口分离时触发该方法。
onWindowVisibilityChanged(int) :当包含该组件的窗口的可见性发生改变时触发该方法。
以上方法不需要全部重写,根据业务需要重写部分即可。
当在XML文件中管理自定义组件时,出了继承View,还要重写View的两个构造器,一个不带参数的,例如,
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public DrawView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
可以有两种方式实现
第一种,在XML文件中管理组件,这种方法必须要重写带参数的构造器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout root = (LinearLayout) findViewById(R.id.root);
final DrawView draw = new DrawView(this);
draw.setMinimumHeight(300);
draw.setMinimumWidth(500);
root.addView(draw);
}
第二种,在Activity中将组件添加到布局中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/root" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<com.SLFly.crazyit_02_customview.DrawView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
分享到:
相关推荐
android自定义View实现SwitchView
主要为大家详细介绍了Android自定义view实现选座功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这是一个使用自定义View实现显示图片,并实现了手势缩放、拖拽、切换。在缩放状态下单手指拖拽图片,在未缩放状态下可以实现图片切换或其他功能,已经留好对应接口。只要修改相关代码就可以了
通过自定义view实现类似于天气的控件
自定义view 实现TextView和imager的倒影效果,提高了单独定义效果...
网上大多是通过自定义ViewGroup实现流布局,在ListView或者GridView中使用时,性能不好,这里是通过自定义View实现流布局的,目前仅支持文本。
文字的长度小于textview的长度,就不能实现跑马灯的效果, 如果要实现就要自定义,以下就是
自定义View实现随滑动由箭头变对勾的指示按钮
仿真书籍翻页效果BookPageView简介:实现了仿真翻页效果,教程完整地描述了翻页原理分析到性能优化的过程教程博客:Android自定义View——从零开始实现书籍翻页效果(一) Android自定义View——从零开始实现书籍...
该项目使用AS开发,通过获取当前系统时间,然后通过自定义View加自定义的属性动画ValueAnimator实现了一个带动画效果的时钟,对学习自定义View是一个很好的例子
自定义view之学习12/2。。刮刮乐的实现,,都来动手来刮一下吧。。有惊喜哦。。
方式一:设置View的setOnTouchListener(),重写onTouch方法;方式二:实现view的onTouchEvent()方法。实现自定义view的拖动、点击事件。
自定义View实现了健康指数监控,也可以当做进度条使用,已适配屏幕大小。
通过自定义view实现图片可以附带文字介绍 设置文字的位置 可以右对齐 左对齐 居中 测量文字宽高
Android自定义View——实现字母导航栏
自定义view实现仪表盘功能
Android自定义View实现转盘旋转的效果
自定义View实现微信主页渐变效果,博客链接http://blog.csdn.net/wanzhuanit/article/details/50529470 自己资源分不够 才会要分的 还请见谅
自定义view实现提现流程进度
详情请查看博客:https://blog.csdn.net/qq_20785431/article/details/80740421