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

Android自定义组件view 温度计

2013-02-27 15:21 351 查看
package com.wlx.iblueyeclient.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;

public class TemperatureView extends SurfaceView implements Callback {

public TemperatureView(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
}

private String temp = "100";
private Paint mPaint = new Paint();
private Paint paintCircle = new Paint();
private Paint paintLine = new Paint();
private Paint paintCircle2 = new Paint();
private Paint background = new Paint();

private static int topPading = 200;
private static int leftPading = 100;
// private static int rightPading = 10;
// private static int bottomPading = 10;
private static int xdegree = 60;
private static int ydegree = 200;

private int temMax = 100;
private int temMin = 0;

@Override
protected void drawableStateChanged() {

super.drawableStateChanged();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float tem1 = Float.parseFloat(temp);

/** 画温度计的主体及背景色 **/
background.setColor(Color.rgb(20, 255, 255));
canvas.drawCircle(leftPading + 50, topPading - 20 + 18, 20, background);
canvas.drawRect(leftPading + 30, topPading, leftPading + 70, ydegree
+ topPading, background);

canvas.drawCircle(leftPading + 50, ydegree + 18 + topPading, 30,
background);
/* 20,248,255 */
/** 画温度计的水银及背景色 **/
/* 设置温度计的主体的颜色 */
mPaint.setColor(Color.rgb(231, 245, 255));
paintCircle2.setColor(Color.GREEN);
/* 画温度计的主体 */
canvas.drawRect(leftPading + 40, topPading, leftPading + 60, ydegree
+ topPading, paintCircle2);
canvas.drawCircle(leftPading + 50, topPading, 10, paintCircle2);

/* 设置温度计的度数刻度点的颜色 */
paintLine.setColor(Color.rgb(0, 0, 255));

/* 设置温度计的球体的颜色 */
paintCircle.setColor(Color.rgb(255, 0, 0));
canvas.drawCircle(leftPading + 50, topPading + ydegree - (tem1 * 2),
10, paintCircle);
canvas.drawRect(leftPading + 40, topPading + ydegree - (tem1 * 2),
leftPading + 60, ydegree + topPading, paintCircle);
canvas.drawCircle(leftPading + 50, ydegree + 18 + topPading, 20,
paintCircle);

while (ydegree > -1) {
/* 画温度计的最小刻度 */
canvas.drawLine(leftPading + xdegree, ydegree + topPading,
leftPading + xdegree + 5, ydegree + topPading, mPaint);
if (ydegree % 20 == 0) {
canvas.drawLine(leftPading + xdegree, ydegree + topPading,
leftPading + xdegree + 10, ydegree + topPading,
paintLine);
canvas.drawText(temMin + "", leftPading + 70, ydegree
+ topPading, mPaint);
temMin += 10;
}
ydegree -= 4;
}

}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {

}

@Override
public void surfaceCreated(SurfaceHolder holder) {

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

}

public int getTemMax() {
return temMax;
}

public void setTemMax(int temMax) {
this.temMax = temMax;
}

public int getTemMin() {
return temMin;
}

public void setTemMin(int temMin) {
this.temMin = temMin;
}

public String getTemp() {
return temp;
}

public void setTemp(String temp) {
this.temp = temp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: