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自定义组件的一个良好实践。通过学习和研究,开发者不仅可以掌握自定义View的开发技巧,还能...
本文将深入探讨如何实现一个圆盘温度计的自定义View,这是一个非常直观且富有挑战性的实例,可以帮助开发者更好地理解Android图形绘制机制。 首先,我们需要了解自定义View的基本步骤。创建自定义View通常涉及以下...
综上所述,创建Android自定义View——圆盘温度计,不仅涉及到图形绘制、事件处理,还涵盖了数据绑定、动画效果、性能优化等多个方面。通过这个实战项目,开发者可以深入理解Android视图系统的底层机制,提升自己的...
标题“自定义温度计”指的是开发者需要创建一个特定的UI组件,模拟真实世界的温度计来显示温度数据。这样的控件不仅能够提供基本的数值显示,还能通过视觉反馈增强用户对温度变化的理解。 在描述中提到“初学者学习...
我们将通过分析`MyProgressBar`这个自定义组件来学习相关知识。 首先,我们需要了解ProgressBar的基本概念。ProgressBar是Android SDK中的一个控件,用于显示进度状态,通常有两种模式:indeterminate(不确定)和...
总的来说,自定义垂直progressbar(类似温度计)涉及了Android自定义View的原理,包括绘图、动画和布局管理,同时也需要对UI设计和用户体验有一定的理解。通过这种方式,开发者可以创造出独特且符合应用风格的UI组件...
在Android开发中,创建一个自定义的"温度计(画笔实现)"组件是一个常见的需求,这涉及到图形绘制和屏幕适配的知识。我们将探讨如何利用Android的Canvas和Paint类来实现这一功能,以及如何根据屏幕尺寸进行比例适配...
6. 自定义刻度尺:刻度尺视图用于表示数值范围,例如温度计、评分系统等。自定义刻度尺可能涉及到多个TextView(表示刻度值)和一个SeekBar(滑动选择)。开发者需要考虑刻度间距、精度和触摸交互。 7. VIP等级:...
标题提到的“温度计 风向 指南针 自定义View的高度结合”是一种将多个功能集成到一个自定义视图中的设计,适用于各种分辨率的手机。这种设计允许开发者在一个界面中同时展示实时的温度、湿度和风向信息,方便用户...
这个"自制动态温度计"项目利用了Android的UI组件和动画技术,使得温度计的刻度能够根据温度的变化动态更新,给用户带来直观且生动的体验。 首先,我们要理解进度条(ProgressBar)在Android中的作用。进度条是...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建具有独特功能和外观的视图组件。本项目聚焦于一个特定的自定义View:圆形View,它的主要功能是将显示的图片转换为圆形,从而为用户界面...
总结一下,"温度计控件"是一个展示Android自定义View和动画效果的实例,它可以帮助开发者学习如何创建具有复杂动画的UI组件。通过分析Thermometer的源码,我们可以了解自定义View的绘制过程、动画实现技巧以及如何...
这个标题表明,开发者或者学习者可以借此了解如何在Android平台上创建一个模拟温度计功能的应用,可能是用于显示设备温度或者模拟物理温度计的UI界面。 【描述解析】 描述中的 "安卓Android源码——thermometer_...
在Android中,我们可以使用自定义View或者现有UI组件如ProgressBar来实现这些元素。 1. **自定义View**: - 创建一个新的Java类继承自`View`或`ViewGroup`。 - 在`onDraw()`方法中利用`Canvas`进行绘图。你可以...
在Android应用开发中,"thermometer_android仪表盘"是一个典型的项目,主要展示了如何构建一个类似于温度计的用户界面,通常用于模拟现实世界的物理仪表,为用户提供直观的数据显示。这个项目对于毕业设计或者论文...
"thermometer_android仪表盘"项目是一个专门针对Android平台的自定义组件,它实现了类似温度计的效果,能够帮助用户直观地查看和理解数据。这个源码库提供了一个定制化的仪表盘视图,可以用于展示各种实时数据,如...
步数显示区域可以使用自定义View展示,以便美观且直观地呈现最近7天及今天的步数。控制按钮则用于启动或停止服务、删除数据等操作。 总结起来,开发Android平台下的计步器应用需要掌握传感器API的使用,理解Service...
标题中的"thermometer_android仪表盘.rar"表明这是一个与Android平台相关的项目,主要涉及的是一个温度计应用的用户界面设计,特别提到了“仪表盘”部分。在Android开发中,仪表盘通常指的是模拟物理仪表的UI组件,...
在"thermometer_android仪表盘"中,可能使用了LinearLayout、RelativeLayout或ConstraintLayout等布局管理器来组织各个控件,如TextView(显示温度)、ImageView(图标)和ProgressBar(模拟温度计)。 2. **自定义...