目录
1、自定义View---onMeasure
2、 自定义View-----onTouchEvent
3、自定义View----onDraw
4、自定义View-----自定义属性
1、自定义View---onMeasure
//获取控件宽高的模式 int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); MeasureSpec.AT_MOST-----wrap_content MeasureSpec.EXACTLY------确切的值,在布局中指定了确切的值,(100dp、match_parent) MeasureSpec.UNSPECIFIED---尽可能的大,未指定模式,当前组件,可以随便用空间,不受限制(ListView,ScrollView) widthMeasureSpec、heightMeasureSpec----32位的值(int是32位),前2位是模式,后30位是尺寸 -------------MeasureSpec.makeMeasureSpec------------- // https://gitee.com/jinnian28_admin/AndroidStudy/blob/master/app/src/main/java/com/jin/study/view/CustomListView.java 最高两位是00的时候表示"未指定模式"。即MeasureSpec.UNSPECIFIED 最高两位是01的时候表示"'精确模式"。即MeasureSpec.EXACTLY 最高两位是10的时候表示"最大模式"。即MeasureSpec.AT_MOST //这个是由我们给出的尺寸大小和模式生成一个包含这两个信息的int变量:size是30位数的尺寸,mode定义heightMode打的模式 public static int makeMeasureSpec(int size, int mode) //这个是得到这个变量中表示的模式信息。 public static int getMode(int measureSpec) //这个是得到这个变量中表示的尺寸大小的值。 public static int getSize(int measureSpec) //把这个变量里面的模式和大小组成字符串返回来,方便打日志 public static String toString(int measureSpec)2、 自定义View-----onTouchEvent
return super.onTouchEvent(event);--交给父类处理 return false;----只调用ACTION_DOWN,ACTION_UP方法,不响应ACTION_MOVE等方法 return true; ----false只响应按下事件,滑动事件不进行响应与监听(view处理);true则全部响应与监听(自己处理)。 具体查看ViewGroup的dispatchTouchEvent的2794行“ while (target != null) ”3、自定义View----onDraw
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //绘制文本 canvas.drawText(); //绘制弧 canvas.drawArc(); //绘制圆 canvas.drawCircle(); }4、自定义View-----自定义属性
declare-styleable--固定// // // 枚举属性只需指定 name,然后用 enum 标签 指定所有可能属性的 name和value(注:value只能为int型) 第一个与第二个构造函数需要使用this 使用方法 private String mText; private int mTextSize = 15; private int mTextColor = Color.BLACK; TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView[自定义的style名称]); mText = array.getString(R.styleable.CustomTextView_customText); mTextColor = array.getColor(R.styleable.CustomTextView_customTextColor,mTextColor); mTextSize = array.getDimensionPixelSize(R.styleable.CustomTextView_customTextSize,mTextSize); //回收 array.recycle();
学习代码-github https://github.com/jinnian-28/AndroidStudyhttps://github.com/jinnian-28/AndroidStudy
giteehttps://gitee.com/jinnian28_admin/AndroidStudyhttps://gitee.com/jinnian28_admin/AndroidStudy (CustomListView 与 CustomTextView)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)