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; } }
相关文章推荐
- Android自定义组件View
- android自定义本地邮箱联想组件(基于MultiAutoCompleteTextView)
- Android自定义组件系列【10】——随ViewPager滑动的导航条
- Android开发中自定义View设定到FrameLayout布局中实现多组件显示
- 从0到1Android自定义View(三)画图的五个元素组件
- android自定义view--温度计
- Android-通过自定义View组件实现跟随手指移动的ImageView组件
- 【Android】利用自定义View的重绘实现拖动移动,获取组件的尺寸
- Android进阶学习-复合组件自定义View(1)
- (转)自定义Android组件之带图像的TextView
- Android自定义组件系列【10】——随ViewPager滑动的导航条
- 自定义Android组件之带图像的TextView
- React-Native系列Android——自定义View组件开发
- Android自定义View设定到FrameLayout布局中实现多组件显示
- Android 自定义view组件
- android自定义view组件circleprogress阅读笔记
- Android TextView 自定义组件 FontAwesome
- Android自定义View实战---圆盘温度计
- android 自定义组件-带图片的textView
- Android UI开源组件库BottomView ,第三方自定义UI控件