Android模拟汽车仪表盘

本文介绍了如何在Android平台上利用Canvas和ImageView等组件,实现一个汽车仪表盘的模拟效果,包括详细的代码实现和最终展示的效果图。
摘要由CSDN通过智能技术生成

实现效果图如下所示:


主要代码如下:

/**
 * 自定义一个View继承ImageView,增加一个通用的旋转图片资源的方法
 * @author Johnny
 * 
 */
public class CompassView extends ImageView {
	private float mDirection;// 方向旋转浮点数
	private Drawable compass;// 图片资源
	
	//三个构造器
	public CompassView(Context context) {
		super(context);
		mDirection = 0.0f;// 默认不旋转
		compass = null;
	}

	public CompassView(Context context, AttributeSet attrs) {
		super(context, attrs);
		mDirection = 0.0f;
		compass = null;
	}

	public CompassView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		mDirection = 0.0f;
		compass = null;
	}

	@Override
	protected void onDraw(Canvas canvas) {
		if (compass == null) {
			compass = getDrawable();// 获取当前view的图片资源
			compass.setBounds(0, 0, getWidth(), getHeight());// 图片资源在view的位置,此处相当于充满view
		}

		canvas.save();
		canvas.rotate(mDirection, getWidth() / 2, getHeight() / 2);// 绕图片中心点旋转,
		compass.draw(canvas);// 把旋转后的图片画在view上,即保持旋转后的样子
		canvas.restore();// 保存一下
	}

	/**
	 * 自定义更新方向的方法
	 * 
	 * @param direction
	 *            传入的方向
	 */
	public void updateDirection(float direction) {
		mDirection = direction;
		postInvalidate();// 重新刷新一下,更新方向
	}
}

/**
 * @author Johnny
 * 自定义进度视图类
 */
public class RoundProgressBar extends View {
	/**
	 * 画笔对象的引用
	 */
	private Paint paint;
	
	Shader mRadialGradient = null;
	/**
	 * 圆环的颜色
	 */
	private int roundColor;
	/**
	 * 圆环进度的颜色
	 */
	private int roundProgressColor;
	/**
	 * 中间进度百分比的字符串的颜色
	 */
	private int textColor;
	/**
	 * 中间进度百分比的字符串的字体
	 */
	private float textSize;
	/**
	 * 圆环的宽度
	 */
	private float roundWidth;
	/**
	 * 最大进度
	 */
	private int max;
	/
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值