-
繪制直線解析
canvas.drawLine(sx,xy,ex,ey,paint);
查看全部 -
保存canvas.save();的轉(zhuǎn)態(tài),canvas.translate(x, y);移動(dòng)canvas的位置;
進(jìn)行繪制;
繪制完畢后,恢復(fù)cavans的狀態(tài),調(diào)用canvas.restore();
查看全部 -
之后在onDraw(Canvas canvas);方法中實(shí)現(xiàn)自己的繪制邏輯
查看全部 -
setMeasureDimension(w,h);設(shè)置完寬和高后就可以使用
mRealWidth = getMeasureWidth() - getPaddingLeft() - getPaddingRight();
得到可用于繪制控件的可用真實(shí)的寬;
查看全部 -
計(jì)算好寬度和高度后,必須調(diào)用setMeasureDimension(w,h);應(yīng)用計(jì)算的結(jié)果
查看全部 -
進(jìn)度條的寬度值必須用戶給定一個(gè)值或者使用matchParent
查看全部 -
對(duì)于模式為MeasureSpec.AT_MOST時(shí),自己測(cè)量的高度(或?qū)挾?不能超過給定的值(即MeasureSpec.getSize(measureHeight)的值)
對(duì)于MeasureSpec.UNSPECIFIED,則就使用計(jì)算的結(jié)果即可
查看全部 -
設(shè)置高度是必須添加PaddingTop 和PaddingBottom
結(jié)果 = getPaddingTop() + getPaddingBottom() + 最大繪制高度;
最大繪制高度=Math.max(Math.max(mReachHeight, mUnReachHeight), Math.abs(textHeight));
查看全部 -
文字高度的計(jì)算textHeight = (int) (mPaint.descent() - mPaint.ascent());
//前提是mPaint.setTextSize(mTextSize);已經(jīng)設(shè)置過了
查看全部 -
當(dāng)計(jì)算的到的模式為UNSPECIFIED或AT_MOST時(shí),則高度的結(jié)果只需要自己進(jìn)行測(cè)量
查看全部 -
根據(jù)模式不同計(jì)算測(cè)量高度值、
當(dāng)模式為MeasureSpec.EXACTLY (-> 精確的或使用matchParent)時(shí),則結(jié)果就是測(cè)量的結(jié)果
查看全部 -
在View的onMeasure(int w,int h);方法中獲取寬度和高度的寬度模式和寬度值,高度模式和高度值
查看全部 -
獲取自定義屬性的值
查看全部 -
獲取自定義的屬性通過getContext().obtainStyleAttributes(atts,
R.styleable.HorizontalProgressbarWithProgress);
//R.styleable.HorizontalProgressbarWithProgress為自定義的屬性集名稱
得到TypeArray 對(duì)象,并在用完TypeArray對(duì)象后及時(shí)釋放資源,即調(diào)用TypeArray的recycle()方法
查看全部 -
控件的寬度-padding的寬度=真正可用于繪制的寬度
查看全部
舉報(bào)