Android_(自定义view_1之牛刀小试)

如图

自定义view:实现一个简单的进度圆形
下面是实现上图中右上角的”简单版”的圆形加载view

package com.sky.graphics;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

public class CleanArcView extends View{
    private int mSweep=-225;
    private int mStart=275;
    private Paint paint;
    private int mWidth;
    private int mHeigth;
    private    RectF oval;

    public CleanArcView(Context context) {
        this(context,null);
        // TODO Auto-generated constructor stub
    }

    public CleanArcView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();

    }
    public void setmStart(int mStarting) {
        if (mStart==275) {
            mStart=275;
        }
        mStart+=mStarting;
    }

    public int getmStart() {
        return mStart;
    }
    private void init() {
        paint=new Paint();
        paint.setAntiAlias(true);
        paint.setColor(Color.WHITE);
        paint.setStrokeWidth(5);
        paint.setStyle(Style.STROKE);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        mWidth=getWidth()/2;
        mHeigth=getHeight()/2;
        drawStartOrSweep(canvas);

    }
    //  这四个 参数 分别代表的意思是:left   top   right   bottom  上下左右呗。啊,不是 是 左 上 右 下。 下面给大家解释  
    //  left : 矩形左边的X坐标  150        ---->图片中的A点 
    //  top:    矩形顶部的Y坐标   75         ---->图片中的B点 
    //  right :  矩形右边的X坐标   260       ----->图片中的C点 
    //  bottom: 矩形底部的Y坐标 120     ------->图片中的D点 
    //  说白了就是左上角的坐标是(150,75),右下角的坐标是(260,120),这样就好理解了
    private void drawStartOrSweep(Canvas canvas) {
        Log.d("Sky getWidth", ""+canvas.getWidth());
        Log.d("Sky getHeight", ""+canvas.getHeight());
        //240 339 300,399
        oval=new RectF(mWidth, mHeigth, mHeigth+60, mHeigth+60);
        //  canvas.drawRect(oval, paint);
        canvas.drawArc(oval, -225, mStart, false, paint);
        invalidate();
    }



}

调用方法:

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 int max=cl.getmStart();
                 if (max==275) {
                    return ;
                }
                 cl.setmStart(15);
            }
        });
  findViewById(R.id.button2).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                 cl.setmStart(-15);
            }
        });
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值