设为首页 加入收藏

TOP

android-自定义控件之液位指示器(一)
2017-10-12 17:57:17 】 浏览:8754
Tags:android- 定义 控件 液位 指示器

  由于安卓应用很广泛,在工业中也常有一些应用,比如可以用安卓来去工业中的一些数据进行实现的监测,显示,同时可以做一些自动化控制,当然在这里,我不是做这些自动化控制方面的研究,只是做一个控件,液位指示,其实就是继承自progressbar,然后重新写一测量与绘制,算是对自定义控件进行一下复习。

  我们要做的最终就是下面这个效果:

在这里,我们要做到对这个指示器的以下属性可设置:

容器壁的厚度、容器壁的颜色、容器中液体的宽度、液体总高度、液体当前高度的颜色显示、液体未达到颜色显示、当前高度的文字指示、指示文字大小的显示。

对以上属性的可以设置,会使在实现应用中让显示更加直观人性化。下面就开始我们的指示器的制作。

1.先在项目的res目录下建一个resouce文件,用来定义自定义的属性,这些都会在下面给出的源码中给出,新人可以参考下,老家伙你就绕道吧^^:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3 
 4     <declare-styleable name="JianWWIndicateProgress">
 5         <attr name="progress_height" format="dimension" />
 6         <attr name="progress_width" format="dimension" />
 7         <attr name="progress_unreachedcolor" format="color" />
 8         <attr name="progress_reached_color" format="color" />
 9         <attr name="progress_reached_height" format="integer" />
10         <attr name="progress_cheek_width" format="dimension" />
11         <attr name="progress_cheek_color" format="color" />
12         <attr name="progress_reached_textsize" format="dimension" />
13         <attr name="progress_reached_textcolor" format="color" />
14     </declare-styleable>
15 
16 </resources>

2.继承progressbar,这里继承他主要是为了能够用progressbar的getProgress()方法得到当前的progress,与setProgress()方法等progress中提供的一些方法,便于对数据的一些处理。

package com.jianww.firstview;

import com.example.jwwcallback.R;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.ProgressBar;

/**
 * 作者:jww 邮箱:bluejww@163.com 时间:2016年3月8日
 */
public class JianWWIndicateProgress extends ProgressBar {

	
	private static final int unreached_color = 0Xaa0000ff;// 未到达的颜色
	private static final int reached_color = 0Xaaff0000;// 到达颜色
	private static final int progress_height = 150;// 容器中液位的默认高度
	private static final int progress_width = 100;// 容器中液位的宽度
	private static final int reached_height = 60;// 默认到达到达的高度
	private static final int progress_cheek_width = 2;// 容器的边框宽度
	private static final int progress_cheek_color = 0x660000ff;// 容器的边框颜色
	private static final int progress_reached_textsize = 10;// 指示字体尺寸
	private static final int progress_reached_textcolor = 0Xff00ff00;// 指示字体颜色

	protected int unReachedColor;// 未到达的颜色
	protected int reachedColor;// 到达颜色
	protected int progressHeight;// 容器中液位的总高度
	protected int progressWidth;// 容器中液面的宽度
	protected int reachedHeight;// 默认液位到达的到达的高度
	protected int cheekWidth;// 容器的边框宽度
	protected int cheekColor;// 容器的边框颜色
	protected int reachedTextsize;// 指示字体尺寸
	protected int reachedTextcolor;// 指示字体颜色
	
	
	protected float widthZoom;
	protected float heightZoom;

	/**
	 * dp 2 px
	 *
	 */
	protected int dp2px(int dpVal) {
		return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DI
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android Material Design 下一篇春秋旅行安卓客户端源码项目

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目