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;
}
}
分享到:
相关推荐
使用AndroidStudio 编写,注释详细,可供学习者参考。 自定义View实现水平方向的温度计,设定一个高温,超过这个高温则显示红色,正常时为绿色。文字跟随温度计颜色变化。
Android自定义组件开发详解,让你彻底理解自定义组件(自定义View、ViewGroup等,彻底了解canvas和paint的基本和高级使用方法)
Android自定义组件开发详解,进阶书籍。本书教你如何更好使用自定义view
android自定义View仿QQ计步器 android自定义View仿QQ计步器 android自定义View仿QQ计步器 android自定义View仿QQ计步器
6.6 案例2:验证码组件CodeView 190 6.7 练习作业 202 第七章 自定义容器 204 7.1 概述 204 7.2 ViewGroup类 205 7.2.1 ViewGroup常用方法 205 7.2.2 ViewGroup的工作原理 208 7.2.3 重写onLayout()方法 213 7.3 ...
android开发中回会经常使用自定义组件,这边提供了一个非常基础的自定view动画
1) Android 自定义组件开发详解 2)view 绘图 ,界面等
Android自定义组件之自动换行View
android 自定义view比较综合的例子,涉及到一些复杂的实现效果,有一些基础的人可以参考下。
android自定义View实现SwitchView
Android自定义View实现转盘旋转的效果
android 自定义view及自定义属性
android 自定义View界面大合集
Android自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View...
仿真书籍翻页效果BookPageView简介:实现了仿真翻页效果,教程完整地描述了翻页原理分析到性能优化的过程教程博客:Android自定义View——从零开始实现书籍翻页效果(一) Android自定义View——从零开始实现书籍...
Android中自定义View操作Android中自定义View操作Android中自定义View操作
创建全新的视图将满足我们独特的UI需求。 本文介绍在指南针开发中会用到的罗盘的界面UI,通过继承View类实现的自定义视图,以此来深刻了解自定义视图。
本文利用SrcIn实现一个人脸扫描的效果,步骤如下: 1、准备两个人脸照片(一明一暗),暗照片作为背景,亮照片作为src前景显示 2、然后通过SrcIn用一个透明矩形框(Dst)与亮照片(src)取交集即可得出一个亮照片的...
用自定义View的方式来实现圆形的遥控器菜单。更多关于android自定义的知识可访问:http://blog.sina.com.cn/s/blog_9c4f0e790102vyt3.html
Android自定义View实战---圆盘温度计