`
zhtch_123
  • 浏览: 84669 次
  • 性别: 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;
	}
}
 
分享到:
评论

相关推荐

    Android 自定义View实现水平温度计

    总的来说,这个项目涵盖了Android自定义View的基本流程,以及图形绘制、颜色处理、动态更新等核心知识点,是学习Android自定义组件的一个良好实践。通过学习和研究,开发者不仅可以掌握自定义View的开发技巧,还能...

    Android自定义View实践--圆盘温度计

    本文将深入探讨如何实现一个圆盘温度计的自定义View,这是一个非常直观且富有挑战性的实例,可以帮助开发者更好地理解Android图形绘制机制。 首先,我们需要了解自定义View的基本步骤。创建自定义View通常涉及以下...

    Android自定义View实战---圆盘温度计(1)

    综上所述,创建Android自定义View——圆盘温度计,不仅涉及到图形绘制、事件处理,还涵盖了数据绑定、动画效果、性能优化等多个方面。通过这个实战项目,开发者可以深入理解Android视图系统的底层机制,提升自己的...

    自定义温度计

    标题“自定义温度计”指的是开发者需要创建一个特定的UI组件,模拟真实世界的温度计来显示温度数据。这样的控件不仅能够提供基本的数值显示,还能通过视觉反馈增强用户对温度变化的理解。 在描述中提到“初学者学习...

    Android自定义View值ProgressBar

    我们将通过分析`MyProgressBar`这个自定义组件来学习相关知识。 首先,我们需要了解ProgressBar的基本概念。ProgressBar是Android SDK中的一个控件,用于显示进度状态,通常有两种模式:indeterminate(不确定)和...

    自定义垂直progressbar(类似温度计)

    总的来说,自定义垂直progressbar(类似温度计)涉及了Android自定义View的原理,包括绘图、动画和布局管理,同时也需要对UI设计和用户体验有一定的理解。通过这种方式,开发者可以创造出独特且符合应用风格的UI组件...

    温度计(画笔实现)

    在Android开发中,创建一个自定义的"温度计(画笔实现)"组件是一个常见的需求,这涉及到图形绘制和屏幕适配的知识。我们将探讨如何利用Android的Canvas和Paint类来实现这一功能,以及如何根据屏幕尺寸进行比例适配...

    自定义view集合

    6. 自定义刻度尺:刻度尺视图用于表示数值范围,例如温度计、评分系统等。自定义刻度尺可能涉及到多个TextView(表示刻度值)和一个SeekBar(滑动选择)。开发者需要考虑刻度间距、精度和触摸交互。 7. VIP等级:...

    温度计 风向 指南针 自定义View的高度结合 适用于不同分辨率的手机

    标题提到的“温度计 风向 指南针 自定义View的高度结合”是一种将多个功能集成到一个自定义视图中的设计,适用于各种分辨率的手机。这种设计允许开发者在一个界面中同时展示实时的温度、湿度和风向信息,方便用户...

    自制动态温度计

    这个"自制动态温度计"项目利用了Android的UI组件和动画技术,使得温度计的刻度能够根据温度的变化动态更新,给用户带来直观且生动的体验。 首先,我们要理解进度条(ProgressBar)在Android中的作用。进度条是...

    android圆形View

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建具有独特功能和外观的视图组件。本项目聚焦于一个特定的自定义View:圆形View,它的主要功能是将显示的图片转换为圆形,从而为用户界面...

    温度计控件

    总结一下,"温度计控件"是一个展示Android自定义View和动画效果的实例,它可以帮助开发者学习如何创建具有复杂动画的UI组件。通过分析Thermometer的源码,我们可以了解自定义View的绘制过程、动画实现技巧以及如何...

    安卓Android源码——thermometer_android仪表盘.rar

    这个标题表明,开发者或者学习者可以借此了解如何在Android平台上创建一个模拟温度计功能的应用,可能是用于显示设备温度或者模拟物理温度计的UI界面。 【描述解析】 描述中的 "安卓Android源码——thermometer_...

    android:仪表盘(简单易实现)

    在Android中,我们可以使用自定义View或者现有UI组件如ProgressBar来实现这些元素。 1. **自定义View**: - 创建一个新的Java类继承自`View`或`ViewGroup`。 - 在`onDraw()`方法中利用`Canvas`进行绘图。你可以...

    Android应用源码之thermometer_android仪表盘-IT计算机-毕业设计.zip

    在Android应用开发中,"thermometer_android仪表盘"是一个典型的项目,主要展示了如何构建一个类似于温度计的用户界面,通常用于模拟现实世界的物理仪表,为用户提供直观的数据显示。这个项目对于毕业设计或者论文...

    thermometer_android仪表盘_android源码.zip

    "thermometer_android仪表盘"项目是一个专门针对Android平台的自定义组件,它实现了类似温度计的效果,能够帮助用户直观地查看和理解数据。这个源码库提供了一个定制化的仪表盘视图,可以用于展示各种实时数据,如...

    Android平台下传感器技术开发计步器应用.doc

    步数显示区域可以使用自定义View展示,以便美观且直观地呈现最近7天及今天的步数。控制按钮则用于启动或停止服务、删除数据等操作。 总结起来,开发Android平台下的计步器应用需要掌握传感器API的使用,理解Service...

    thermometer_android仪表盘.rar

    标题中的"thermometer_android仪表盘.rar"表明这是一个与Android平台相关的项目,主要涉及的是一个温度计应用的用户界面设计,特别提到了“仪表盘”部分。在Android开发中,仪表盘通常指的是模拟物理仪表的UI组件,...

    Android应用源码之thermometer_android仪表盘.zip

    在"thermometer_android仪表盘"中,可能使用了LinearLayout、RelativeLayout或ConstraintLayout等布局管理器来组织各个控件,如TextView(显示温度)、ImageView(图标)和ProgressBar(模拟温度计)。 2. **自定义...

Global site tag (gtag.js) - Google Analytics