失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android 桌面控件-数字时钟的实现

android 桌面控件-数字时钟的实现

时间:2021-01-10 06:39:01

相关推荐

android 桌面控件-数字时钟的实现

接触android已经一个星期了,寻思着做点趣的东西,试一试。所以研究了一下数字时钟,参考了网上很多资料,下面是具体的过程。

桌面空间的实现,我们都知道,首先要继承自AppWidgetProvider类。

(1)public class TimeWidgetProvider extends AppWidgetProvider {

@Override

public void onUpdate(Context context, AppWidgetManager appWidgetManager,

int[] appWidgetIds) {

}

@Override

public void onDeleted(Context context, int[] appWidgetIds) {

}

@Override

public void onEnabled(Context context) {

context.startService(new Intent(context, TimeService.class));

}

@Override

public void onDisabled(Context context) {

context.stopService(new Intent(context, TimeService.class));

}

}

onUpdate方法是在appwidget被创建到桌面,更新时间到了或者widget配置activity返回完成时,框架调用此方法进行更新。

onDeleted方法是appwidget被删除时,调用。

onEnabled方法是appwidget首次被创建时,调用方法。

开启TimeService服务。这个TimeService是自己定义的。

具体代码如下》

(2)TimeService.class

package cn.roco.widget.clock;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import android.app.PendingIntent;import android.app.Service;import android.appwidget.AppWidgetManager;import ponentName;import android.content.Intent;import .Uri;import android.os.IBinder;import android.widget.RemoteViews;public class TimeService extends Service {private int[] digits = new int[] { R.drawable.digit00, R.drawable.digit01,R.drawable.digit02, R.drawable.digit03, R.drawable.digit04,R.drawable.digit05, R.drawable.digit06, R.drawable.digit07,R.drawable.digit08, R.drawable.digit09, };private int[] digitViews = new int[] { R.id.img01, R.id.img02, R.id.img03,R.id.img04, R.id.img06, R.id.img07, R.id.img09, R.id.img10,R.id.img12, R.id.img13, R.id.img15, R.id.img16, R.id.img18,R.id.img19 };private Timer timer;private TimerTask timerTask = new TimerTask() {@Overridepublic void run() {SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String time = sdf.format(new Date());RemoteViews views = new RemoteViews(getPackageName(), R.layout.main);for (int i = 0; i < time.length(); i++) {int num = time.charAt(i) - 48;views.setImageViewResource(digitViews[i], digits[num]);}Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("tel:10086"));PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);views.setOnClickPendingIntent(R.id.digit, pendingIntent);AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext());ComponentName componentName = new ComponentName(getApplicationContext(), TimeWidgetProvider.class);appWidgetManager.updateAppWidget(componentName, views);}};@Overridepublic void onCreate() {super.onCreate();timer = new Timer();timer.schedule(timerTask, 0, 1000);}@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onDestroy() {super.onDestroy();timer.cancel();timer = null;}}

(3)layout/main.xml中定义19个imageview控件

<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:id="@+id/digit" android:layout_width="fill_parent"android:layout_height="fill_parent" android:orientation="horizontal"android:gravity="center"><!-- 定义19个ImageView来显示液晶数字 --><ImageView android:id="@+id/img01" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img02" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img03" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img04" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img05" android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/digity" /><ImageView android:id="@+id/img06" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img07" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img08" android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/digity" /><ImageView android:id="@+id/img09" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img10" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img11" android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/digite" /><ImageView android:id="@+id/img12" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img13" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img14" android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/digit" /><ImageView android:id="@+id/img15" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img16" android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageView android:id="@+id/img17" android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/digit" /><ImageView android:id="@+id/img18" android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/digit" /><ImageView android:id="@+id/img19" android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

(4)res/drawable文件夹添加用于显示时间的数字图片

(5)Manefiest.xml文件进行配置

<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="cn.roco.widget.clock" android:versionCode="1"android:versionName="1.0"><uses-sdk android:minSdkVersion="8" /><application android:icon="@drawable/icon" android:label="@string/app_name"><!-- 指定广播接受者 --><receiver android:name="TimeWidgetProvider"><intent-filter><action android:name="android.appwidget.action.APPWIDGET_UPDATE" /></intent-filter><meta-data android:name="android.appwidget.provider"android:resource="@xml/appwidget_provider" /><!-- 指定provider --></receiver><!-- 指定时钟服务 --><service android:name=".TimeService" /></application><p></manifest></p><p>(6)res/xml/appwidget_provider.xml配置信息</p><p><?xml version="1.0" encoding="utf-8"?><!--指定该桌面组件的基本配置信息:<span style="white-space:pre"></span>minWidth:桌面小控件的最小宽度。<span style="white-space:pre"></span>minWidth:桌面小控件的最小高度。<span style="white-space:pre"></span>updatePeriodMillis:更新频率<span style="white-space:pre"></span>initialLayout:初始时显示的布局--><!--指定该Widget的布局界面为@layout/main--><appwidget-provider xmlns:android="/apk/res/android"android:initialLayout="@layout/main" android:minHeight="30px"android:minWidth="300px"android:updatePeriodMillis="500"/></p>

至此,完成编写。

如果觉得《android 桌面控件-数字时钟的实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。