LED数字时钟我们常见,以前一直以为数字时钟的数字都是通过绘画出来的,最近项目需要用到时,有网上查找学习了。才知道,原来很简单~~先上张图看看效果~~
原理说白了,就是通过两个TextView和一种字体格式就能显示。其中,一个TextView用于显示默认背景模糊数字,另一个TextView当然是显示需要的数值。而显示的数字就要用到字体工具设定字体格式。说再多不如操作实现来的实在。
1。添加字体
1)取得字体digital-7工具包,可以到下面链接下载:
2)把上面的字体添加到项目的 assets/fonts/路径下面
2。自定义LED数字的LEDView
1)先定义LEDView的布局文件:
上面的布局文件led数字显示,第一个TextView的颜色设定为:
android:textColor="#66C0C0C0"
这个八位的颜色要注意,前两位表示透明度,后六位才表示RGB颜色。就是因为设置了透明度所以才有背景数字的效果。
2)实现自定义LEDView类,代码非常简单led数字显示,一看就明白,只是做了简单的封装,不是很好。个人可以根据自己需要封装.
package com.mobisummer.msgps;
import java.io.File;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
public class LEDView extends LinearLayout {
private static final String FONT_DIGITAL_7 = "fonts" + File.separator
+ "digital-7.ttf";
private TextView ledNumber;
private TextView ledBg;
public LEDView(Context context) {
this(context, null);
}
public LEDView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public LEDView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
private void initView(Context context) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.ledview, this);
ledNumber = (TextView) view.findViewById(R.id.ledview_number);
ledBg = (TextView) view.findViewById(R.id.ledview_bg);
AssetManager assets = context.getAssets();
final Typeface font = Typeface.createFromAsset(assets, FONT_DIGITAL_7);
ledNumber.setTypeface(font);// 设置字体样式
ledBg.setTypeface(font);// 设置字体样式
}
/**
* 显示电子数字
* @param size 字体大小
* @param bg 背景数字显示样式,即背景数字
* @param number 需要显示的数字样式
*/
public void setLedView(int size, String bg, String number) {
ledBg.setTextSize(size);
ledNumber.setTextSize(size);
ledBg.setText(bg);
ledNumber.setText(number);
}
}
3。引用上面自定义的LEDView
1)在需要显示的Activity的xml文件中添加LEDView
2)代码中传入相应的参数实现LEDView的显示。
mTime = (LEDView) view.findViewById(R.id.nb_time);
mTime.setLedView(80, getString(R.string.default_bg_time), time);
好了,晚了,睡去~~
文章由启和科技编辑
上一篇:led显示屏字幕设置