`
zhtch_123
  • 浏览: 80697 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Android自定义组件view 温度计

 
阅读更多

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;
	}
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics