您的位置:首页 > 移动开发 > Android开发

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

2015-12-07 11:20 537 查看


自定义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);
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android