自定义View继承view
来源:互联网 发布:安装联系人软件 编辑:程序博客网 时间:2024/05/17 09:39
public class CircleProgressView extends View { private int mMeasureHeigth; private int mMeasureWidth; private Paint mCirclePaint; private float mCircleXY; private float mRadius; private Paint mArcPaint; private RectF mArcRectF; private float mSweepAngle; private float mSweepValue = 75;//默认比例是75% private Paint mTextPaint; private String mShowText; private float mShowTextSize; public CircleProgressView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public CircleProgressView(Context context, AttributeSet attrs) { super(context, attrs); } public CircleProgressView(Context context) { super(context); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { mMeasureWidth = MeasureSpec.getSize(widthMeasureSpec); mMeasureHeigth = MeasureSpec.getSize(heightMeasureSpec); setMeasuredDimension(mMeasureWidth, mMeasureHeigth); initView(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);
initView(); // 绘制圆 canvas.drawCircle(mCircleXY, mCircleXY, mRadius, mCirclePaint); // 绘制弧线 canvas.drawArc(mArcRectF, 270, mSweepAngle, false, mArcPaint); // 绘制文字 canvas.drawText(mShowText, 0, mShowText.length(), mCircleXY, mCircleXY + (mShowTextSize / 4), mTextPaint); } private void initView() { float length = 0; if (mMeasureHeigth >= mMeasureWidth) { length = mMeasureWidth; } else { length = mMeasureHeigth; } mCircleXY = length / 2; mRadius = (float) (length * 0.5 / 2); mCirclePaint = new Paint(); mCirclePaint.setAntiAlias(true); mCirclePaint.setColor(getResources().getColor( android.R.color.holo_blue_bright)); mArcRectF = new RectF( (float) (length * 0.1), (float) (length * 0.1), (float) (length * 0.9), (float) (length * 0.9)); mSweepAngle = (mSweepValue / 100f) * 360f; mArcPaint = new Paint(); mArcPaint.setAntiAlias(true); mArcPaint.setColor(getResources().getColor( android.R.color.holo_blue_bright)); mArcPaint.setStrokeWidth((float) (length * 0.1)); mArcPaint.setStyle(Style.STROKE); mShowText = setShowText(); mShowTextSize = setShowTextSize(); mTextPaint = new Paint(); mTextPaint.setTextSize(mShowTextSize); mTextPaint.setTextAlign(Paint.Align.CENTER); } private float setShowTextSize() { this.invalidate(); return 50; } private String setShowText() { this.invalidate(); return "Android Skill"; } public void forceInvalidate() { this.invalidate(); } public void setSweepValue(float sweepValue) { mSweepValue = sweepValue; this.invalidate(); }}
在xml中使用
<com.example.kongjian_1.CircleProgressView android:layout_width="200dp" android:layout_height="200dp" > </com.example.kongjian_1.CircleProgressView>
0 0
- 自定义View继承view
- 自定义View---继承View
- 自定义View,继承View
- 自定义view继承view
- 自定义View-继承系统View
- 自定义view之继承view
- 自定义View之 继承View
- 继承View自定义控件
- 自定义view 之 继承
- 自定义控件-继承View
- 自定义view继承surfaceview
- android自定义View-继承
- 继承View 自定义开关
- 自定义View继承ViewGroup
- 自定义view继承RelativeLayout
- 自定义view继承Button
- 自定义View继承ViewGroup
- Android自定义View(三)继承View
- android app 安装过程
- jQuery-源码阅读,JavaScript原生继承方式与jQuery中的继承
- 指针相减
- C++智能指针简单剖析
- 一款awesome下好看的主题插件
- 自定义View继承view
- JavaScript跨域总结
- tar.xz文件的解压
- 我想当老师
- JSP_006_HttpSession之原理
- 164. Maximum Gap
- 226. Invert Binary Tree
- HDU3507 [斜率优化]
- 杭电oj 1061题AC代码