自定义控件的四种模式
来源:互联网 发布:手机淘宝1元秒杀入口 编辑:程序博客网 时间:2024/05/14 13:48
一.伪自定义控件
1.静态方法,通过在布局中用<include>直接将写好的控件布局添加到指定位置
2.动态绑定,通过代码调用addView方法进行添加
二.二、继承View,处理自身事件响应的自定义控件
View.ontouchEvent返回值为true截获事件,并处理
类似于画图板的view
public class DrawView extends View {
Paint paint;
Path path;
float currentX, currentY;
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint();//初始化画笔
paint.setColor(Color.RED);
paint.setStrokeWidth(12);
paint.setStyle(Paint.Style.STROKE);
path = new Path();
}
public DrawView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
if (path != null) {
canvas.drawPath(path, paint);
}
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
currentX = event.getX();
currentY = event.getY();
path.moveTo(currentX, currentY);//移动到起始点
break;
case MotionEvent.ACTION_MOVE:
currentX = event.getX();
currentY = event.getY();
path.lineTo(currentX, currentY);//划线
invalidate();//重绘
break;
}
return true;
}
}
三.在第二层基础上,设置系统认可属性的自定义控件,设置自身标志位
创建自己的textView控件
public class MyTextView extends View { private Paint paint; protected String text; protected int textcolor; protected float textsize; public MyTextView(Context context) { super(context); } public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); //把继承类的属性和自己定义的属性揉起来,生成新的控件的全部属性 TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyTextView); //关联属性 并初始化 text = array.getString(R.styleable.MyTextView_text); textsize = array.getDimension(R.styleable.MyTextView_textsize, 50); textcolor = array.getInt(R.styleable.MyTextView_textcolor, Color.RED); if (text == null) { text = "hello world"; } //使新属性生效 array.recycle(); //初始化画笔 paint = new Paint(); paint.setTextSize(textsize); paint.setColor(textcolor); } public String getText() { return text; } public void setText(String text) { this.text = text; } public int getTextcolor() { return textcolor; } public void setTextcolor(int textcolor) { paint.setColor(textcolor); invalidate(); this.textcolor = textcolor; } public float getTextsize() { return textsize; } public void setTextsize(float textsize) { paint.setTextSize(textsize); invalidate(); this.textsize = textsize; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawText(text, 50, 70, paint); }}
4.第三层级在实用性上较差 需要用户自己重写麻烦的onMeasure方法。所以实用的时候可以将自定义控件继承自线性(或其他)布局来回避掉重写onMeasure方法onMeasureonMeasureonMeasureonMeasureonMeasureonMeasure方法
- 自定义控件的四种模式
- 简单的自定义控件四简单的自定义控件四
- 自定义控件四:一个简单的自定义控件实例
- Android自定义控件:进度条的四种实现方式
- Android自定义控件:进度条的四种实现方式
- Android自定义控件:进度条的四种实现方式
- 活动被回收的处理、活动的启动模式、一键退出所有活动、UI控件、四种布局方式、自定义控件
- 常用的自定义控件四(QuickBarView)
- 自定义控件四
- 自定义UltraWinGrid控件的列合并模式
- Android自定义控件:进度条的四种实现方式(Progress Wheel的解析)
- Android自定义控件:进度条的四种实现方式(Progress Wheel的解析)
- Android自定义“图片+文字”控件四种实现方法之 二--------个人最推荐的一种
- 自定义控件自学笔记(四)
- 一步一步实现自定义控件(四)
- 手机助手(四):复杂的ListView + 自定义控件
- 自定义View四--搜索框下的建议标签控件
- 自定义控件学习笔记(四)文字的绘制
- 创建String类型的数组,动态初始化数组
- opencv学习笔记(二)—显示图像
- A. Bear and Poker
- 文章标题
- Tsung简易教程-CentOS版
- 自定义控件的四种模式
- JAVA创建TXT,并写入数据
- 自学Java系列 笔记1 java的基本语法2
- 数字对象(NSNumber)常用的方法
- 倒推序列,如b[i]0 1 0(前面有几个数比b[i] 大)推a[i]2 1 3 ,树状数组 SPOJ 227 Ordering the Soldiers
- leetCode4.1.2(Longest Valid Parentheses)
- 五种排序算法
- 初探Makefile
- Spring学习(十)spring mvc入门