Android自定义View例子_安卓LED数字时钟效果Demo
程序员文章站
2022-03-01 16:08:32
...
介绍
相信大家对 LED 都不陌生吧、一般在街上都会看到很多做广告的
都是使用 LED 来做的、非常普遍、随处都可以看到这种东西
那么在 Android 系统里面怎么实现 LED 的效果呢
那么本文就为大家讲解一下怎么通过 Android 系统来实现 LED 的效果
源代码
1、Androic 系统本生是没有提供该功能的、所以我们得自定义 View 来实现
定义两个 TextView 一个做 背景的 88:88:88 一个做当前时间
代码如下
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id ="@+id/ledview_clock_time" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_centerInParent="true" android:shadowColor ="#00ff00" android:shadowDx ="0" android:shadowDy ="0" android:shadowRadius ="10" android:textColor ="#00ff00" android:textSize ="80sp" /> <TextView android:id ="@+id/ledview_clock_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" android:text="@string/default_time" android:textColor="#3300ff00" android:textSize="80sp" /> </RelativeLayout>
2、通过Java代码每秒钟去更新一下显示的时间
代码如下
package ione.zy.demo; import java.io.File; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.AssetManager; import android.graphics.Typeface; import android.os.Handler; 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 TextView timeView; private TextView bgView; private static final String FONT_DIGITAL_7 = "fonts" + File.separator + "digital-7.ttf"; private static final String DATE_FORMAT = "%02d:%02d:%02d"; private static final int REFRESH_DELAY = 500; private final Handler mHandler = new Handler(); private final Runnable mTimeRefresher = new Runnable() { @Override public void run() { Calendar calendar = Calendar.getInstance(TimeZone .getTimeZone("GMT+8")); final Date d = new Date(); calendar.setTime(d); timeView.setText(String.format(DATE_FORMAT, calendar.get(Calendar.HOUR), calendar .get(Calendar.MINUTE), calendar.get(Calendar.SECOND))); mHandler.postDelayed(this, REFRESH_DELAY); } }; @SuppressLint("NewApi") public LEDView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); } public LEDView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public LEDView(Context context) { super(context); init(context); } private void init(Context context) { LayoutInflater layoutInflater = LayoutInflater .from(context); View view = layoutInflater.inflate(R.layout .ledview, this); timeView = (TextView) view.findViewById(R.id .ledview_clock_time); bgView = (TextView) view.findViewById(R.id .ledview_clock_bg); AssetManager assets = context.getAssets(); final Typeface font = Typeface .createFromAsset(assets, FONT_DIGITAL_7); timeView.setTypeface(font);// 设置字体 bgView.setTypeface(font);// 设置字体 } public void start() { mHandler.post(mTimeRefresher); } public void stop() { mHandler.removeCallbacks(mTimeRefresher); } }3、这样一个 LED 的数字时钟的自定义 View 就写好了、那么下面不是在 Activity 里面调用了
我就不做过多的讲解了、大家可以源代码中直接下载 Demo
源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1c0y849a 密码: nj16